Vérifier si un fichier existe
Résolu
cletess
Messages postés
40
Statut
Membre
-
cletess Messages postés 40 Statut Membre -
cletess Messages postés 40 Statut Membre -
Bonjour,
J'ai un document source .xlsx reprenant les noms de toute une série d'autres documents .xlsx en colonne A.
J'ai la macro suivante qui ouvre successivement les fichiers .xlsx pour en extraire les données et les inclure dans le document source.
Cependant, certains noms de fichiers repris dans le document source n'existe pas et j'aimerai que la macro saute les cas concernés et ne traite que les fichiers qui existent réellement dans le répertoire.
Voici, ce que j'ai essayé mais rien ne se passe. Je n'ai pas de messages d'erreur mais la macro ne s'exécute pas. Auriez-vous des indications sur comment contourner ce problème ?
Merci infiniment !
CL
J'ai un document source .xlsx reprenant les noms de toute une série d'autres documents .xlsx en colonne A.
J'ai la macro suivante qui ouvre successivement les fichiers .xlsx pour en extraire les données et les inclure dans le document source.
Cependant, certains noms de fichiers repris dans le document source n'existe pas et j'aimerai que la macro saute les cas concernés et ne traite que les fichiers qui existent réellement dans le répertoire.
Voici, ce que j'ai essayé mais rien ne se passe. Je n'ai pas de messages d'erreur mais la macro ne s'exécute pas. Auriez-vous des indications sur comment contourner ce problème ?
Merci infiniment !
CL
Sub cletess()
Dim objFSO As Object
Dim objFolder As Object
Dim objSubFolder As Object
Dim e As Integer
Dim test As String
Dim wb As Workbook
Dim strFile As String
Dim strDir As String
Dim fdest As Worksheet, fsource As Worksheet
Dim dlig As Long
Dim sfich As String
Dim srow As Range
Dim crit(34) As String
Dim i As Integer
Dim skey, sval, cpath As String
cpath = ThisWorkbook.Path & "\"
Set fdest = ActiveSheet
For e = 1 To 34
crit(e) = fdest.Cells(1, 33 + e)
Next e
dlig = 2
sfich = fdest.Cells(dlig, 1)
test = cpath & sfich & ".xlsx"
Do While sfich <> ""
If Len(Dir(test)) = 0 Then
dlig = dlig + 1
sfich = fdest.Cells(dlig, 1)
Else
Set wb = Workbooks.Open(cpath & sfich & ".xlsx")
Set fsource = wb.Sheets(1)
For Each srow In fsource.UsedRange.Rows
skey = srow.Cells(1, 2)
sval = srow.Cells(1, 3)
For i = 1 To 34
If skey = crit(i) Then
fdest.Cells(dlig, 33 + i) = sval
Exit For
End If
Next i
Next srow
wb.Close
dlig = dlig + 1
sfich = fdest.Cells(dlig, 1)
End If
Loop
End Sub
A voir également:
- Vérifier si un fichier existe
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
2 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonsoir, je pense qu'il faut déplacer l'instruction en ligne 33 vers la ligne 37.
connais-tu la technique d'exécution en pas à pas? je pense que cela t'aidera à comprendre ce que fait ton code.
Débogage de VBA
connais-tu la technique d'exécution en pas à pas? je pense que cela t'aidera à comprendre ce que fait ton code.
Débogage de VBA
Un fois de plus, merci pour votre aide :)