IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Effectuer la fonction SOMME en ayant récupérer les 2 adresses extrêmes


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Employé administratif
    Inscrit en
    Février 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé administratif

    Informations forums :
    Inscription : Février 2014
    Messages : 77
    Points : 28
    Points
    28
    Par défaut Effectuer la fonction SOMME en ayant récupérer les 2 adresses extrêmes
    Bonjour,
    En récupérant les 2 adresses extrêmes, je souhaiterais utiliser la fonction SOMME (dans excel, ça correspond à SOMME(I5:I50))
    J'ai besoin de récupérer les adresses car, il y a des cellules vides.

    Mais ça ne fonctionne pas. Dans l'exemple ci-dessous, il m'indique
    =SOMME(a:b)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub macro()
    Range("A:A").Find("706").Select
    ActiveCell.Offset(1,2).Select
    a = Selection.Address
    Selection.End(xlDown).Select
    b = Selection.Effectuer la fonction SOMME en ayant récupérer les 2 adresses extrêmes
    ActiveCell.FormulaR1C1 = "=SUM(a:b)"
    End Sub
    Vous en remerciant par avance.

    Cordialement.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Il faut sortir les variables des guillemets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=SUM(" & a & ":" & b &")"
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonsoir le fil, bonsoir le forum,

    La même chose sans les Select qui ne font que ralentir l'exécution du code et avec une gestion d'erreur (si 706 n'existe pas en colonne A) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub macro()
    Dim D As Range 'déclare la variable D (Début)
    Dim F As Range 'déclare la variable F (Début)
     
    On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
    Set D = Range("A:A").Find("706").Offset(1, 2) 'définit la cellule du début D (génère une erreur si "706" n'existe pas)
    If Err <> 0 Then 'condition : si une erreur a été générée
        Err.Clear 'efface l'erreur
        MsgBox "706 n'existe pas dans la colonne A !" 'message
        Exit Sub 'sort de la procédure
    End If 'fin de la condition
    Set F = D.End(xlDown) 'définit la cellule de fin F
    F.Offset(1, 0).Formula = "=SUM(" & D.Address(0, 0) & ":" & F.Address(0, 0) & ")" 'place la formule en dessous de la cellule de fin F
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Pour être tout à fait précis, il ne faut pas oublier de rétablir :

    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Bonjour
    votre code ne renverra jamais somme(i5:i50)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub macro()
    Range("A:A").Find("706").Select 'donc A5
    ActiveCell.Offset(1, 2).Select 'donc C6
    a = Selection.Address 'donc $C$6
    Selection.End(xlDown).Select 'donc C50
    b = Selection.Address 'donc $C$50
    ActiveCell.FormulaR1C1 = "=SUM(a:b)" 'donc au mieux somme(c6:c50)
    End Sub
    La ligne 7 est à remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activecell.FormulaLocal = "=SOMME(" & a & ":" & b & ")"
    qui au passage supprime la valeur se trouvant en C50.
    Quid de I5:I50

    Thautheme : le resultat se trouve decaler d'une ligne lors de la prochaine execution du code

  6. #6
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    Citation Envoyé par keygen08 Voir le message
    Thautheme : le resultat se trouve decaler d'une ligne lors de la prochaine execution du code
    Oui en effet Keygen, mais je pensais que c'est ce que voulais Bfawesvshf... J'ai même été surpris de l'absence de références circulaires...
    À plus,

    Thauthème

    Je suis Charlie

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Employé administratif
    Inscrit en
    Février 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé administratif

    Informations forums :
    Inscription : Février 2014
    Messages : 77
    Points : 28
    Points
    28
    Par défaut Effectuer la fonction SOMME en ayant récupérer les 2 adresses extrêmes
    Bonjour,
    En récupérant les 2 adresses extrêmes, je souhaiterais utiliser la fonction SOMME (dans excel, ça correspond à SOMME(I4:I20))
    J'ai besoin de récupérer les adresses car, il y a des cellules vides

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub somme()
    Range("I4").Select
    a = Selection.Address
    Range("I20").Select
    b = Selection.Address
    ActiveCell.Offset(1,0).Select
    ActiveCell.FormulaR1C1 = "=SUM(" & a & ":" & b & ")"
    End Sub
    Mais ça ne fonctionne pas.
    Débogage sur la dernière ligne, erreur d'exécution 1004

    Vous en remerciant par avance.

    Cordialement.

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour, bonjour !

    Pourquoi avec FormulaR1C1 alors qu'il n'y a rien de R1C1 dans la formule ?‼ (OK avec Formula …)
    Et pourquoi ne pas avoir essayé la formule du post #5 ?‼

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Bonjour
    La ligne 7 est à replacé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activecell.FormulaLocal = "=SOMME(" & a & ":" & b & ")"
    mais je me repete.

Discussions similaires

  1. Une fonction ou sub pour récupérer les coordonnées d'une cellule
    Par Nymar dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 24/09/2014, 15h02
  2. Réponses: 10
    Dernier message: 10/02/2010, 08h49
  3. Récupérer les fonctions avec cloneNode ?
    Par Alexino2 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/02/2007, 19h09
  4. Réponses: 11
    Dernier message: 06/09/2006, 12h48
  5. [PHP 4.4.2] Récupérer les paramètres d'une fonction
    Par stailer dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 21h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo