Bonjour !
J'espère que vous avez passé un bon week-end !
Je reviens vers vous car, débutant dans excel, je cherche à créer une macro afin de consolider plusieurs fichiers de différents dossiers, et après avoir cherché des informations à gauche à droite, je me retrouve avec les codes ci-dessous :
	
	
	
	
	
		
et
	
	
	
	
	
		
Ces macros ont pour objectif de sélectionner le contenu de la cellule f4 de chaque fichier dans le dossier spécifié manuellement et de les mettre en colonne.
Après pour être tout à fait honnête je n'en comprends pas les 3/4 mais j'essaye...
Mon but est de : Indiquer un chemin d'accès (ex : C:\Users\etn\Downloads\PRENOM) pour chaque macro (un différent pour chaque macro), à la place de les sélectionner manuellement.
Et dans un 2e temps qu'elles s'exécutent en même temps (plutôt que de les lancer une par une), et si possible les avoir sur une feuille différente.
J'espère avoir été clair et si vous avez la moindre questions n'hésitez pas je répondrai le plus rapidement possible.
Merci d'avance.
	
		
			
		
		
	
				
			J'espère que vous avez passé un bon week-end !
Je reviens vers vous car, débutant dans excel, je cherche à créer une macro afin de consolider plusieurs fichiers de différents dossiers, et après avoir cherché des informations à gauche à droite, je me retrouve avec les codes ci-dessous :
		Code:
	
	
	Private Function ChoisirDossier() As String
 Dim objShell
 Dim objFolder
 Set objShell = CreateObject("Shell.Application")
 Set objFolder = objShell.BrowseForFolder _
     (&H0&, "Sélectionnez un Dossier", &H1&)
 On Error GoTo Erreur
 ChoisirDossier = objFolder.ParentFolder _
     .ParseName(objFolder.Title).Path & ""
 Exit Function
Erreur:
 ChoisirDossier = ""
 End Function
 Sub PRENOM()
 Dim FSO 'As Scripting.FileSystemObject
 Dim SourceFolder 'As Scripting.Folder
 Dim FileItem 'As Scripting.File
 Dim chemin$
 Dim T()
 Dim cpt&
 Dim g&
 Dim i&
 Dim j&
 Dim Lig&
 Dim var
 Dim WB As Workbook
 Dim S As Worksheet
 Dim DEST As Worksheet
 Dim Info(1 To 1, 1 To 26)
 '------------
 chemin$ = ChoisirDossier
 If chemin$ = "" Then Exit Sub
 Set FSO = CreateObject("Scripting.FileSystemObject")
 Set SourceFolder = FSO.GetFolder(chemin$)
 If SourceFolder.Files.Count = 0 Then Exit Sub
 For Each FileItem In SourceFolder.Files
   If LCase(Right(FileItem.Name, 4)) = ".xls" Then
     cpt& = cpt& + 1
     ReDim Preserve T(1 To cpt&)
     T(cpt&) = chemin$ & "\" & FileItem.Name
   End If
 Next FileItem
 Set FileItem = Nothing
 Set SourceFolder = Nothing
 Set FSO = Nothing
 '------------
 Application.ScreenUpdating = False
 Set DEST = Sheets.Add
 Lig& = 1
 For g& = 1 To UBound(T)
   Set WB = GetObject(T(g&))
   Set S = WB.Sheets("PRENOM")
   Info(1, 1) = S.Range("f4")
   WB.Close
   Set WB = Nothing
   Lig& = Lig& + 1
   DEST.Range(DEST.Cells(Lig&, 1), _
         DEST.Cells(Lig&, UBound(Info, 2))) = Info
   Erase Info
 Next g&
 var = Array("PRENOM")
 With DEST
   .Range(.Cells(1, 1), .Cells(1, UBound(var) + 1)) = var
   .Range("a1").Interior.ColorIndex = 6
 End With
 Application.ScreenUpdating = False
 Exit Sub
Erreur:
 Application.ScreenUpdating = False
 MsgBox "Erreur " & Err.Number & vbCrLf & Err.Description
 End Sub
	et
		Code:
	
	
	Private Function ChoisirDossier() As String
 Dim objShell
 Dim objFolder
 Set objShell = CreateObject("Shell.Application")
 Set objFolder = objShell.BrowseForFolder _
     (&H0&, "Sélectionnez un Dossier", &H1&)
 On Error GoTo Erreur
 ChoisirDossier = objFolder.ParentFolder _
     .ParseName(objFolder.Title).Path & ""
 Exit Function
Erreur:
 ChoisirDossier = ""
 End Function
 Sub NOM()
 Dim FSO 'As Scripting.FileSystemObject
 Dim SourceFolder 'As Scripting.Folder
 Dim FileItem 'As Scripting.File
 Dim chemin$
 Dim T()
 Dim cpt&
 Dim g&
 Dim i&
 Dim j&
 Dim Lig&
 Dim var
 Dim WB As Workbook
 Dim S As Worksheet
 Dim DEST As Worksheet
 Dim Info(1 To 1, 1 To 26)
 '------------
 chemin$ = ChoisirDossier
 If chemin$ = "" Then Exit Sub
 Set FSO = CreateObject("Scripting.FileSystemObject")
 Set SourceFolder = FSO.GetFolder(chemin$)
 If SourceFolder.Files.Count = 0 Then Exit Sub
 For Each FileItem In SourceFolder.Files
   If LCase(Right(FileItem.Name, 4)) = ".xls" Then
     cpt& = cpt& + 1
     ReDim Preserve T(1 To cpt&)
     T(cpt&) = chemin$ & "\" & FileItem.Name
   End If
 Next FileItem
 Set FileItem = Nothing
 Set SourceFolder = Nothing
 Set FSO = Nothing
 '------------
 Application.ScreenUpdating = False
 Set DEST = Sheets.Add
 Lig& = 1
 For g& = 1 To UBound(T)
   Set WB = GetObject(T(g&))
   Set S = WB.Sheets("NOM")
   Info(1, 1) = S.Range("f4")
   WB.Close
   Set WB = Nothing
   Lig& = Lig& + 1
   DEST.Range(DEST.Cells(Lig&, 1), _
         DEST.Cells(Lig&, UBound(Info, 2))) = Info
   Erase Info
 Next g&
 var = Array("NOM")
 With DEST
   .Range(.Cells(1, 1), .Cells(1, UBound(var) + 1)) = var
   .Range("a1").Interior.ColorIndex = 6
 End With
 Application.ScreenUpdating = False
 Exit Sub
Erreur:
 Application.ScreenUpdating = False
 MsgBox "Erreur " & Err.Number & vbCrLf & Err.Description
 End Sub
	Ces macros ont pour objectif de sélectionner le contenu de la cellule f4 de chaque fichier dans le dossier spécifié manuellement et de les mettre en colonne.
Après pour être tout à fait honnête je n'en comprends pas les 3/4 mais j'essaye...
Mon but est de : Indiquer un chemin d'accès (ex : C:\Users\etn\Downloads\PRENOM) pour chaque macro (un différent pour chaque macro), à la place de les sélectionner manuellement.
Et dans un 2e temps qu'elles s'exécutent en même temps (plutôt que de les lancer une par une), et si possible les avoir sur une feuille différente.
J'espère avoir été clair et si vous avez la moindre questions n'hésitez pas je répondrai le plus rapidement possible.
Merci d'avance.