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 ?

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.
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.
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...)

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 Dans les cellules de 4 plages se trouvent des résultats de calculation - seulement les chifres. "int" - c'est integer? Le numéro?

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.

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?

Essaie avec ce 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.

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?

Il y a des noms de variables que tu ne peux pas utiliser.

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

Baton 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?

Remplace
Workbooks.Open "BD_equipe_" & i & ".xls", Password:=passwords(i - 1)

par

Workbooks.Open "BD_equipe_" & i & ".xls", UpdateLinks:=3, Password:=passwords(i - 1)
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.

Effectivement je n'ai pas totalement adapté le code ci-dessus.

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 ?

Rechercher des sujets similaires à "somme fichiers"