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 :
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
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.

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