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 2 cellules de plusieurs fichiers. [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut Somme de 2 cellules de plusieurs fichiers.
    Bonjour,
    J'ai X fichiers de même structure dans un répertoire "TOTO" et je voudrais avoir la sommes de toutes les cellules A1 et B1 de tous mes fichiers (dans un autre fichier). Pouvez vous m'aider a trouver la solution SVP.
    Par avance grand merci

  2. #2
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    Se servir de ce lien (en consultant la faq on trouve plein de réponses appropriées) :
    Comment boucler sur les fichiers d'un répertoire ?

    Dans la Boucle :
    Comment ouvrir un classeur ?

    • Faire tes actions d'Addition sur le classeur de destination en prenant les valeurs des fichiers sources

    puis une fois fini avec un classeur source avant de passer au suivant :
    Comment fermer un classeur sans enregistrer les changements ?

    il faudra au préalable déclarer une première fois la variable du classeur de destination
    et dans la boucle déclarer la variable du classeur source à chaque passage d'une nouvelle ouverture dans la boucle (se sera la même variable)

    Ne pas oublier le pointage : Classeur.Feuille.plage
    ex. avec le classeur source en utilisant sa variable (à créer 1 fois dans la boucle au bon emplacement - ex : wbSource (on peut donner le nom que l'on veut)) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wbSource.Sheets("NomDeMaFeuille").Range("A1").Value
    une fois fini à la fin du code il faudra détruire les variables du classeurs de destination et du classeur source

    je te laisse faire tes propres recherches pour le reste …

    voilà
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut
    Bonjour,
    Merci pour ta réponse... j'ai déjà utilisé les liens que tu préconises et je n'ai pas de problème pour additionner une somme sur une cellule la A1 par exemple mais je n'arrive pas à avoir 2 (ou plus) de compteur. J'y arrive en refaisant la boucle, mais c'est très lourd et je pense qu'il y a une manière plus "orthodoxe" de le faire. Voici le code que j'utilise

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    Sub SOMME_TGC()
    Dim objShell As Object, objFolder As Object
    Dim Chemin As String, fichier As String
    Dim compteur As String
     
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
     
    If objFolder Is Nothing Then
        MsgBox "Arret de la macro", vbCritical, "Annulation"
    Else
        'On renseigne le compteur à 0
        compteur = 0
        'Sélection du répertoire
        Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
     
        'format du fichier (par exemple xlsx)
        fichier = Dir(Chemin & "*.xlsx")
        Do While Len(fichier) > 0
            If fichier <> ThisWorkbook.Name Then
                'la cellule qui va être recherchée dans les autres classeurs est A1 de la feuille 1
                ThisWorkbook.Names.Add "Plage", _
                RefersTo:="='" & Chemin & "[" & fichier & "]Feuil1'!$A$1"
                'on va coller le résultat dans la feuille 2
                With Sheets("Feuil2")
                    .[A1] = "=Plage"
                    'on ajoute le résultat trouvé dans le compteur
                    compteur = compteur + .[A1].Value
     
                End With
            End If
     
            fichier = Dir()
        Loop
    End If
     
    'On colle le compteur dans la cellule B2
    Range("B2").Select
    ActiveCell.Value = compteur
     
     
     
    If objFolder Is Nothing Then
        MsgBox "Arret de la macro", vbCritical, "Annulation"
    Else
        'On renseigne le compteur à 0
        compteur2 = 0
        'Sélection du répertoire
        Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
     
        'format du fichier (par exemple xlsx)
        fichier2 = Dir(Chemin & "*.xlsx")
        Do While Len(fichier2) > 0
            If fichier2 <> ThisWorkbook.Name Then
                'la cellule qui va être recherchée dans les autres classeurs est A1 de la feuille 1
                ThisWorkbook.Names.Add "Plage2", _
                RefersTo:="='" & Chemin & "[" & fichier2 & "]Feuil1'!$B$1"
                'on va coller le résultat dans la feuille 2
                With Sheets("Feuil2")
                    .[B1] = "=Plage2"
                    'on ajoute le résultat trouvé dans le compteur
                    compteur2 = compteur2 + .[B1].Value
     
                End With
            End If
     
            fichier2 = Dir()
        Loop
    End If
     
    'On colle le compteur dans la cellule B2
    Range("D2").Select
    ActiveCell.Value = compteur2
    End Sub

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut
    Bonjour Marc,

    J'ai beaucoup de fichiers, et ils évoluent.
    En tout, il me faudrait 5 ou 6 compteurs ! et le code que j'ai fait ne me satisfait pas... (il est sur le poste plus haut )
    Y a t-il un moyen plus simple d'y arriver ?

  5. #5
    Expert éminent
    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
    Par défaut

    « Beaucoup » c'est vague tout comme « ils évoluent » !
    Et maintenant évoquer cinq / six compteurs alors que dans la présentation initiale il n'y a que deux cellules à additionner !

    Encore une fois, une présentation claire et exhaustive est impérative afin de proposer une solution optimale.
    Sinon on en restera là avec ton code et tout son inutile

    Pour les compteurs, une possibilité via une variable tableau

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    « Beaucoup » c'est vague tout comme « ils évoluent » !
    "Beaucoup" : de 1 a XXX
    et ils "évoluent" : le nombre de fichiers augmentent de 1 a XXXX

    Ma demande est la suivante : comment avoir un fichier qui regroupe plusieurs compteurs de totalisation (somme de toutes les cellules A1 - B10 - J40 et C3 de la feuille1 de tous les fichiers qui se trouvent dans le répertoire TOTO)

    Voilà , j'espère que c'est plus claire

    Merci de l'aide.

    PS: J'habite en Nouvelle Calédonie, il y a un gros décalage horaire ; c'est pour cela que je n'ai pas répondu tout de suite. (et en plus on est en alerte cyclonique )

  7. #7
    Expert éminent
    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
    Par défaut
    Bonjour !

    Citation Envoyé par MANOU06 Voir le message
    J'ai X fichiers de même structure
    Combien de fichiers ?‼

    Car plus le nombre est important plus la solution classique sera longue à l'exécution !

    Rappel : la qualité d'une solution proposée dépendant de celle de la présentation initiale …

    ___________________________________________________________________________________________________________
    Je suis Paris, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

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

Discussions similaires

  1. Somme des cellules de plusieurs fichiers Excel
    Par id301077 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 30/07/2019, 09h11
  2. Extraire des données d'une même cellule, dans plusieurs fichiers
    Par chicanne dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 31/07/2016, 12h06
  3. Somme des cellules de plusieurs fichiers Excel
    Par missvalin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/05/2016, 21h06
  4. Copier des cellules de plusieurs fichiers et les trier automatiquement
    Par nicethe dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/10/2008, 12h40
  5. exporter cellules de plusieurs fichiers sur un seul fichier
    Par sapeur37 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/11/2006, 09h46

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