VBA chemin d'accés
Karl
-
Polux31 Messages postés 7219 Statut Membre -
Polux31 Messages postés 7219 Statut Membre -
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
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
A voir également:
- VBA chemin d'accés
- Acces rapide - Guide
- Accès refusé - Guide
- Accès presse papier - Guide
- Messagerie free aucun code d'accès n'a été configuré - Forum Free mobile
- Trousseau d'accès iphone - Guide
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
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
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:
;o)
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)
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).