Compilation de données de plusieurs classeur excel vers un seul

Résolu
med_mugen Messages postés 80 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
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
 

[/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:

1 réponse

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
bonjour

essaies
With ThisWorkbook.Worksheets("Base").Range ("Conso")
derlig = Cells.Find(what:="*",searchdirection:= xlPrevious).Row

.Range(derlig+1) = MonTableau 'MANQUE LA COLONNE
End with

petit +
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
0
med_mugen Messages postés 80 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour 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 ?
0
med_mugen Messages postés 80 Date d'inscription   Statut Membre Dernière intervention  
 
.Range(derlig+1) = MonTableau  'MANQUE LA COLONNE
End with
.

il s'agit de la première colonne du tableau, du coup dois simplement écrire
.Range(derlig+1, 1) ?

</j'ai essayé .range(derlig+1, numcolonn("A1")


Aussi derniere question,

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


je dois placer cette macro avant sub compilation n'est ce pas ?
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314 > med_mugen Messages postés 80 Date d'inscription   Statut Membre Dernière intervention  
 
.cells(derlig+1,1).
ou
.range("A" & derlig+1)
0
med_mugen Messages postés 80 Date d'inscription   Statut Membre Dernière intervention  
 
j vais essayer de vous envoyer un exemple dans quelques minutes car je n'arrive pas à comprendre pourquoi la macro ne s'enclenche pas, il n'y a même pas de msg d'erreur..
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314 > med_mugen Messages postés 80 Date d'inscription   Statut Membre Dernière intervention  
 
utilise la macro SOS_events que je t'ai donné (et j'y ai insérer un commentaire qui explique son utilité) :-(

c'est une routine qu'il prudent de copier dans un module chaque fois que tu écris un code avec
application.enableevents=false
0