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

1 réponse

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. med_mugen Messages postés 81 Statut Membre
       
      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
    2. med_mugen Messages postés 81 Statut Membre
       
      .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
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > med_mugen Messages postés 81 Statut Membre
       
      .cells(derlig+1,1).
      ou
      .range("A" & derlig+1)
      0
    4. med_mugen Messages postés 81 Statut Membre
       
      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
    5. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > med_mugen Messages postés 81 Statut Membre
       
      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