SOMME des plusieurs fichiers
Bonjour le forume,
J’ai 24 fichier nommés BD_equipe_1.xls, BD_equipe_2.xls ...... BD_equipe_24.xls.
Chaque fichier a l’onglet Recap1. Dans cet onglet il y a un tableau avec le même format.
J’ai cherche la possibilité de calculer la somme des cellules C4 des touts les 24 fichiers.
La seule solution que j’ai trouvée et la suivante :
=SOMME([BD_equipe_1.xls]Recap1!$C$4+[BD_equipe_2.xls]Recap1!$C$4)
Si je continue avec cette formule, ça deviendra qqc immense pour additionner touts 24 fichiers.
Pouvez-vous proposer qqc plus « modeste » ?
Merci d’avance,
Baton
Bonjour Baton,
Où veux-tu mettre cette somme ? Dans un autre fichier ?
Je pense qu'avec une macro ce sera plus simple.
vba-new a écrit :Bonjour Baton,
Où veux-tu mettre cette somme ? Dans un autre fichier ?
Je pense qu'avec une macro ce sera plus simple.
Salut vba-new,
Oui. J'ai crée un autre fichier BD_Recap.xls dans lequel ja voudrais avoir cette somme.
Merci pour ton attention
Baton
Dans le fichier recap, mets cette macro :
Sub som()
Dim i As Long, some As Double
For i = 1 To 24
Workbooks.Open ("BD_equipe_" & i & ".xls")
some = some + Sheets("Recap1").[c4]
ActiveWorkbook.Close False
Next i
ActiveCell.Value = some
End Sub
Ensuite sélectionne une cellule vide et lance la macro ci-dessus. Je n'ai pas testé mais ça ne devrait pas être loin de ce que tu cherches.
vba-new a écrit :Dans le fichier recap, mets cette macro :
Sub som() Dim i As Long, some As Double For i = 1 To 24 Workbooks.Open ("BD_equipe_" & i & ".xls") some = some + Sheets("Recap1").[c4] ActiveWorkbook.Close False Next i ActiveCell.Value = some End Sub
Ensuite sélectionne une cellule vide et lance la macro ci-dessus. Je n'ai pas testé mais ça ne devrait pas être loin de ce que tu cherches.
vba-new,
merci beaucoup pour le code.
En fait, quand j'ai écrit "le cellule C4', j'ai pensé de la formule => recopier l'apres partout ou il faut. Il y a 4 plages dans les fichiers qu'il les faut additionner.
Comment c'est possible ajouster la ligne du code pour 4 plages?
Une autre question, comment le calcul se fait? Est-ce que faut-il ouvrir touts les 24 fichiers pour metre à jour le fichier RECAP ou le calcul se fait même quand les fichiers sont fermés? J'ai trouvé une solution avec la formule mais ça ne fonctionne que sur touts les fichiers ouverts.
La derniére question: dans le code tu utilise 3 fois le mot "some". Puis-je le remplacer par "sum" ?
merci
Salut baton,
Peux-tu donner l'adresse des 4 plages à additionner ?
Le code ouvre le fichier, prend la valeur et ferme chaque fichier.Baton a écrit :Une autre question, comment le calcul se fait? Est-ce que faut-il ouvrir touts les 24 fichiers pour metre à jour le fichier RECAP ou le calcul se fait même quand les fichiers sont fermés?
Là est le problème, c'est pour ça que je suis passé à une solution en VBA.Baton a écrit :J'ai trouvé une solution avec la formule mais ça ne fonctionne que sur touts les fichiers ouverts.
A toi de tester. Il faut juste que la variable ne soit réservée (ex : tu ne peux pas utiliser comme variables dim, int, mid, range...)Baton a écrit :La derniére question: dans le code tu utilise 3 fois le mot "some". Puis-je le remplacer par "sum" ?
Bonjour vba-new,
Peux-tu donner l'adresse des 4 plages à additionner ?
Les plages sont C4:F35 ; C37:F38 ; K4:N35 et K37:N38
Baton a écrit :Une autre question, comment le calcul se fait? Est-ce que faut-il ouvrir touts les 24 fichiers pour metre à jour le fichier RECAP ou le calcul se fait même quand les fichiers sont fermés?
Le code ouvre le fichier, prend la valeur et ferme chaque fichier.
Mes fichiers sont protégés avec mot de passe. Si le mot de passe du BD_equipe_1.xls est "aaa" et le mot de passe du BD_equipe_2.xls est "bbb", comment il faut adapter le code? L'ajustement "individuel" pour chaque fichier je vais faire après.
Baton a écrit :J'ai trouvé une solution avec la formule mais ça ne fonctionne que sur touts les fichiers ouverts.
Là est le problème, c'est pour ça que je suis passé à une solution en VBA.
C'est pourquoi quand tu explique doucement, je comprends vite
Baton a écrit :La derniére question: dans le code tu utilise 3 fois le mot "some". Puis-je le remplacer par "sum" ?
A toi de tester. Il faut juste que la variable ne soit réservée (ex : tu ne peux pas utiliser comme variables dim, int, mid, range...)
Ca je n'ai pas compris
J'ai rajouté un bouton et appliqué la macro. Elle ne marche pas. Même après avoir remplacé le "some" par "sum" partout.
vba-new a écrit :Dans le fichier recap, mets cette macro :
Sub som() Dim i As Long, some As Double For i = 1 To 24 Workbooks.Open ("BD_equipe_" & i & ".xls") some = some + Sheets("Recap1").[c4] ActiveWorkbook.Close False Next i ActiveCell.Value = some End Sub
Ensuite sélectionne une cellule vide et lance la macro ci-dessus. Je n'ai pas testé mais ça ne devrait pas être loin de ce que tu cherches.
vba-new,
Re,
J'ai rajouté deuxième "m" et le code
Sub som()
Dim i As Long, somme As Double
For i = 1 To 24
Workbooks.Open ("BD_equipe_" & i & ".xls")
somme = somme + Sheets("Recap1").[c4]
ActiveWorkbook.Close False
Next i
ActiveCell.Value = somme
End Sub
marche assez bien.
Essaie avec ce code :Baton a écrit :Mes fichiers sont protégés avec mot de passe. Si le mot de passe du BD_equipe_1.xls est "aaa" et le mot de passe du BD_equipe_2.xls est "bbb", comment il faut adapter le code?
Sub som()
Dim i As Long, sum1 As Double, sum2 As Double, sum3 As Double, sum4 As Double
Dim passwords
passwords = Array("aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg", "hhh", "iii", "jjj", "kkk", "lll", "mmm", "nnn", "ooo", "ppp", "qqq", "rrr", "sss", "ttt", "uuu", "vvv", "www", "xxx")
For i = 1 To 24
Workbooks.Open "BD_equipe_" & i & ".xls", Password:=passwords(i - 1)
sum1 = sum1 + Application.Sum(Sheets("Recap1").[C4:F35])
sum2 = sum2 + Application.Sum(Sheets("Recap1").[C37:F38])
sum3 = sum3 + Application.Sum(Sheets("Recap1").[K4:N35])
sum4 = sum4 + Application.Sum(Sheets("Recap1").[K37:N38])
ActiveWorkbook.Close False
Next i
ActiveCell.Value = some
End Sub
Dans la variable passwords tu mets les mots de passe de tes 24 fichiers.
Il y a des noms de variables que tu ne peux pas utiliser.Baton a écrit :Ca je n'ai pas compris
Dans les cellules de 4 plages se trouvent des résultats de calculation - seulement les chifres. "int" - c'est integer? Le numéro?
Exemples possibles :
some = some + Sheets("Recap1").[c4]
baton = baton + Sheets("Recap1").[c4]
variable = variable + Sheets("Recap1").[c4]
Exemples impossibles :
[barrer]dim[/barrer] = [barrer]dim[/barrer] + Sheets("Recap1").[c4]
[barrer]int[/barrer] = [barrer]int[/barrer] + Sheets("Recap1").[c4]
vba-new,
merci!!! Very impressive...
Avant que je viens de l'appliquer
1. Le code ouvre les fichiers. Chaque des 24 fichiers a les liaisons. Est-ce que c'est possible de rajouter une reponse automatique "Mettre à jour" pour touts les fichiers?
2. Après l'ouverture des fichiers ils ont été bien fermé. Mais la calculation des sommes n'a pas été fait.
Merci,
Baton
RemplaceBaton a écrit :1. Le code ouvre les fichiers. Chaque des 24 fichiers a les liaisons. Est-ce que c'est possible de rajouter une reponse automatique "Mettre à jour" pour touts les fichiers?
Workbooks.Open "BD_equipe_" & i & ".xls", Password:=passwords(i - 1)
par
Workbooks.Open "BD_equipe_" & i & ".xls", UpdateLinks:=3, Password:=passwords(i - 1)
Effectivement je n'ai pas totalement adapté le code ci-dessus.Baton a écrit :2. Après l'ouverture des fichiers ils ont été bien fermé. Mais la calculation des sommes n'a pas été fait.
J'ai 2 questions :
1- Il n'y qu'une seule somme ou 4 sommes (car 4 plages)
2- On met la somme dans quelle cellule du fichier Récap ?
vba-new a écrit :Remplace
Workbooks.Open "BD_equipe_" & i & ".xls", Password:=passwords(i - 1)
par
Workbooks.Open "BD_equipe_" & i & ".xls", UpdateLinks:=3, Password:=passwords(i - 1)
Remplacé , merci
vba-new a écrit :J'ai 2 questions :
1- Il n'y qu'une seule somme ou 4 sommes (car 4 plages)
2- On met la somme dans quelle cellule du fichier Récap ?
Il y a 24 tableaux. J'ai crée le 25-ème (Recap) pour avoir un recapitulatif des données de 24 fichiers. C4 du 25-ième = Σ(C4(1);C4(2)...(C4(24)) et comme ça pour chaque cellule. Tous tableaux ont exactement la même structure.
Merci
Ok je comprends.
Teste ce code :
Sub som()
Dim MasterWbk As Workbook
Dim i As Long, cel As Range
Dim passwords
Application.ScreenUpdating = False
Set MasterWbk = ThisWorkbook
passwords = Array("aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg", "hhh", "iii", "jjj", "kkk", "lll", "mmm", "nnn", "ooo", "ppp", "qqq", "rrr", "sss", "ttt", "uuu", "vvv", "www", "xxx")
For i = 1 To 24
Workbooks.Open "BD_equipe_" & i & ".xls", UpdateLinks:=3, Password:=passwords(i - 1)
For Each cel In Sheets("Recap1").[C4:F35,C37:F38,K4:N35,K37:N38]
MasterWbk.ActiveSheet.Range(cel.Address) = MasterWbk.ActiveSheet.Range(cel.Address) + cel.Value
Next cel
ActiveWorkbook.Close False
Next i
End Sub
Ca marche parfaitement
Merci beaucoup, vba-new!
Bonjour à tous
je suis parfaitement nouveaux sur ce forum et depuis le temps que je galère avec les formules qui ne sont pas toujours adaptées à mes besoins je me décide enfin à sauter le pas et m'inscrire ici. je ne sais pas si dois passer par la case "présentation", vous me direz je vous fais confiance la dessus
alors j'ai à peu près le même problème qu'évoqué plus haut :
un répertoire avec 52 classeurs (1 fichier par semaine) , commençant tous par le même nom puis se terminant par 01, 02, 03.....52
je souhaite additionner sur un autre fichier (enregistré dans un autre répertoire ) la même cellule pour ces 52 fichiers: C174
ces 52 fichiers sont tous identiques car basés sur le même modèle, seul les valeurs changent.
j'ai des espaces dans les noms de classeurs :
='C:\Documents and Settings\jarlanda\Bureau\TABLEAUX EXCEL\COMMANDE JOURNAUX MAGAZINES FLEURS\JIR\2013\[JOURNAUX JIR 01.xls]JOURNAUX'!$C$174
et enfin je suis totalement débutant en matière de VBA (j'ai eu quelques cours à la fac mais ça remonte un peu trop ma mémoire me fait défaut)
pourriez vous m'expliquer comment adapter le code développé ci dessus à mon exemple svp ?