Recherche multi critere et multi feuille

Re,
Oui ton lien est passé,
tu peut refaire maintenant en le plaçant en message privé

Re, donc je vais créer un nouveau lien pour la vrai matrice ou comment je vais procéder?

Re,
J’essaie d’expliquer encore le mieux.
Nous reprenons les 5 fichiers que j’ai envoyé hier. Le but est de les regrouper dans le fichier joint en se référant au en tête de colonnes et le fichier conso1 soit rempli automatiquement.
=> conso1.xlsx (10,8 Ko)

Merci beaucoup

Bonjour,

Voici le classeur pour la consolidation
Celui-ci doit être dans le même dossier des classeurs à traiter

MACRO :

Option Explicit

Sub RecapClasseur()
'Déclaration des variables
  Dim wb As Workbook, ws As Worksheet
  Dim fso, fdlr, wbFile
  Dim y%, wsLr%, x%, Col%, ColD%
  Dim NomClasseur$
  Application.ScreenUpdating = False 'Déactive le défilement écran
  Application.StatusBar = " Patientez pendant le traitement des données" 'Affiche dans la barre de Statut
  Application.Calculation = xlCalculationManual 'Passe en calcul manuel
  'Attribution des variables
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set fdlr = fso.getfolder(ThisWorkbook.Path)
  y = ThisWorkbook.Sheets("Dépot").Cells(Rows.Count, 1).End(xlUp).Row + 1
  
  For Each wbFile In fdlr.Files 'Boucle sur les classeurs du dossier
    If fso.getextensionname(wbFile.Name) = "xls" Then 'et sélectionne les fichiers à extention XLS
      Set wb = Workbooks.Open(wbFile.Path) 'Ouvre le classeur source
        For Each ws In wb.Sheets 'Boucle sur les onglets
          wsLr = ws.Cells(Rows.Count, 1).End(xlUp).Row 'Dernière ligne de l'onglet
            For x = 7 To wsLr 'boucle sur les données à copier
              ws.Range(Cells(x, 1), Cells(x, 5)).Copy ThisWorkbook.Sheets("Dépot").Cells(y, 1) 'Copie/Colle les 5 premières colonnes
              ColD = 6 'initialise la colonne suivante au classeur Destination
              For Col = 11 To ws.Cells(6, Columns.Count).End(xlToLeft).Column 'compte le nombre de colonne du classeur source
              If ws.Cells(6, Col).Value = ThisWorkbook.Sheets("Dépot").Cells(6, ColD).Value Then 'Si c'est le même intitulé
                ws.Cells(x, Col).Copy ThisWorkbook.Sheets("Dépot").Cells(y, ColD) 'copie/colle les données
                ColD = ColD + 1 'colonne suivante
              End If
              Next Col
              y = y + 1 'ligne suivante
            Next x
        Next ws
        wb.Close 'ferme le classeur
    End If
  Next wbFile
  Application.StatusBar = False 'Déactive la barre de statut
  Application.ScreenUpdating = True 'réactive le défilement écran
  Application.Calculation = xlCalculationAutomatic 'Réactive le calcul automatique
  MsgBox "Consolidation terminée ! ", vbInformation, "INFO" 'Affiche le message
End Sub

conso1.xlsm (24,0 Ko)

1 « J'aime »

Bonjour Mimimathy,
Merci pour votre réponse.
Les 4 fichier sont parmi les données source et comme j’ai dit auparavant, j’ai 120 fichiers sources et ce nombre pourra augmenter ultérieurement.
Est-ce que les codes sont les mêmes et il n’y a pas de problèmes sur les noms des fichiers sources.
Encore merci!

Les noms des fichiers sources sont:
1001 à 1005
2001 à 2015
3001 à 3006
4001 à 4007
5001 à 5007
7001 à 7011
8001 à 8006
9001 à 9008
10001 à 10014
11001 à 11016
12001 à 12006
13001 à 13010
au total ces 108 fichiers mais cela peut atteindre jusqu’à 120 fichiers
Cordialement!

Re,
Si tous les fichiers que tu traites ont les données à partir de la ligne 7, et que les données en colonne A à E sont identiques et qu’à partir de la colonne K jusqu’à la dernière colonne à traiter, les entêtes sont orthographiées à l’identique (même si l’ordre est différent), il n’y a aucun soucis.
Par contre, il faudra un peu de patience, car plus il y a de colonne à traiter de K à la dernière colonne, et plus les colonnes sont inversées, plus cela rallonge la durée .
Et tous les fichiers à traiter doivent être dans le même classeur

Re,
A propos de la dernière ligne de ta dernière réponse, les fichiers:(1001 à 1005 ;2001 à 2015; 3001 à 3006; 4001 à 4007; 5001 à 5007; 7001 à 7011 ; 8001 à 8006; 9001 à 9008; 10001 à 10014; 11001 à 11016; 12001 à 12006; 13001 à 13010 et le fichier conso ) doivent être dans un même dossier nommé par exemple traitement?
Merci

Re,
Tous les classeurs *.XLS sont dans le même dossier (que tu nommes comme tu veux) ainsi que le classeur que j’ai réalisé, qui lui est en *.XLSM

Exemple avec tes données Panda.rar

Re,
Une dernière question s’il vous plaît, et si je modifie le nom du classeur conso 1, est-ce qu’il y a de l’impact dans le traitement?

Re,
Non, mais ne pas renommer le nom de son onglet (Dépot)

Re,
Tous nos vifs remerciements pour votre collaboration,
Meilleures salutations,

Re,
Si on veut apprendre les VBA excel, comment puis-je faire?
Merci

Re,

Avoir une bonne logique puis, tutoriel YouTube - Forum - Livres

Commencer petit à petit en comprenant les principes de base

Le VBA ne peut s’apprendre en 15 jours, c’est tellement vaste

Re,
pour les vidéo you tube, il y a un adresse que vous proposez? parce qu’il y en a beaucoup.
Pour les livres, est-ce qu’on les achète ou comment? Je suis à Madagascar.
Merci

Re,

Quelques exemples, mais avec un peu de recherche, il y en a une multitude

https://www.amazon.fr/s/?ie=UTF8&keywords=livre+excel+vba&tag=googhydr0a8-21&index=aps&hvadid=173350489322&hvpos=1t1&hvnetw=g&hvrand=13792627237720223271&hvpone=&hvptwo=&hvqmt=e&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9056425&hvtargid=kwd-400301482525&ref=pd_sl_5n89wzfmvl_e

Re,
J’ai essayé le code que tu m’a envoyé mais en arrivant à la ligne 32 767, il y a un message de débogage “Dépassement de capacité” et le code suivant est coloré en jaune:
y=thisWorkbook.Sheets(“Dépôt”).Cells(Rows.count, 1).end"xlUp).Row+1

Comment faire svp?
Merci

Re,

Dans la macro (5ème ligne)
Remplace
Dim y%, wsLr%, x%, Col%, ColD%

par

Dim y&, wsLr&, x&, Col&, ColD&

Re,
C’est d’accord, je vais réessayer!

Re,
ça marche. une petite question, comment dois-je gérer le sous forme de tableau. je dois le supprimer ou arrêter à la ligne N° … .?
Merci