Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA commande Kill évitez le message d'erreur si le dossier est vide

5 réponses
Avatar
Céline Brien
Bonjour à tous,
Ici, dans les Laurentides, 90 Km au nord de Montréal, c'est l'hiver !
Toutes les branches des arbres sont couvertes de neige. C'est féérique !
Dans une macro j'utilise la commande Kill pour effacer les fichiers Excel
d'un dossier.
Kill "R:\Report\Fev\*.xls"
Dans certaines circonstances, le dossier peut ne PAS contenir de fichiers
Excel.
J'obtiens alors un message d'erreur "Fichier Introuvable" et l'exécution de
la macro prend fin.
Comment éviter le message d'erreur et assurer la poursuite de l'exécution de
la macro.
J'ai essayé "On error resume next" sans succès.
Merci de votre aide,
Céline

5 réponses

Avatar
MichDenis
if dir("R:ReportFev*.xls")<>"" then
Kill "R:ReportFev*.xls"
end if


"Céline Brien" a écrit dans le message de news:

Bonjour à tous,
Ici, dans les Laurentides, 90 Km au nord de Montréal, c'est l'hiver !
Toutes les branches des arbres sont couvertes de neige. C'est féérique !
Dans une macro j'utilise la commande Kill pour effacer les fichiers Excel
d'un dossier.
Kill "R:ReportFev*.xls"
Dans certaines circonstances, le dossier peut ne PAS contenir de fichiers
Excel.
J'obtiens alors un message d'erreur "Fichier Introuvable" et l'exécution de
la macro prend fin.
Comment éviter le message d'erreur et assurer la poursuite de l'exécution de
la macro.
J'ai essayé "On error resume next" sans succès.
Merci de votre aide,
Céline
Avatar
anonymousA
Bonjour,

si tu places l'instruction On error resume next avant le Kill, il n'y
aucune raison apparente pour que ca ne fonctionne pas.Il doit y avoir
autre chose !!

A+


Bonjour à tous,
Ici, dans les Laurentides, 90 Km au nord de Montréal, c'est l'hiver !
Toutes les branches des arbres sont couvertes de neige. C'est féérique !
Dans une macro j'utilise la commande Kill pour effacer les fichiers Excel
d'un dossier.
Kill "R:ReportFev*.xls"
Dans certaines circonstances, le dossier peut ne PAS contenir de fichiers
Excel.
J'obtiens alors un message d'erreur "Fichier Introuvable" et l'exécution de
la macro prend fin.
Comment éviter le message d'erreur et assurer la poursuite de l'exécution de
la macro.
J'ai essayé "On error resume next" sans succès.
Merci de votre aide,
Céline





Avatar
Céline Brien
Bonjour à tous,
Bonjour MichDenis,
Merci pour ta réponse.
Le tout fonctionne très bien ;-)
J'ai une autre question si tu permets.
Toujours dans ma macro, je voudrais vérifier l'existence du dossier
R:ReportFev
et, s'il n'existe pas, le créer.
Merci encore pour ta réponse et bon vendredi 13,
Céline

"MichDenis" a écrit dans le message de news:

if dir("R:ReportFev*.xls")<>"" then
Kill "R:ReportFev*.xls"
end if


"Céline Brien" a écrit dans le message de
news:

Bonjour à tous,
Ici, dans les Laurentides, 90 Km au nord de Montréal, c'est l'hiver !
Toutes les branches des arbres sont couvertes de neige. C'est féérique !
Dans une macro j'utilise la commande Kill pour effacer les fichiers Excel
d'un dossier.
Kill "R:ReportFev*.xls"
Dans certaines circonstances, le dossier peut ne PAS contenir de fichiers
Excel.
J'obtiens alors un message d'erreur "Fichier Introuvable" et l'exécution
de
la macro prend fin.
Comment éviter le message d'erreur et assurer la poursuite de l'exécution
de
la macro.
J'ai essayé "On error resume next" sans succès.
Merci de votre aide,
Céline






Avatar
MichDenis
Tu colles la fonction dans un module standard, la fonction
peut créer un répertoire et des sous-répertoires

Exemple : Elle crée la totalité du chemin si absent ou
ne crée rien si déjà présent.
'---------------------------------
Sub test()
Dim Dossier As String

Dossier = "c:dossier1dossier2dossier3"

End Sub
'---------------------------------

'--------------------------------
Function MakeDirEx(DirPath$) As Boolean
Dim i%, tmp, Arr

If InStr(1, DirPath, ":") = 0 Then
Arr = Split(CurDir & DirPath, "")
Else: Arr = Split(DirPath, "")
End If

