Macro pour extraire des chiffres de différents classeurs en les ajoutant

Lettou

XLDnaute Nouveau
Bonjour à tous!

Je suis entrain de créer une macro qui me permettrait de récolter des informations chiffrées dans plusieurs classeurs qui seront mis à jour chaque mois.

Il y aura au moins 30 classeurs par mois, mais il se peut que certains mois il y ai peut-être un classeur de plus ou de moins ou une ligne de plus ou de moins dans les classeurs, cela dépend de la personne qui le remplira.

Je voudrais donc créer une macro qui va chercher les informations dans chaque classeur et les rapporte dans le classeur RECAP.

J'ai commencé par créer un dossier dans "mes documents" ou je vais mettre tous les classeurs reçu chaque mois.
Comme ca je collerai chaque mois ces classeurs dans le fichier et la macro ira les chercher.

Jusque là tout va bien, la macro fonctionne: elle va chercher le classeur dans mes documents, l'ouvre, copie les chiffres, et colle ces chiffres dans le classeur RECAP puis passe à l'autre classeur, copie, colle.etc...

Mon problème : quand je lance ma macro, a chaque fois qu’elle ouvre un nouveau classeur et qu'elle copie les chiffres dans le classeur RECAP, elle efface les anciens chiffres copiés du classeur précédent, il n’y a donc aucun cumule…
J'aimerais donc pouvoir ajouter un code pour ajouter chaque chiffres au précédent, comme un genre de « collage spécial addition ». Et c’est à ce moment là que je bloque !!!

De plus, J’ai réussi à faire cette macro pour les 4 onglets du classeur RECAP mais ça fait long, je ne sais pas si c’est possible de simplifier les codes.

Je fais donc appel à vous pour pouvoir progresser. Pourriez-vous m'aider à compléter ma macro?

A noter:

Voici les fichiers pour vous aider à comprendre mon problème, Les cellules à copier sont celles qui font partie du cadre bleu. Chaque classeur que je recevrai aura un nom de pays, j’ai pris comme exemple France, Italie, Espagne dans ma macro.




Merci !

Lettou
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Macro pour extraire des chiffres de différents classeurs en les ajoutant

Re,

Set p = ThisWorkbook.Sheets(ITALIE).Range("C7:CV192")

ca logiquement c'est l'initialisation de la plage de destination, à priori ton classeur RECAP

r = ThisWorkbook.Path & "D:\documents and Settings\My Documents\PAYS"

là dans ce cas le "ThisWorkbook.Path" fait double emploi, de plus manque 1 "\".... A savoir qu'il était censé retrouver le dossier dans lequel est ton classeur "RECAP", et à partir de là ouvrir tous les autres xlsm....
 

Lettou

XLDnaute Nouveau
Re : Macro pour extraire des chiffres de différents classeurs en les ajoutant

Bonjour Eric,

Ta macro à l'air intéressante, par conte j'ai un problème, quand je la lance ça me met erreur "impossible d'executer le code en mode arret" ça veut dire quoi?

Merci!

Je crois avoir compris, il faut toujours que le fichier RECAP soit placé dans le dossier contenant tous les classeurs à cumuler pour que ça marche c'est ça?
 

Lettou

XLDnaute Nouveau
Re : Macro pour extraire des chiffres de différents classeurs en les ajoutant

Re,



ca logiquement c'est l'initialisation de la plage de destination, à priori ton classeur RECAP



là dans ce cas le "ThisWorkbook.Path" fait double emploi, de plus manque 1 "\".... A savoir qu'il était censé retrouver le dossier dans lequel est ton classeur "RECAP", et à partir de là ouvrir tous les autres xlsm....

Ok je vois plus claire, je vais refaire le test alors
 

Pierrot93

XLDnaute Barbatruc
Re : Macro pour extraire des chiffres de différents classeurs en les ajoutant

Re,

J'ai commencé par créer un dossier dans "mes documents" ou je vais mettre tous les classeurs reçu chaque mois.
Comme ca je collerai chaque mois ces classeurs dans le fichier et la macro ira les chercher.

oui le classeur RECAP contenant la macro doit être dans le même dossier....
 
Dernière édition:

Lettou

XLDnaute Nouveau
Re : Macro pour extraire des chiffres de différents classeurs en les ajoutant

Re,



oui le classeur RECAP contenant la macro doit être dans le même dossier....




Ok je viens de faire le test, cette fois-ci ca marche, par contre il y a toujours le même problème: la macro copie les données et les colle dans le bon fichier mais elle ne les cumule pas. A chaque fois qu'elle prend de nouvelles données dans un nouveau classeur, ces nouvelles données remplacent les anciennes dans RECAP
 

Lettou

XLDnaute Nouveau
Re : Macro pour extraire des chiffres de différents classeurs en les ajoutant

Option Explicit
Sub test()
Dim r As String, f As String, p As Range, wb As Workbook, ws As Worksheet
Set p = ThisWorkbook.Sheets(1).Range("C7:CV192")
r = ThisWorkbook.Path & "\"
f = Dir(r & "*.xlsm")
Do While f <> ""
If f <> ThisWorkbook.Name Then
Set wb = Workbooks.Open(r & f)
For Each ws In wb.Worksheets
ws.Range("C7:CV192").Copy
p.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
Next ws
wb.Close False
End If
f = Dir
Loop
End Sub

