Dans cet article, nous examinerons un exemple de macro capable de rechercher des données dans de nombreux classeurs et d'enregistrer les informations sélectionnées dans un fichier de rapport distinct.
Pour cela, ouvrez votre livre, allez sur
Sub Report_file() 'moonexcel.com.ua Application.ScreenUpdating = False ' désactiver l'actualisation de l'écran Set report = Workbooks("Report.xlsb").Worksheets(1) find_field = report.[a1] ' ouvrir la boîte de dialogue de sélection des fichiers à importer FilesToOpen = Application.GetOpenFilename _ (FileFilter:="All files (*.*), *.*", _ MultiSelect:=True, Title:=" Sélectionnez les fichiers! ") If TypeName(FilesToOpen) = "Boolean" Then MsgBox " Aucun fichier sélectionné! " Exit Sub End If ' nous parcourons tous les fichiers sélectionnés un par un m = 1 While m <= UBound(FilesToOpen) Set importWB = Workbooks.Open(Filename:=FilesToOpen(m)) Set importWS = importWB.Worksheets(1) ' nous battons les cellules" Chapeaux " For Each cell2 In report.Range(report.Cells(1, 2), report.Cells(1, report.UsedRange.Columns.Count)) On Error Resume Next: Err.Clear ' chercher du sens dans un livre ouvert tr = importWS.UsedRange.Find(find_field).Row tc = importWS.UsedRange.Find(find_field).Column x = importWS.Range(importWS.Cells(tr, tc), importWS.Cells(20000, tc)).Find(report.Cells(m + 1, 1).Value).Row y = importWS.UsedRange.Find(cell2.Value).Column ' transférer les valeurs trouvées dans le fichier de rapport report.Cells(m + 1, cell2.Column).Value = importWS.Cells(x, y).Value Next importWB.Close savechanges:=False m = m + 1 Wend Application.ScreenUpdating = True End Sub
Après cela, vous pouvez revenir à Excel et exécuter notre macro via le menu