VBA chemin d'accés

[Fermé]
Signaler
-
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
-
Bonjour,
Je voudrais ouvrir un fichier normalisé en connaissant le dossier où il est stocké :

Sub op()
Nom_op = Range("G15")
Code_op = Range("H16")
CdP_tvx = Range("F14")
Jour = Day(Now) & Month(Now) & Year(Now)

Fichier = "BDO Validé " & Nom_op & " " & Code_op & " " & "_ " & CdP_tvx & " " & Jour & ".xls"
Chemin = "S:\DEP\_BDO zone d enregistrement\_BDO VALIDE zone d enregistrement"

Workbooks.Open Filename:=Chemin & "\" & Fichier
End Sub

Le problème est que la date de création de ce fichier figure dans le nom mais je ne la connais pas !
Il faudrait donc que je cherche le fichier sans la date.
Par exemple Fichier = "BDO Validé " & Nom_op & " " & Code_op & " " & "_ " & CdP_tvx & " " %%%%%% ".xls"
En clair il me faudrait le moyen de remplacer par des caractères aléatoires
Merci

2 réponses

Si tu connais le dossier, tu peux récupérer successivement le nom de chaque fichier par la commande Dir()
Une fois que tu as le nom, c'est gagné, non ?
Exemple (dans cet exemple je parcours tous les fichiers *.htm d'un dossier) :

Sub Toto()
' --------------------------------------------------------
' Répertoire des fichiers à modifier
Rep = "C:\Documents and Settings\x\Mes documents\Site\"
' Type des fichiers à modifier
Ext = "*.htm"
' Littéral source
Sour = "xxx"
' Littéral cible
Cibl = "zzz"
' --------------------------------------------------------
Fic = Dir(Rep + Ext)
Do While Fic <> ""
Documents.Open FileName:=(Rep + Fic), Format:=wdOpenFormatText
Selection.Find.Text = Sour
Selection.Find.Replacement.Text = Cibl
If Selection.Find.Execute = True Then
Selection.Find.Execute Replace:=wdReplaceAll
ActiveDocument.Save
End If
ActiveDocument.Close
Fic = Dir()
Loop
ActiveDocument.Close
End Sub
Je n'ai pas trés bien compris l'exemple mais je ne suis pas sur que ca corresponde a mon probleme :
En plus clair je dois ouvrir un fichier excel stocké dans une dossier connu.
Le nom du fichier est de type :

argument1argument2argument3.xls
________..________..________
connu........connu......inconnu

Il faudrait donc que je n'ai pas besoin de préciser l'argument3 dans le chemin du fichier à ouvrir (l'argument 3 est la date de création du fichier, il n est pas possible que si on ne précise pas la date, le dossier contienne 2 fichiers identiques).
> Karl
La commande Fic=Dir(dossier) te permets de recupérer le nom du fichier, tel qu'il existe dans le dossier. Tu la mets dans une boucle, où tu testes si Fic commence par Argument1Argument2. Si oui alors c'est le fichier à traiter. Tu n'as pas besoin de te soucier de la date de création.
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 171
Bonjour,

Il existe la fonction InStr() qui permet de vérifier si une chaine est contenu dans une autre chaine. La fonction retourne un Long qui correspond à la postion de la chaine à chercher. Si la fonction retourne 0, c'est que la chaine n'a pas été trouvée.

La syntaxe est : ret = InStr([start], [chaine1],[chaine2])

start = facultatif, donne la position d'où démarre le test.
chaine1 = obligatoire, chaine a tester
chaine2 = obligatoire, chaine rechercher.

exemple:
chaine1 = "Bonjour tout le monde"
chaine2 = "Bonjour"
ret = InStr(1, chaine1, chaine2)
If  ret <> 0 Then   'Si ret est différent de 0, la chaine a été trouvé
   msgBox "Bonjour, également"
else       'Sinon ret = 0, la chaine n'a pas été trouvée
   msgBox "Malpoli ..."
End If


;o)