Ok je viens de comprendre, ça marche merci! (désolé j'avais oublié d'éffacer une partie de mon ancienne macro)

J'ai mis la macro, telle quelle dans mon fichier en effaçant ce que j'avais créee de ma ma macro. J'ai mis les trois fichiers (ITALIE, ESPAGNE, FRANCE) dans un dossier avec RECAP et j'ai lancé la macro.

Par contre j'ai réagi que j'avais oublié un paramètre dans mon fichier RECAP: Il n'y a pas qu"un seul onglet de cumule, mais 4, car un cumule pour chaque onglet :-/

Voici le fichier en question
 

Pièces jointes

  • RECAP1.xlsm
    354.7 KB · Affichages: 35
  • RECAP1.xlsm
    354.7 KB · Affichages: 39

Pierrot93

XLDnaute Barbatruc
Re : Macro pour extraire des chiffres de différents classeurs en les ajoutant

Re,

sinon il faut réinitialiser la plage de destination... en espérant que tous les noms d'onglets sont bons.... sinon renverra une erreur....
Code:
Option Explicit
Sub test()
Dim r As String, f As String, p As Range, wb As Workbook, ws As Worksheet
Application.ScreenUpdating = False
r = ThisWorkbook.Path & "\"
f = Dir(r & "*.xlsm")
Do While f <> ""
    If f <> ThisWorkbook.Name Then
        Set wb = Workbooks.Open(r & f)
        For Each ws In wb.Worksheets
            Set p = ThisWorkbook.Sheets("RECAP " & ws.Name).Range("C7:CV192")
            ws.Range("C7:CV192").Copy
            p.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
        Next ws
        wb.Close False
    End If
    f = Dir
Loop
Application.ScreenUpdating = True
End Sub
 

Lettou

XLDnaute Nouveau
Re : Macro pour extraire des chiffres de différents classeurs en les ajoutant

Re,

sinon il faut réinitialiser la plage de destination... en espérant que tous les noms d'onglets sont bons.... sinon renverra une erreur....


Je n'ai pas très bien compris ce que cela veut dire "réinitialiser la page de destination?

Et si je veux changer le nom des onglets, c'est dans quel endroit de la macro qu'il faut le faire? car je ne vois pas marqué "poire, pome...etc dans la macro"
 

Pierrot93

XLDnaute Barbatruc
Re : Macro pour extraire des chiffres de différents classeurs en les ajoutant

Re,


bah... j'ai modifié le code au post #24
Set p = ThisWorkbook.Sheets("RECAP " & ws.Name).Range("C7:CV192")

Et si je veux changer le nom des onglets, c'est dans quel endroit de la macro qu'il faut le faire? car je ne vois pas marqué "poire, pome...etc dans la macro"

pas de nom des onglets dans le code, on passe par des variables objet....
 

Lettou

XLDnaute Nouveau
Re : Macro pour extraire des chiffres de différents classeurs en les ajoutant

Re,


bah... j'ai modifié le code au post #24




pas de nom des onglets dans le code, on passe par des variables objet....




Ca ne marche pas, je comprend pas pourquoi, ça me met erreur debeugage:


Option Explicit
Sub test()
Dim r As String, f As String, p As Range, wb As Workbook, ws As Worksheet
Application.ScreenUpdating = False
r = ThisWorkbook.Path & "\"
f = Dir(r & "*.xlsm")
Do While f <> ""
If f <> ThisWorkbook.Name Then
Set wb = Workbooks.Open(r & f)
For Each ws In wb.Worksheets
Set p = ThisWorkbook.Sheets("RECAP " & ws.Name).Range("C7:CV192") ws.Range("C7:CV192").Copy
p.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
Next ws
wb.Close False
End If
f = Dir
Loop
Application.ScreenUpdating = True
End Sub
 

Lettou

XLDnaute Nouveau
Re : Macro pour extraire des chiffres de différents classeurs en les ajoutant

BONJOUR,

bah... j'ai plus les fichiers moi.... mets en pièce jointe le classeur RECAP avec le code et le classeur à traiter quand ca bogue...
bonne journée
@+

Bonjour pardon,

En fait avec les trois fichiers France, Italie, Espagne dans le même dossier que RECAP ça marche.

Mais une fois que je met RECAP dans un autre dossier avec d'autres classeurs ça ne fonctionne plus. Alors que les classeurs qui sont dans le nouveau dossier ont les mêmes format que les classeurs ITALIE, FRANCE, ESPAGNE. Ils n'ont juste pas ces noms là. Il me semblait qu'on pouvait mettre RECAP dans n'importe quel dossier non? je ne comprend pas pourquoi et ça me met en jaune ce que je t'ai mis en poste #24.

Par contre je n'ai pas la possibilité de mettre les fichiers qui sont dans le nouveau dossier en question à cause de la confidentialité,

Merci
 
Dernière édition:

Discussions similaires

Réponses
20
Affichages
668

Statistiques des forums

Discussions
314 730
Messages
2 112 275
Membres
111 488
dernier inscrit
kamellamri