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 :

Somme de plusieurs cellules de plusieurs feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 67
    Points : 52
    Points
    52
    Par défaut Somme de plusieurs cellules de plusieurs feuilles
    Bonjour,

    J'ai un problème avec la boucle suivante ::

    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
    20
    21
    22
    23
    With Worksheets("Etat - Total")
     
        For x = 4 To 9
     
                For z = 9 To 14
     
                CumulB = Sheets(x).Range("B" & z).Value
                CumulE = Sheets(x).Range("E" & z).Value
                CumulH = Sheets(x).Range("H" & z).Value
                CumulK = Sheets(x).Range("K" & z).Value
                CumulN = Sheets(x).Range("N" & z).Value
                CumulQ = Sheets(x).Range("Q" & z).Value
     
                Range("B" & z) = Range("B" & z) + CumulB
                Range("C" & z) = Range("E" & z) + CumulE
                Range("D" & z) = Range("H" & z) + CumulH
                Range("E" & z) = Range("K" & z) + CumulK
                Range("F" & y) = Range("N" & y) + CumulN
                Range("G" & y) = Range("Q" & y) + CumulQ
     
                Next z
        Next x
    End With
    x représente les feuilles présentes dans le classeur
    z représente les cellules concernés

    En effet la boucle doit additionnrt toutes les cellules des feuilles et donner le résultat dans la feuille Total
    Exemple:

    A1 FeilleTotal = A1Feuil1 + A1Feuil2 + A1Feuil3 etc ...

    Je voulais savoir si la boucle utilisé les id des feuilles ou le numéro de leur position dans le classeur ?

    Et si vous trouvais une anomalie la dedans ? Merci de votre aide

    Cordialement,

    Dylan

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Peut être tu as l'outil consolider d'Excel (Piste à voir en fonction de la disposition de tes données)


    Sinon, un petit code qui cumul pour chaque plage, les données de la 4ème à la 9ème feuille

    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 Cumuls()
    Dim Plge As String
    Dim k As Byte
     
    Plge = "" & Worksheets(4).Name & ":" & Worksheets(9).Name & "!"
    With Worksheets("Etat - Total")
        For k = 0 To 15 Step 3
            With .Range("B9:B14").Offset(, k)
                .Formula = "=SUM(" & Plge & .Cells(1, 1).Address(0) & ")"
                .Value = .Value
            End With
        Next k
    End With
    End Sub

  3. #3
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    vu le peu de précisions données au contexte , ben les contributeurs répondent au pif

    Vois du côté de la méthode FillAcrossSheets équivalente des références 3D des feuilles :
    https://support.office.com/fr-fr/art...rs=fr-FR&ad=FR

    cordialement,

    Didier

  4. #4
    Membre éclairé Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Points : 758
    Points
    758
    Par défaut
    Bonjour,

    Tel que tu l'écris, la boucle utilise la position des feuilles dans ton classeur. Si tu veux parcourir des feuilles, tu peux aussi utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim sh as worksheet
    For each sh in ThisWorkbook.worksheets
     
    'Do some stuff
     
    Next sh
    Ensuite, dans ton code, à quoi sert le With sheets("blablabla") ? A aucun moment tu n'y fait référence dans ton code.

    Et puis si tu fais des "range" sans "." devant, ces Range vont se paramétrer sur la feuille active, qui n'est pas forcément celle de ton With.

    Tu devrais écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'La tu fais référence à la feuille paramétrer avec "With"
    .Range("B" & z) = .Range("B" & z) + CumulB
    .Range("C" & z) = .Range("E" & z) + CumulE
    '...
    Et pour finir, pourquoi faire une tel boucle (consommatrice de ressource tel que tu l'a écrite), alors que les fonctions Excel sont parfois largement suffisante ? Grosso modo, peut on avoir quelques précisions sur ton fichier pour t'aider un peu mieux =)

  5. #5
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 478
    Points : 442
    Points
    442
    Par défaut
    Bonjour cela depend comment tu a nommé tes feuilles

    si tu as laissé les nom d'origine nommé feuil4 feuil5 ..
    tu écris de la facon suivante :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     Sub test()
     Dim col(5) As String
     Dim X As interger, Y As Integer, Z As Integer
     col(0) = "B"
     col(1) = "E"
     col(2) = "H"
     col(3) = "K"
     col(4) = "N"
     col(5) = "Q"
     ' initialiser à zero tes sommes
    For Y = 0 To 5
        For Z = 9 To 14
            Sheets("Etat - Total").Range(col(Y) & Z) = 0
        Next Z
    Next Y
     
     ' on commence a scruter les feuilles et transferer directement dans la colonne de la feuille concernées nullement besoin de variables en incrementant
        For X = 4 To 9 ' boucle qui scrute tes feuilles
            With Sheets("feuil" & CStr(X)) ' ici j'ai pris comme nom de feuille les noms classiques d'Excel c est à dire feuil1, feuil2 ...
                For Z = 9 To 14 ' boucle qui scrute tes lignes
                         For Y = 0 To 5 ' boucle pour tes colonnes
                            Sheets("Etat - Total").Range(col(Y) & Z) = Sheets("Etat - Total").Range(col(Y) & Z) + .Range(col(Y) & Z).Value ' transfert vers ta cellule de destination avec addition
                         Next Y
                Next Z
            End With
        Next X
     
     End Sub

Discussions similaires

  1. [XL-2010] Somme de plusieurs cellules de plusieurs feuilles
    Par dylan.pascal dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/03/2015, 15h03
  2. Réponses: 2
    Dernier message: 22/10/2014, 23h21
  3. [Toutes versions] comment copier plusieurs cellules d'une feuille sur plusieurs feuilles
    Par lem56 dans le forum Excel
    Réponses: 1
    Dernier message: 28/04/2013, 12h10
  4. Réponses: 3
    Dernier message: 13/04/2008, 10h52
  5. Réponses: 3
    Dernier message: 23/01/2008, 03h52

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