Vérifier si pluisieurs noms de fichiers semblables existent
Résolu
36demi
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
36demi Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
36demi Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
J'ai un code qui permet de sauvegarder un fichier en ajoutant un suffixe lorsque le nom existe déjà.
À l'inverse, lorsque je veux ouvrir un fichier dont le nom est «ABCDEFG» et que j'ignore son suffixe ou s'il en a un.
Avec les versions 1997 et 2003, j'utilisais le code reproduit à la fin de ce message pour faire la recherhce. Avec la version 2010, l'instruction «Set fs = Application.FileSearch» provoque le message « erreur 445 cet objet ne gère pas cet action».
L'expression «Application.FileSearch» semble avoir disparu du language VB dans la version 2010. Merci à l'avance de partage vos connaissance à ce sujet.
Voici l'extrait du code qui pose problème.
Set fs = Application.FileSearch
With fs
.LookIn = FichierChemin
.Filename = FichierNom
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
nbFichier = .FoundFiles.Count
If nbFichier > 1 Then
FichierNomB = FichierNomB & nbFichier & ".xl*"
MsgBox "Ce dossier contient " & .FoundFiles.Count & _
" formulaire(s) semblable(s) à celui-ci. Le fichier " & FichierNomB & " a été sélectionné"
Else
FichierNomB = FichierNomB & ".xls"
End If
Else
MsgBox " Absent"
'FichierNom = FichierNom & ".xls"
End
End If
End With
À l'inverse, lorsque je veux ouvrir un fichier dont le nom est «ABCDEFG» et que j'ignore son suffixe ou s'il en a un.
Avec les versions 1997 et 2003, j'utilisais le code reproduit à la fin de ce message pour faire la recherhce. Avec la version 2010, l'instruction «Set fs = Application.FileSearch» provoque le message « erreur 445 cet objet ne gère pas cet action».
L'expression «Application.FileSearch» semble avoir disparu du language VB dans la version 2010. Merci à l'avance de partage vos connaissance à ce sujet.
Voici l'extrait du code qui pose problème.
Set fs = Application.FileSearch
With fs
.LookIn = FichierChemin
.Filename = FichierNom
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
nbFichier = .FoundFiles.Count
If nbFichier > 1 Then
FichierNomB = FichierNomB & nbFichier & ".xl*"
MsgBox "Ce dossier contient " & .FoundFiles.Count & _
" formulaire(s) semblable(s) à celui-ci. Le fichier " & FichierNomB & " a été sélectionné"
Else
FichierNomB = FichierNomB & ".xls"
End If
Else
MsgBox " Absent"
'FichierNom = FichierNom & ".xls"
End
End If
End With
A voir également:
- Vérifier si pluisieurs noms de fichiers semblables existent
- Verifier compatibilite windows 11 - Guide
- Vérifier si mot de passe piraté - Guide
- Explorateur de fichiers - Guide
- Renommer des fichiers en masse - Guide
- Verifier un lien - Guide
3 réponses
36demi
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
Désolé, ça ne fonctionne pas sous 2010.
Bonjour,
Sinon tu peux tester l'existence d'un fichier avec Dir() :
if Dir("C:\toto.xls")="" then msgbox "le fichier est introuvable!"
Je n'irais pas plus loin car je n'ai pas compris si tu voulais récupérer le dernier existant ou avoir le premier nom disponible.
eric
Sinon tu peux tester l'existence d'un fichier avec Dir() :
if Dir("C:\toto.xls")="" then msgbox "le fichier est introuvable!"
Je n'irais pas plus loin car je n'ai pas compris si tu voulais récupérer le dernier existant ou avoir le premier nom disponible.
eric
Bonjour,
Sous forme de fonction :
Je pense que tu n'auras pas de mal à l'intégrer.
Ca sera juste un peu plus lent que ta précédente solution.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(devise Shadok)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Sous forme de fonction :
Sub test() ' exemple d'appel Dim fich As String fich = dernierFichier("D:\tmp\", "test", ".xls") End Sub Function dernierFichier(FichierChemin As String, FichierNom As String, Extension As String) As String ' retourne le dernier nom indexé utilisé ' chaine vide si inexistant Dim Fichier As String, i As Long Fichier = FichierChemin & FichierNom Do dernierFichier = Dir(Fichier & IIf(i = 0, "", i) & Extension) If dernierFichier <> "" Then i = i + 1 Loop Until dernierFichier = "" i = i - 1 If i >= 0 Then dernierFichier = FichierNom & IIf(i = 0, "", i) & Extension End Function
Je pense que tu n'auras pas de mal à l'intégrer.
Ca sera juste un peu plus lent que ta précédente solution.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(devise Shadok)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci