Utilisation de la fonction DIR

Bonjour.

J'ai vu une fonction VBA qui permettait de lire les noms de fichiers dans un répertoire: la fonction DIR.

Je l'ai utilisée pour ouvrir tous les fichiers d'un répertoire, un par un, sans me soucier de leur nom.

En fonction de ce que j'ai pu trouvé à l'intérieur de ces fichiers, je les ai renommés en ajoutant au nom de fichier un suffixe.

Exemple: fichier d'origine 068399.xlsx (toujours 6 digits) renommé en 068399_PAS STD.xlsx.

J'ai maintenant besoin d'aller mettre à jour CERTAINS (pas tous !) de ces fichiers.

Je souhaite donc "retrouver" ces fichiers pour les ouvrir via une variable qui stocke le nom d'origine du fichier (sans le suffixe que j'ai moi-même rajouté). De plus des xls cohabitent avec des xlsx.

Voici ce que j'ai trouvé sur la toile et qu'il me plaisait bien d'adapter à mon cas:

Dir("C:\in*.doc")

Result: "instructions.doc"

J'ai :

  • une variable PathCarnet qui stocke le chemin d'accès invariable au répertoire
  • Une variable qui stocke le nom du fichier sans le suffixe

J'ai donc tenté ça:

CarnetName = TabSNcompteur(i, 4)
CarnetName = Dir(PathCarnet & CarnetName & "*.xsl")
Set CarnetToUpdate = Application.Workbooks.Open(Filename:=PathCarnet & CarnetName & ".xlsx") 'je set mon classeur Reporting Carnets Métro

Mais, je vous le donne en mille Émile, ça ne fonctionne pas !

Sa vous avez quelques propositions constructives, je vous saurais gré...

Merci d'avance.

bonjour,

tu as écritin*.xsl au lieu dein*.xls*

vérifie aussi que ta variable PathCarnet contient bien une valeur qui se termine par "\"

Je me déteste...

Merci h2so4 !

Je me jetterais bien dans un bain d'acide sulfurique...


Ben non, en fait.

Il ne trouve pas le fichier suffixé dont le nom est 068399_PAS STD.xlsx

For i = 1 To NbLineSheetReporting
CarnetName = TabSNcompteur(i, 4) 'Ici CarnetName vaut 068399
CarnetName = Dir(PathCarnet & CarnetName & "*.xls*") ' Ici j'ai "T:\Carnets\Production_TEST3\068399.xlsx*.xsl"
Set CarnetToUpdate = Application.Workbooks.Open(Filename:=PathCarnet & CarnetName) 'je set mon classeur Reporting Carnets Métro
Next

J'aimerais bien que la 2ème occurrence de ma variable CarnetName stocke :

"T:\Carnets\Production_TEST3\068399_PAS STD.xlsx"

J'ai trouvé le subterfuge comme un grand !

Allez, bande de veinards: c'est cadeau (un peu d'auto-satisfaction, c'est bon, non ? Quand je vois le nb de fois où je me flagelle.)

For i = 1 To NbLineSheetReporting
CarnetName = TabSNcompteur(i, 4)
CarnetName = CarnetName & "*" 'La subtilité
CarnetName = Dir(PathCarnet & CarnetName & ".xls*")
Set CarnetToUpdate = Application.Workbooks.Open(Filename:=PathCarnet & CarnetName) 'je set mon classeur Reporting Carnets Métro
Next
Rechercher des sujets similaires à "utilisation fonction dir"