francois31170
XLDnaute Nouveau
Bonjour
Je suis débutant niveau "0" sur vba excel, j'ai eu la chance de trouver sur le net la macro qui correspond à mon besoin.
Mais j'ai un probleme de débutant.
Cette macro ne fonctionne pas car elle n'a pas trouvé le dossier où chercher les fichiers.
Je ne sais pas où je dois renseigner le chemin du dossier, ni quelle est la bonne syntaxe. Ca fait 1 heure que je suis dessus à tout essayer, mais je suis tellement nul !!!
J'hésite entre la ligne 2 ('' Dossier = chemin d'accès aux fichiers ) et la ligne 12 (.LookIn = dossier)
Mon repertoire à analyser (où se trouve les fichiers) est sur c:\test.
Pouvez vous m'aider s'il vous plait ?
Sub test0()
'' Dossier = chemin d'accès aux fichiers
Dim i%, wbk As Workbook, Tmp As Workbook
On Error Resume Next 'pour éviter une éventuelle faute de frappe
If (GetAttr(dossier) And vbDirectory) = False Then
MsgBox "Le dossier " & dossier & " n'existe pas"
Exit Sub
End If
Set wbk = ThisWorkbook
With Application.FileSearch
.NewSearch
.LookIn = dossier
'.SearchSubFolders = True 'scanne les sous dossiers
'.FileType = msoFileTypeExcelWorkbooks 'cherche les .xls
.Filename = "*.xls"
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
'ouvre les classeurs trouvés
Set Tmp = Workbooks.Open(.FoundFiles(i))
'copie la plage utilisée de la feuille 1
Tmp.Sheets(1).UsedRange.Copy
' on se place sur la 1ere ligne vide de la feuille cible
wbk.Sheets("Liste").Activate
' Liste= feuille cible
Range("a1").Select
Range("A65536").End(xlUp).Select
If i > 1 Then ActiveCell.Offset(1, 0).Select ' on descent d'une ligne
LigneASupp = ActiveCell.Row
'la colle dans le classeur en cours
wbk.Sheets("Liste").Paste
' If i > 1 Then Rows(LigneASupp).Delete
' cette ligne ci dessus efface les entetes de colonne le cas echeant !!
'vide le presse-papiers
Application.CutCopyMode = False
'ferme le classeur copié
Tmp.Close False
Next i
End If
End With
'enregistrement et fermeture
wbk.Save 'As dossier & "\Sommaire"
' wbk.Close
Range("a1").Select
End Sub
Je suis débutant niveau "0" sur vba excel, j'ai eu la chance de trouver sur le net la macro qui correspond à mon besoin.
Mais j'ai un probleme de débutant.
Cette macro ne fonctionne pas car elle n'a pas trouvé le dossier où chercher les fichiers.
Je ne sais pas où je dois renseigner le chemin du dossier, ni quelle est la bonne syntaxe. Ca fait 1 heure que je suis dessus à tout essayer, mais je suis tellement nul !!!
J'hésite entre la ligne 2 ('' Dossier = chemin d'accès aux fichiers ) et la ligne 12 (.LookIn = dossier)
Mon repertoire à analyser (où se trouve les fichiers) est sur c:\test.
Pouvez vous m'aider s'il vous plait ?
Sub test0()
'' Dossier = chemin d'accès aux fichiers
Dim i%, wbk As Workbook, Tmp As Workbook
On Error Resume Next 'pour éviter une éventuelle faute de frappe
If (GetAttr(dossier) And vbDirectory) = False Then
MsgBox "Le dossier " & dossier & " n'existe pas"
Exit Sub
End If
Set wbk = ThisWorkbook
With Application.FileSearch
.NewSearch
.LookIn = dossier
'.SearchSubFolders = True 'scanne les sous dossiers
'.FileType = msoFileTypeExcelWorkbooks 'cherche les .xls
.Filename = "*.xls"
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
'ouvre les classeurs trouvés
Set Tmp = Workbooks.Open(.FoundFiles(i))
'copie la plage utilisée de la feuille 1
Tmp.Sheets(1).UsedRange.Copy
' on se place sur la 1ere ligne vide de la feuille cible
wbk.Sheets("Liste").Activate
' Liste= feuille cible
Range("a1").Select
Range("A65536").End(xlUp).Select
If i > 1 Then ActiveCell.Offset(1, 0).Select ' on descent d'une ligne
LigneASupp = ActiveCell.Row
'la colle dans le classeur en cours
wbk.Sheets("Liste").Paste
' If i > 1 Then Rows(LigneASupp).Delete
' cette ligne ci dessus efface les entetes de colonne le cas echeant !!
'vide le presse-papiers
Application.CutCopyMode = False
'ferme le classeur copié
Tmp.Close False
Next i
End If
End With
'enregistrement et fermeture
wbk.Save 'As dossier & "\Sommaire"
' wbk.Close
Range("a1").Select
End Sub