Ouvrir tout les fichiers qui se trouve dans un dossier
bonjour,
Je cherche à optimiser un fichier excel dans lequel, il faudrait que je puisse lister l'ensemble des fichiers se trouvant dans un dossier, puis d'ouvrir un à un ces fichiers pour copier coller les informations de la plage A1 à J600 sur un onglet bien définit. Après fermer ce classeur et refaire la meme chose avec tout les autres classeurs en copiant en dessous des premières infos
Mon début de code le voici
Sub ListingFichiers()
Dim Rep As String, Fichier As String Dim i As Integer
Rep = "C:\Users\l.guyonnet\Desktop\Perso\COMMANDE\Commandes\"
Fichier = Dir(Rep)
Do While Fichier <> ""
i = i + 1
Sheets("Liste_fichier").Range("A" & i) = Fichier
Fichier = Dir
Loop
End Sub
D'avance merci pour votre aide
Bonjour,
J'ai une première solution, mais il faut être devant le PC et faire quelque clics.
C'est du au fait que lorsque le programme tourne Visual Basic exécute bêtement sans voir un autre fichier s'ouvrir.
Le code :
Sub Test()
Dim objShell, objFolder, strFilename
Dim MonClasseur, Classeur As Workbook
Dim X As Byte
Set MonClasseur = ActiveWorkbook
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\Users\l.guyonnet\Desktop\Perso\COMMANDE\Commandes\")
i = 1
For Each strFilename In objFolder.Items
If Right(strFilename, 4) = ".xls" Or Right(strFilename, 5) = ".xlsx" Or Right(strFilename, 5) = ".xlsm" Then
With MonClasseur.Worksheets.Add
.Name = strFilename
End With
objShell.Open (strFilename)
NomdeFeuille = strFilename
X = 0
Do While X = 0
On Error Resume Next
X = Len(Workbooks(NomdeFeuille).Name)
Loop
Set Classeur = Workbooks(NomdeFeuille)
Classeur.ActiveSheet.Range("A1:J200").Copy
MonClasseur.Sheets(NomdeFeuille).Range("A1:J200").PasteSpecial
Application.DisplayAlerts = False
Classeur.Close
Application.DisplayAlerts = True
End If
Next
End Sub
Pour ne pas avoir de beug, j'ai étais obligé de mettre un débugger à cette ligne
X = Len(Workbooks(NomdeFeuille).Name)
D'attendre que le fichier s'ouvre, et une fois ouvert de faire F5 pour que le programme continu.
Etc pour chaque fichier.
D'ailleurs si quelqu'un sait pourquoi le programme réagit comme cela