Bonjour à toutes et à tous,
J'ai des fichiers excel à modifier (1 fichier = 1 onglet) et il y en a pas mal (presque 800).
J'ai une macro qui ouvre un par un tous les fichiers (et qui les referme au fur et à mesure), qui cherche dans la zone (A1:Z50) s'il y a une cellule avec la référence à modifier et qui remplace par la nouvelle référence. J'utilise la fonction find et cela marche très bien.
J'utilise une boucle pour vérifier s'il peut y avoir plusieurs cellule avec la référence à modifier => OK
Je profite de cette boucle pour créer un nouveau fichier et incrémenter son indice :
Les noms des fichiers sont toujours composés de la même manière : abcdef-1-10 => chaine de caractère, puis premier "-", puis chiffre (1,2 ou 3), puis deuxième "-" et le dernier nombre à incrémenter avec 1 ou 2 chiffre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ' récupération du nom du fichier nom_fichier = ActiveWorkbook.Name ' on retire .xls à la fin nom_fichier_avant = Left(nom_fichier, Len(nom_fichier) - 4) 'récupération de l'indice indice = InStr(8, nom_fichier_avant, "-") gauche = Left(nom_fichier_avant, indice) droite = Right(nom_fichier_avant, Len(nom_fichier_avant) - indice) + 1 nom_fichier_apres = gauche & droite
Mon problème réside dans la chaine de caractère, des fois c'est 4 caractères, des fois c'est 10. Je veux juste incrémenter le nombre après le 2ieme tiret.
Je me demande si je suis pas parti un peu dans une usine à gaz.
J'ai cherché une manière pour trouver l'emplacement directement du deuxième tiret indépendamment du noombre de caractère mais je sèche.
Dans mon exemple j'ai mis 8 pour la fonction instr parce que c'est ce qui fonctionne avec le test que j'ai fais mais je sais ce que cela ne fonctionnera pas si j'ai "abc-1-3"
Merci d'avance pour votre aide
Partager