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 :

Sélection multiples de cellules avec des variables


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 124
    Points : 67
    Points
    67
    Par défaut Sélection multiples de cellules avec des variables
    Bonjour,

    Pour effectuer une sélection multiple, on peut utiliser la macro suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Selection
     
    Range("E378,F382,E388").Select
     
    End Sub
    Je cherche maintenant à savoir comment faire pour intégrer des variables dans ma macro. La macro suivante ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Selection
     
    Dim a As Long, b As Long, c As Long
     
    a = 378
    b = 382
    c = 388
     
    Range("E" & a, "F" & b, "E" & c).Select
     
    End Sub
    Qqn peut-il me venir en aide? Merci d'avance. John81

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut John81 et le forum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub Selection
    Dim a As Long, b As Long, c As Long
    a = 378
    b = 382
    c = 388
    Range("E" & a & ", F" & b & ", E" & c).Select
    End Sub
    A+

  3. #3
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 124
    Points : 67
    Points
    67
    Par défaut
    Merci bcp pour ton aide Gorfael! Bonne journée John81

  4. #4
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 124
    Points : 67
    Points
    67
    Par défaut
    Rebonjour,

    La macro suivante fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Sommes()
     
    a = Range("A2").End(xlDown).Row         ' n° ligne 1
    b = a - 1
    Set c = Range(Cells(3, 2), Cells(b, 2))
     
    Range("D" & a).Select
    ActiveCell.Formula = "=SUM(" & c.AddressLocal & " )"
     
    End Sub
    Celle-ci ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub TESTSOMME()
    
    a = Range("A2").End(xlDown).Row         ' n° ligne 1
    d = Range("A" & a).End(xlDown).Row      ' n° ligne 2
    g = Range("A" & d).End(xlDown).Row      ' n° ligne 3
    j = Range("A" & g).End(xlDown).Row      ' n° ligne 4
    m = Range("A" & j).End(xlDown).Row      ' n° ligne 5
    p = Range("A" & m).End(xlDown).Row      ' n° ligne 6
    s = Range("A" & p).End(xlDown).Row      ' n° ligne 7
    v = Range("A" & s).End(xlDown).Row      ' n° ligne 8
    y = Range("A" & v).End(xlDown).Row      ' n° ligne 9
    bb = Range("A" & y).End(xlDown).Row     ' n° ligne 10
    
    Set total = Range("B" & a & ", B" & d & ", B" & g & ", B" & j & ", B" & m & ", B" & p & ", B" & s & ", B" & v & ", B" & y)
    
    Range("B" & bb).Select
    ActiveCell.Formula = "=SUM(" & total.AddressLocal & " )"
    
    End Sub
    C'est au niveau de la ligne rouge que se situe le problème. Qqn peut-il m'éclairer? Merci John81

  5. #5
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    bonjour,


    rajoute un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    msgbox total.AddressLocal
    avant la ligne en rouge .. pour voir ...

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut à tous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub TESTSOMME()
    
    a = Range("A2").End(xlDown).Row ' n° ligne 1
    d = Range("A" & a+2).End(xlDown).Row ' n° ligne 2
    g = Range("A" & d+2).End(xlDown).Row ' n° ligne 3
    j = Range("A" & g+2).End(xlDown).Row ' n° ligne 4
    m = Range("A" & j+2).End(xlDown).Row ' n° ligne 5
    p = Range("A" & m+2).End(xlDown).Row ' n° ligne 6
    s = Range("A" & p+2).End(xlDown).Row ' n° ligne 7
    v = Range("A" & s+2).End(xlDown).Row ' n° ligne 8
    y = Range("A" & v+2).End(xlDown).Row ' n° ligne 9
    bb = Range("A" & y+2).End(xlDown).Row ' n° ligne 10
    
    Total = Range("B" & a & ", B" & d & ", B" & g & ", B" & j & ", B" & m & ", B" & p & ", B" & s & ", B" & v & ", B" & y)
    
    Range("B" & bb).Formulalocal = "=Somme(" & total.Address & " )"
    
    End Sub
    En gos, tu fait la somme des cellules avant une ligne vide ?
    Si c'est ça, il faut donc que tu passes à la ligne+2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a = Range("A2").End(xlDown).Row  => a=5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d = Range("A" & a).End(xlDown).Row
    revient à écire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d = Range("A5").End(xlDown).Row => d=6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g = Range("A" & d+2).End(xlDown).Row
    => g=valeur qui devrait être attribuée à d
    Donc, il faut sauter la ligne vide => ça explique le "+2", mais... si tu as une seule ligne entre 2 lignes vides, ça bloque

    Le calcul de bb me semble étrange : c'est la dernière ligne, donc, pas de somme des valeurs entre y et bb ?

    Tu fais les sommes sur B => pourquoi ne pas tester sur B ? ou faire une formule qui n'inscrit en B que la somme des baleur entre les lignes vides ?
    A+

  7. #7
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 124
    Points : 67
    Points
    67
    Par défaut
    Merci pour vos réponses à tous les deux.

    Si je remplace la ligne rouge par l'une ou l'autre des deux lignes ci-dessous, ça marche:

    1) Range("B" & bb).FormulaLocal = "=SOMME(" & total.AddressLocal & " )"
    2) Range("B" & bb).Formula = "=SUM(" & total.Address & " )"

    En fait cette macro a pour but de faire le total de tous les sous-totaux d'un tableau (qui eux-mêmes sont déjà des formules de sommes).

    J'utilise la colonne A pour déterminer les numéros de lignes des sous-totaux pour la raison suivante:

    J'ai masqué la ligne A et à chaque sous-totaux, j'y ai inscrit un numéro. Je recherche donc chaque ligne de la colonne A qui ne sont pas vides.

    Peut-être avez-vous une meilleure idée! Il faut savoir que les sous-totaux n'additionnent pas toujours le même nombre de lignes (fichier variable).

    Merci de votre aide et de vos idées. John81

  8. #8
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    peu-être sans macro avec seulement une formule somme.si ...

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut John81 et le forum
    Ta colonne B contient-elle d'autre formules que les sous-totaux ?
    les sous-totaux sont-ils en "=SOMME()", "=SUM()" ou "=SOUS.TOTAL()" ?
    A+

  10. #10
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 124
    Points : 67
    Points
    67
    Par défaut
    Salut Gorfael,

    Ma colonne B ne contient pas d'autres formules. Mes sous-totaux sont en "=SOMME()".

    La macro suivantes me permet d'additionner uniquement les cellules contenant des formules dans la colonne B:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub SommesFormules()
     
    a = Range("A65536").End(xlUp).Row
    b = a - 1
     
    Range("B3", "B" & b).Select
     
    Set CellulesFormule = Selection.SpecialCells _
    (xlFormulas, xlNumbers)
     
    Range("B" & a).Select
     
    Range("B" & a).Formula = "=SUM(" & CellulesFormule.Address & " ) "
     
    En Sub
    Bonne soirée et @+ John81

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut John81 et le forum
    En supprimant les Select/Selection (complêtement inutiles), ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub SommesFormules()
    Dim a as long
    Dim CellulesFormule as range
     
    a=[A65536].End(xlUp).Row
    Set CellulesFormule = Range("B3", "B" & a-1).SpecialCells _
    (xlFormulas, xlNumbers)
     
    Range("B" & a).Formula = "=SUM(" & CellulesFormule.Address & " ) "
    En Sub
    Pas sûr que j'aurais pensé à specialcells pour ce coup. Comme quoi...
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. sélection d'une cellule avec des "noms"
    Par mauriceguillier dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 28/10/2010, 00h10
  2. Réponses: 2
    Dernier message: 13/02/2007, 17h40
  3. Remplir les cellules Excel avec des variables VB
    Par rupeni dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/11/2005, 09h31
  4. paramétrer ADOConnection avec des variables
    Par ouckileou dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/04/2004, 08h11
  5. UPDATE avec des variables Delphi ...
    Par Kokito dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/03/2004, 22h35

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