VBA chemin d'accés

Karl -  
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

2 réponses

  1. ConsoMalin
     
    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
    0
    1. Karl
       
      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).
      0
      1. ConsoMalin > 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.
        0
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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)
    0