Copier une selection de cellule depuis plusieurs classeur EXCEL
heisenberg007
Messages postés
12
Statut
Membre
-
heisenberg007 Messages postés 12 Statut Membre -
heisenberg007 Messages postés 12 Statut Membre -
Bonjour,
Je souhaite récupérer grâce une Macro le contenu d'une selection de cellule à partir de plusieurs classeur Excel. Les fichiers Excel se trouve dans le même dossier Exemple:
Feuil classeur A:
Produit A Produit B Produit C
AA AC AT
AB AF AZ
AA AH AX
Feuil classeur B:
Produit A Produit B Produit C
BB AC AT
AB AF AZ
AA AH AX
CC
ZZ
Feuil classeur C:
Produit A Produit B Produit C
AA AC AT
AB AF AZ
AA AH AX
DD EE FF
XX
FF
HH
Résultat voulu:
Classeur D, Feuil Recap:
Produit A Produit B Produit C
AA AC AT
AB AF AZ
AA AH AX
BB AC AT
AB AF AZ
AA AH AX
CC
ZZ
AA AC AT
AB AF AZ
AA AH AX
DD EE FF
XX
FF
HH
Je vous remercie de votre.
Je souhaite récupérer grâce une Macro le contenu d'une selection de cellule à partir de plusieurs classeur Excel. Les fichiers Excel se trouve dans le même dossier Exemple:
Feuil classeur A:
Produit A Produit B Produit C
AA AC AT
AB AF AZ
AA AH AX
Feuil classeur B:
Produit A Produit B Produit C
BB AC AT
AB AF AZ
AA AH AX
CC
ZZ
Feuil classeur C:
Produit A Produit B Produit C
AA AC AT
AB AF AZ
AA AH AX
DD EE FF
XX
FF
HH
Résultat voulu:
Classeur D, Feuil Recap:
Produit A Produit B Produit C
AA AC AT
AB AF AZ
AA AH AX
BB AC AT
AB AF AZ
AA AH AX
CC
ZZ
AA AC AT
AB AF AZ
AA AH AX
DD EE FF
XX
FF
HH
Je vous remercie de votre.
A voir également:
- Copier une selection de cellule depuis plusieurs classeur EXCEL
- Liste déroulante excel - Guide
- Excel cellule couleur si condition texte - Guide
- Proteger cellule excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Déplacer une colonne excel - Guide
2 réponses
Bonjour,
Les fichiers Excel se trouve dans le même dossier Oui, mais y a t-il un ordre dans la copie des fichiers, A et B "facile", mais avec les noms de fichiers ????
Les fichiers Excel se trouve dans le même dossier Oui, mais y a t-il un ordre dans la copie des fichiers, A et B "facile", mais avec les noms de fichiers ????
Voilà ce que j'ai pu faire :
Les classeurs tests sont disponible ici :
https://www.cjoint.com/c/EJvtLqvtEOB
A voir si cela convient !
Sub CumulDonnee()
' Déclaration des variables
Dim i, j, k, l, m, n As Integer: i = 1
Dim classeur_1, classeur_2, classeur_3 As Workbook
' Attribut les noms des classeurs et le chemin (ici le même dossier que le classeur qui compile les données)
Set ClasseurSource = ActiveWorkbook
Set classeur_1 = Workbooks.Open("Classeur1.xlsx")
Set classeur_2 = Workbooks.Open("Classeur2.xlsx")
Set classeur_3 = Workbooks.Open("Classeur3.xlsx")
Application.ScreenUpdating = False
' Traite les lignes à copier du classeur_1 - 500 lignes de A500 à C500
' Commence à la ligne 2 (On ne prend pas en compte les en-tête des tableaux du classeur_1)
For k = 2 To 500
If classeur_1.Sheets("Feuil1").Cells([k], 1) <> "" Or classeur_1.Sheets("Feuil1").Cells([k], 2) <> "" Or classeur_1.Sheets("Feuil1").Cells([k], 3) <> "" Then
classeur_1.Sheets("Feuil1").Range("A" & k & ":C" & k).Copy
ClasseurSource.Sheets("Données compilées").Range("A" & i).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
i = i + 1
End If
Next
' Traite les lignes à copier du classeur_2 - 500 lignes de A500 à C500
' Commence à la ligne 2 (On ne prend pas en compte les en-tête des tableaux du classeur_2)
For k = 2 To 500
If classeur_2.Sheets("Feuil1").Cells([k], 1) <> "" Or classeur_2.Sheets("Feuil1").Cells([k], 2) <> "" Or classeur_2.Sheets("Feuil1").Cells([k], 3) <> "" Then
classeur_2.Sheets("Feuil1").Range("A" & k & ":C" & k).Copy
ClasseurSource.Sheets("Données compilées").Range("A" & i).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
i = i + 1
End If
Next
' Traite les lignes à copier du classeur_3 - 500 lignes de A500 à C500
' Commence à la ligne 2 (On ne prend pas en compte les en-tête des tableaux du classeur_3)
For k = 2 To 500
If classeur_3.Sheets("Feuil1").Cells([k], 1) <> "" Or classeur_3.Sheets("Feuil1").Cells([k], 2) <> "" Or classeur_3.Sheets("Feuil1").Cells([k], 3) <> "" Then
classeur_3.Sheets("Feuil1").Range("A" & k & ":C" & k).Copy
ClasseurSource.Sheets("Données compilées").Range("A" & i).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
i = i + 1
End If
Next
Application.ScreenUpdating = True
' Fermeture des classeurs
classeur_1.Close
classeur_2.Close
classeur_3.Close
End Sub
Les classeurs tests sont disponible ici :
https://www.cjoint.com/c/EJvtLqvtEOB
A voir si cela convient !
Une dernière question :)
J'essaye de refaire la même chose mais cette fois avec une boucle qui parcours tout les fichiers d'un dossier. Dans mon exemple j'ai mentionné 3 classeurs mais mon cas concernent beaucoup de classeurs.
J'ai essayé cela, mais j'ai des erreurs à la compilation.
Merci pour votre aide.
J'essaye de refaire la même chose mais cette fois avec une boucle qui parcours tout les fichiers d'un dossier. Dans mon exemple j'ai mentionné 3 classeurs mais mon cas concernent beaucoup de classeurs.
J'ai essayé cela, mais j'ai des erreurs à la compilation.
Merci pour votre aide.
Sub CumulDonnee()
' Déclaration des variables
Dim i, j, k, l, m, n As Integer: i = 1
Dim wb As Workbook
Chemin = "C:\Users\PYMI06881\Desktop\test\"
Fichier = Dir(Chemin & "*.xls")
Set ClasseurSource = ActiveWorkbook
' Attribut les noms des classeurs et le chemin (ici le même dossier que le classeur qui compile les données)
'Set ClasseurSource = ActiveWorkbook
'Set wb = Workbooks.Open(Path & "C1.xlsx")
Application.ScreenUpdating = False
Do While Fichier <> Chemin & "Compilation.xls"
Set wb = Workbooks.Open(Chemin & Fichier)
' Traite les lignes à copier du wb - 500 lignes de A500 à C500
' Commence à la ligne 2 (On ne prend pas en compte les en-tête des tableaux du wb)
For k = 2 To 500
'wb = Workbooks.Open(Fichier)
If wb.Sheets("Feuil1").Cells([k], 1) <> "" Or wb.Sheets("Feuil1").Cells([k], 2) <> "" Or wb.Sheets("Feuil1").Cells([k], 3) <> "" Then
With wb
.Sheets("Feuil1").Range("A" & k & ":J" & k).Copy
End With
With ClasseurSource.Sheets("Données compilées")
.Range("A" & i).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
i = i + 1
End With
End If
' Fermeture des classeurs
wb.Close True
Set wb = Nothing
Fichier = Dir
Next
Loop
Application.ScreenUpdating = True
End Sub
Je suis pas en mesure de tester le code que j'ai créer pour le moment mais j'ai tenter quelque chose quand même, si ça marche tant mieux sinon je le reverrais un peu plus tard !
Ou en attente d'un autre contributeur fan d'Excel !
Ou en attente d'un autre contributeur fan d'Excel !
Sub CumulDonnee()
' Déclaration des variables
Dim i, k As Integer: i = 1
Dim wb, ClasseurSource As Workbook
Dim Chemin As String
' Attribut
Chemin = "C:\Users\PYMI06881\Desktop\test\"
Fichier = Dir(Chemin)
Set ClasseurSource = ActiveWorkbook
Application.ScreenUpdating = False
Do While Fichier <> "Compilation.xls"
Set wb = Workbooks.Open(Fichier)
' Traite les lignes à copier du wb - 500 lignes de A500 à C500
' Commence à la ligne 2 (On ne prend pas en compte les en-tête des tableaux du wb)
For k = 2 To 500
If wb.Sheets("Feuil1").Cells([k], 1) <> "" Or wb.Sheets("Feuil1").Cells([k], 2) <> "" Or wb.Sheets("Feuil1").Cells([k], 3) <> "" Then
wb.Sheets("Feuil1").Range("A" & k & ":J" & k).Copy
ClasseurSource.Range("A" & i).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
i = i + 1
End If
' Fermeture des classeurs
wb.Close True
Set wb = Nothing
Next
Fichier = Dir
Loop
Application.ScreenUpdating = True
End Sub
Merci pour votre réponse.
Non il n' y a pas d'ordre dans la copie des fichiers, les fichiers ont le même nom avec un numéro. Ex : Produit1, Produit2, Produit3 ...
Ok, je vois ca demain
A+
www.commentcamarche.net/forum/affich-32659234-macro-copier-coller-des-lignes-d-un-tableau
C'est strictement le même sujet mais avec des classeurs différents.
Une adapation de la macro est largement suffisant pour obtenir le résultat.
Ok, j'attends pour continuer
La récupération des données dans l'exemple que tu proposes est faite sur plusieurs onglets d'un même classeur. Dans mon besoin, les données ont la même structure avec un nombre de ligne variable et positionnées dans plusieurs classeurs d'un même dossier.
Merci pour votre aide.