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 :

Sommer des plages identiques dans différentes feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut Sommer des plages identiques dans différentes feuilles
    Bonjour,

    je cherche a faire la somme de plages identiques situées sur les 4 premières feuilles de mon classeur.
    Cette somme doit s'afficher dans la 5ème feuille, en partant de la cellule "B3"

    je bute sur le code, j'aimerai obtenir de l'aide, je me doute que l'erreur dans le code est du domaine du "débutant", mais bon.... on commence tous un jour

    La plage des données à sommer est Range("B" & i, "H" & (j - i) + 3)
    Ci-après le morceau de code qui pose problème, je n'ai pas récapitulé les "For" précédents (pour i et j )car ça marche très bien de ce côté là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For k = 1 To 4
    For Each cell In Sheets("feuil1").Range("B" & i, "H" & (j - i) + 3) 
    cell = cell + Sheets(k).cell
    Next cell
    Next k
    Comme vous vous en doutez... c'est bien le "cell = cell + sheets(k).cell" qui pose problème. VBA ne doit pas reconnaître le sheets(k).cell

    Et je pense aussi que

    Merci par avance !

  2. #2
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Par défaut
    Pourquoi ne pas utiliser un code de ce genre?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Feuil5").Range("B7").Select
        ActiveCell.FormulaR1C1 = "=SUM(Feuil1!C[-1],Feuil2!C[-1],Feuil4!C[-1],Feuil3!C[-1])"

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour Valou,

    merci tout d'abord de te pencher sur la question, et merci par avance aux éventuels autres contributeurs.

    J'ai donc tenté d'intégrer ton idée à mon code comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each cell In Sheets("Feuil5").Range("B" & i, "H" & j)
                        cell.FormulaR1C1 = "=SUM(Feuil1!C,Feuil2!C,Feuil4!C,Feuil3!C)""
                        Next cell
    On est sur la bonne piste car la macro passe sans erreur

    Cependant, si je prend l'exemple de la cellule B3 de la feuil5, je cherche à avoir en formule : =SOMME(Feuil1!B3;Feuil2!B3;Feuil3!B3;Feuil4!B3)
    ==> somme des cellules B3 des feuilles 1 à 4, le résultat étant à afficher en B3

    Or actuellement, avec le code que j'ai noté au dessus, j'obtient dans la cellule B3:

    =SOMME(Feuil1!B:B;Feuil2!B:B;Feuil3!B:B;Feuil4!B:B)
    Donc il ne fait pas la somme des cellules "B3" des feuilles 1 à 4, il fait la somme de l'ensemble des colonnes B des feuilles 1 à 4.



    Pourriez-vous m'indiquez comment modifier le morceau de code ci-dessus pour que je n'ai que la somme des cellules, et non pas la somme de l'ensemble de la colonne ?

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    J'aurais bien vu quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        For k = 1 To 4
            For Each Cell In Sheets("feuil5").Range("B" & i, "H" & (j - i) + 3)
                Cell = Cell + Sheets(k).Range(Cell.Address)
            Next Cell
        Next k
    Cordialement.

  5. #5
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 181
    Par défaut
    Bonjour à tous,

    Comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Rg As String
    For k = 1 To 4
        For Each cell In Sheets("feuil1").Range("B" & i, "H" & (j - i) + 3)
            Rg = cell.Address
            If k = 1 Then
                cell.Value = Sheets(k).Range(Rg)
            Else
                cell.Value = cell.Value + Sheets(k).Range(Rg)
            End If
        Next cell
    Next k
    En ajoutant une variable Rg qui récupère l'adresse de cell ;
    A la 1ère valeur de k, on met la 1ère valeur, puis on fait la somme ;


    Pour info, "feuil1" n'est pas dans Sheets(1) à 4, sinon la somme est fausse.
    Cordialement.

    [Edit]: Trop tard, gFZT82 a répondu plus vite

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour à vous deux,

    vos deux méthodes semblent similaires, et je vous remercie vivement de m'avoir enseigné le Cell.Address que je n'avais jamais utilisé auparavant.

    Ainsi j'ai deux façons de travailler avec.

    J'ai testé la méthode de gFZT82 qui répond à mes attentes (charge à moi maintenant de le modifier à bon escient).

    Donc forcément la méthode de HopPopPop doit fonctionner aussi bien.

    Je conserve précieusement vos deux codes, car ils me seront tantôt l'un ou l'autre utiles suivant ce que je veux faire.


    Merci la communauté, comme toujours c'est de qualité et didactique !!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/06/2015, 11h31
  2. [XL-2013] Copier des "Tableaux" dans différentes feuilles de calculs
    Par petitnul12 dans le forum Excel
    Réponses: 2
    Dernier message: 26/04/2014, 19h12
  3. [XL-2010] Associer des valeurs identiques dans deux feuilles différentes
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/01/2014, 14h38
  4. [XL-2002] Copier et coller des données dans différentes feuilles
    Par sergio_gr66 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/01/2011, 07h03
  5. Réponses: 2
    Dernier message: 30/04/2009, 12h46

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