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 :

Additionner cellules sur plusieurs feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut Additionner cellules sur plusieurs feuilles
    Bonjour à tous,

    J'aurai besoin d'une aide.

    J'ai un document excel avec comme feuille

    Res, feuille(1), feuille(2) etc... feuille(3)


    Dans la feuille RES j'indique dans une cellule un chiffre exemple 3

    Je voudrait qu'il additionne l'ensemble la cellule B5 sur des 3 feuille. et qu'il l'inscrive dans le résultat dans une cellule.


    Comment réalise ceci? une macro?

    Merci d'avance

    guigui69

  2. #2
    Membre confirmé Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Par défaut
    En théorie, une simple formule suffit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME(Feuil1!B5;Feuil2!B5;Feuil3!B5)
    (à supposer que tes feuilles se nomment bien Feuil1, Feuil2, Feuil3).
    Normalement, si tu commences à taper :
    ... dans une cellule, il te suffit ensuite de cliquer sur la feuille puis sur la cellule qui t'intéresse, puis de taper un point-virgule (";"), puis de cliquer sur une autre feuille et une autre cellule, etc... Ca évite d'avoir à écrire à la main le nom de la feuille et de faire une faute ^^

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Ca je sais faire des addition comme ceci.

    Mais ce que je ne sais pas faire c'est par exemple.

    Dans une cellule B3 je rentre le chiffre 5. Je voudrait que ca réalise le calcul
    feuille1A3+feuille2A3+....feuille5A5.

    Et si après je met dans la cellue B3 le chiffre 20 cela m'additionne :
    feuille1A3+feuille2A3+....feuille20A3.

    Le chiffre en b3 peut varier donc je veut que le calcul ce modifie.

    Alors en faite:

    J'ai un document excel

    Avec comme feuille "cumul","forfait"; Reporting Jour (1);Reporting Jour (2);etc...Reporting Jour (23)

    Dans la feuille cumul, dans la cellule B3, la personne rentre 4

    Je voudrait que cela additionne la cellule A3 de la Reporting Jour (1)A3+Reporting Jour (2)A3+Reporting Jour (3)A3+Reporting Jour (4)A3
    et que cela s'affiche dans une cellule la B4 de la feuille cumul.

    Si la personne choisi 20 jour cela fasse l addition sur les 20 feuilles.

  4. #4
    Membre confirmé Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Par défaut
    Ok je comprend mieux.
    Je n'ai pas de solution toute faite, mais on peut réfléchir à ça ensemble.

    Visiblement il faudra utiliser l'évènement Worksheet_Change dans le code VBA de la feuille cumul. Mais ATTENTION : il s'enclenche dès qu'une cellule est modifiée (or on va en modifier une par le code, justement. Il faut éviter les boucles infinies, qui feront planter Excel).

    Worksheet_Change prend en paramètre un objet "range" qui est la cellule qu'on vient de modifier. Si on part du principe que l'utilisateur va toujours taper le nombre de jour dans la ligne 3, et que le résultat sera toujours affiché dans la ligne 4, on pourrait alors écrire quelque chose du genre :

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim nbJours, i, somme As Integer
        nbJours = Target.Value
     
        ' on s'assure que la cellule modifiée est bien sur la ligne 3
        If Target.Row = 3 Then
            somme = 0
            ' boucle pour parcourir les différentes feuilles
            For i = 1 To i <= nbJour
                somme = somme + Worksheets("Reporting Jour (" & i & ")").Cells(Target.Column, Target.Row + 1).Value
            Next
     
        ' écriture du résultat juste en dessous
        ActiveSheet.Cells(Target.Column, Target.Row + 1) = somme
        End If
    End Sub
    Ici, si l'utilisateur entre 5 dans B3, ça fera la somme des B4 des feuilles 1 à 5, et écrira le résultat dans la cellule B4 de la feuille cumul.

    Pour adapter les colonnes et lignes ciblées, il suffit de modifer le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Target.Column, Target.Row + 1)
    ...en effectuant une opération sur les Target.Column (désigne la colonne : 1 pour A, 2 pour B, etc...) et Target.Row (désigne la ligne). Moi j'ai fait un +1 sur la ligne pour agir sur la ligne 4 quand c'est la ligne 3 qui est modifée.

    Après il reste à adpater en fonction des cas.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Merci,

    je regarde ton code.

    J'ai essayer ceci:
    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
     
    Sub regrouper()
    Dim i As Integer
    Dim nom As Long
    valeur = 0
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Sheets("Reporting Cumul").Select
    jour = Range("E24").Value
    For i = 1 To jour
    Sheets("Reporting Jour (" & i & ")").Select
    valeur = valeur + Range("E6").Value
     
    Next i
    Sheets("Reporting Cumul").Select
    Range("E25").Value = valeur
     
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    End Sub
    ca a l'air de fonctionné qu'en penses tu? erreur dans le code?

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    pour ton code, je l'écrirais comme ç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
    15
    16
    17
    Sub regrouper()
    Dim i As Integer
    Dim nom As Long, jour, valeur, fl as string 'tout déclarer
    valeur = 0
     
    Application.ScreenUpdating = False 'ça je m'en passerais
    Application.DisplayAlerts = False 'ça je m'en passerais
    jour = Sheets("Reporting Cumul").Range("E24").Value
    For i = 1 To jour
       fl = "Reporting Jour" & i
       valeur = valeur + Sheets(fl).Range("E6").Value 'si tes feuilles se nomment "reporting jour1", "reporting jour2","reporting jour3"...
    Next i
    Sheets("Reporting Cumul").Range("E25").Value = valeur
     
    Application.ScreenUpdating = True 'ça je m'en passerais
    Application.DisplayAlerts = True 'ça je m'en passerais
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

Discussions similaires

  1. [XL-2010] Suppression données cellules sur plusieurs feuilles
    Par Blaiz58 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/09/2014, 10h19
  2. Valider une plage de cellules sur plusieurs feuilles via une listbox
    Par lio59 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/08/2009, 13h52
  3. [XL-2007] Recopier les données d'une cellule sur plusieurs feuilles
    Par anubis62 dans le forum Excel
    Réponses: 1
    Dernier message: 25/06/2009, 08h41
  4. Calcul sur des cellules sur plusieurs feuilles
    Par vlksoft dans le forum Excel
    Réponses: 2
    Dernier message: 12/03/2009, 08h08
  5. Vérouillage cellule sur plusieurs feuille
    Par bkdarkness dans le forum Excel
    Réponses: 1
    Dernier message: 22/06/2007, 13h03

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