tmp = Arr(0)
For i = LBound(Arr) + 1 To UBound(Arr)
If Arr(i) <> "" Then
tmp = tmp & "" & Arr(i)
On Error Resume Next
MkDir tmp
On Error GoTo 0
End If
Next

If Dir(DirPath, vbDirectory) = "" Then
On Error Resume Next
RmDir Arr(0) & "" & Arr(1)
On Error GoTo 0
Else
MakeDirEx = True
End If

End Function
'--------------------------------




"Céline Brien" a écrit dans le message de news:

Bonjour à tous,
Bonjour MichDenis,
Merci pour ta réponse.
Le tout fonctionne très bien ;-)
J'ai une autre question si tu permets.
Toujours dans ma macro, je voudrais vérifier l'existence du dossier
R:ReportFev
et, s'il n'existe pas, le créer.
Merci encore pour ta réponse et bon vendredi 13,
Céline

"MichDenis" a écrit dans le message de news:

if dir("R:ReportFev*.xls")<>"" then
Kill "R:ReportFev*.xls"
end if


"Céline Brien" a écrit dans le message de
news:

Bonjour à tous,
Ici, dans les Laurentides, 90 Km au nord de Montréal, c'est l'hiver !
Toutes les branches des arbres sont couvertes de neige. C'est féérique !
Dans une macro j'utilise la commande Kill pour effacer les fichiers Excel
d'un dossier.
Kill "R:ReportFev*.xls"
Dans certaines circonstances, le dossier peut ne PAS contenir de fichiers
Excel.
J'obtiens alors un message d'erreur "Fichier Introuvable" et l'exécution
de
la macro prend fin.
Comment éviter le message d'erreur et assurer la poursuite de l'exécution
de
la macro.
J'ai essayé "On error resume next" sans succès.
Merci de votre aide,
Céline






Avatar
Céline Brien
Bonjour à tous,
Bonjour MichDenis,
Merci beaucoup pour ta réponse très complète.
J'ai utilisé les codes proposés par Jacky, mais je vais garder précieusement
ces codes dans ma banque de macros Excel.
Merci encore et bon samedi,
Céline

"MichDenis" a écrit dans le message de news:

Tu colles la fonction dans un module standard, la fonction
peut créer un répertoire et des sous-répertoires

Exemple : Elle crée la totalité du chemin si absent ou
ne crée rien si déjà présent.
'---------------------------------
Sub test()
Dim Dossier As String

Dossier = "c:dossier1dossier2dossier3"

End Sub
'---------------------------------

'--------------------------------
Function MakeDirEx(DirPath$) As Boolean
Dim i%, tmp, Arr

If InStr(1, DirPath, ":") = 0 Then
Arr = Split(CurDir & DirPath, "")
Else: Arr = Split(DirPath, "")
End If

tmp = Arr(0)
For i = LBound(Arr) + 1 To UBound(Arr)
If Arr(i) <> "" Then
tmp = tmp & "" & Arr(i)
On Error Resume Next
MkDir tmp
On Error GoTo 0
End If
Next

If Dir(DirPath, vbDirectory) = "" Then
On Error Resume Next
RmDir Arr(0) & "" & Arr(1)
On Error GoTo 0
Else
MakeDirEx = True
End If

End Function
'--------------------------------




"Céline Brien" a écrit dans le message de
news:

Bonjour à tous,
Bonjour MichDenis,
Merci pour ta réponse.
Le tout fonctionne très bien ;-)
J'ai une autre question si tu permets.
Toujours dans ma macro, je voudrais vérifier l'existence du dossier
R:ReportFev
et, s'il n'existe pas, le créer.
Merci encore pour ta réponse et bon vendredi 13,
Céline

"MichDenis" a écrit dans le message de news:

if dir("R:ReportFev*.xls")<>"" then
Kill "R:ReportFev*.xls"
end if


"Céline Brien" a écrit dans le message de
news:

Bonjour à tous,
Ici, dans les Laurentides, 90 Km au nord de Montréal, c'est l'hiver !
Toutes les branches des arbres sont couvertes de neige. C'est féérique !
Dans une macro j'utilise la commande Kill pour effacer les fichiers Excel
d'un dossier.
Kill "R:ReportFev*.xls"
Dans certaines circonstances, le dossier peut ne PAS contenir de fichiers
Excel.
J'obtiens alors un message d'erreur "Fichier Introuvable" et l'exécution
de
la macro prend fin.
Comment éviter le message d'erreur et assurer la poursuite de l'exécution
de
la macro.
J'ai essayé "On error resume next" sans succès.
Merci de votre aide,
Céline