Compilation de données de plusieurs classeur excel vers un seul
Résolu
med_mugen
Messages postés
81
Statut
Membre
-
michel_m Messages postés 18903 Statut Contributeur -
michel_m Messages postés 18903 Statut Contributeur -
Bonsoir toute communauté,
Je reviens vers vous afin que quelqu'un puisse me fournir une petite correction à ma macro pour que celle-ci puisse fonctionner.
Il s'agit d'une macro plutôt simple dans l'esprit ; dans un fichier déterminé (chemin déterminé par la macro) il existe plusieurs classeur excel au format de nom identique et dont la constitution (contenu) est également identique. Dans un autre fichier existe un classeur excel qui consolidera tous les autres.
Le but étant d'aller chercher les données d'un tableau d'une feuille contenue dans chaque classeur excel (nom de feuille est identique, format du tableau identique) et de compiler ces données à la suite dans un tableau du classeur consolidation (tableau toujours au même format).
voilà mon code
J'ai pour ce faire essayé d'utiliser des fonctions déjà présente dans mes classeurs et tenté d'obtenir le bon algorithme. Malheureusement, je pense que ma formule coince à partir de thisworkbook.worksheets("base")
Si une âme charitable pouvait m'éclairer ma lanterne pour continuer d'avancer, je lui en serai reconnaissant ^^.
Par avance merci pour votre contribution et votre disponibilité à tous et à toutes
Je reviens vers vous afin que quelqu'un puisse me fournir une petite correction à ma macro pour que celle-ci puisse fonctionner.
Il s'agit d'une macro plutôt simple dans l'esprit ; dans un fichier déterminé (chemin déterminé par la macro) il existe plusieurs classeur excel au format de nom identique et dont la constitution (contenu) est également identique. Dans un autre fichier existe un classeur excel qui consolidera tous les autres.
Le but étant d'aller chercher les données d'un tableau d'une feuille contenue dans chaque classeur excel (nom de feuille est identique, format du tableau identique) et de compiler ces données à la suite dans un tableau du classeur consolidation (tableau toujours au même format).
voilà mon code
[/contents/446-fichier-sub Sub] Compilation() Dim Fichier As String Dim Chemin As String Dim ClasseurSource As Workbook Dim valeur1 As String Dim MonTableau As Variant Application.DisplayAlerts = False 'Evite les messages d'Excel Application.EnableEvents = False 'Evite l'exécution éventuelle de macros liées aux fichiers ouverts valeur1 = Sheets("Base").Range("D2").Value Chemin = "J:\Rom France\France\WPP\" & valeur1 'Chemin du répertoire contenant les fichiers Fichier = Dir(Chemin & "*.xls*") Do While Fichier <> "" Set ClasseurSource = Workbooks.Open(Chemin & Fichier) MonTableau = ClasseurSource.Worksheets("Masterfile-valeurs").Range("Tableau5") ThisWorkbook.Worksheets("Base").Range ("Conso") derlig = Cells.Find("*", , , , xlByRows, xlPrevious).Row Range("derlig+1") = MonTableau ClasseurSource.Close Fichier = Dir Loop Application.EnableEvents = True Application.DisplayAlerts = True End Sub
J'ai pour ce faire essayé d'utiliser des fonctions déjà présente dans mes classeurs et tenté d'obtenir le bon algorithme. Malheureusement, je pense que ma formule coince à partir de thisworkbook.worksheets("base")
Si une âme charitable pouvait m'éclairer ma lanterne pour continuer d'avancer, je lui en serai reconnaissant ^^.
Par avance merci pour votre contribution et votre disponibilité à tous et à toutes
A voir également:
- Compilation de données de plusieurs classeur excel vers un seul
- Liste déroulante excel - Guide
- Trier des données excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Word et excel gratuit - Guide
1 réponse
bonjour
essaies
displayalerts à éviter
petite macro de dépannage évitant des sueurs froides
Michel
essaies
With ThisWorkbook.Worksheets("Base").Range ("Conso")petit +
derlig = Cells.Find(what:="*",searchdirection:= xlPrevious).Row
.Range(derlig+1) = MonTableau 'MANQUE LA COLONNE
End with
displayalerts à éviter
petite macro de dépannage évitant des sueurs froides
sub SOS_events()
'permet de rétablir les macros en cas de sortie accidentelle d'un code, enableevents étant désactivé
Application.EnableEvents = True
end sub
Michel
Tout d'abord merci d'avoir répondu à ma requête. Mais c 'est bizarre que je n'ai pas reçu d'alerte sur ma boite mail m'annonçant que quelqu'un avait répondu ?
il s'agit de la première colonne du tableau, du coup dois simplement écrire
.Range(derlig+1, 1) ?
Aussi derniere question,
je dois placer cette macro avant sub compilation n'est ce pas ?
ou
.range("A" & derlig+1)
c'est une routine qu'il prudent de copier dans un module chaque fois que tu écris un code avec
application.enableevents=false