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![]()
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![]()
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)) :une fois fini à la fin du code il faudra détruire les variables du classeurs de destination et du classeur source
Code : Sélectionner tout - Visualiser dans une fenêtre à part wbSource.Sheets("NomDeMaFeuille").Range("A1").Value
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 ;)
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
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 ?![]()
« 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 …
"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)
Bonjour !
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, …
Partager