Renommer onglet et incrémenter

Bonjour!

Je reviens encore sur ce forum pour trouver de l'aide.

Je souhaiterai une macro qui copie un onglet (ça, c'est ok) et qui le renomme grâce à un TextBox (ça aussi, ça va) MAIS j'aimerai qu'il y ai une incrémentation si l'onglet existe déjà.

Je m'explique.

J'ai plusieurs chantiers (ex: A, B, C, ...) et j'aimerai qu'avec la macro, cela me nomme un onglet "A-1" pour le 1er chantier A (A entré dans la TextBox)

Puis, si je suis sur le chantier B, que ça me mette "B-1". Si je suis de nouveau sur le chantier A, ça me mette "A-2", etc.

Donc que ça copie un onglet existant en le renommant comme le TextBox, mais que si l'onglet existe déjà ("A") qu'il l'incrémente.

Je ne sais pas si je suis clair...

En tout cas merci beaucoup pour vos compétences, j'apprends de jour en jour.

Cordialement,

Benjamin

Salut,

Si tu nous fournissais ton fichier avec ta macro et ton TextBox, nous n'aurions pas besoin de les créer afin de continuer le travail

Peux-tu alors nous poster tout ça ?

Merci.

Bonsoir,

Oui pas de soucis, voilà le fichier!

Du coup, il faut cliquer dans "Nouvelle observation" et rentrer un numéro de gamme entre 1 et 50.

Si je rentre le 1, ça crée une feuille et la renomme la feuille G1-1 (ça c'est niquel)

Si entre temps je fais la gamme 2, ça crée une nouvelle feuille avec pour nom G2-2 (là il aurait fallu G2-1, car c'est la 1ere observation de la gamme 2)

Puis, si j'observe à nouveau la gamme 1, ça crée une nouvelle feuille G1-3 (alors qu'il faudrait G1-2).

Vous comprendrez (peut être) mieux avec le fichier.

Merci en tout cas!

Re,

Je dois te dire que tes macros font un peu peur Il me semble qu'il y a beaucoup de choses compliquées, voire inutiles.

Mais bon, j'ai essayé de remplacé ta ligne ActiveSheet.Name = Range("b13") par le code ci-dessous et ça semble fonctionner.

    'Passage Yvouille -----------------------------------------------DEBUT

    'ActiveSheet.Name = Range("b13")

    Dim x As Integer, Référence As String, Position_Tiret As Integer, Compteur As Integer
    For x = 1 To Sheets.Count
        Position_Tiret = WorksheetFunction.Search("-", Sheets(x).Name)
        Référence = Mid(Sheets(x).Name, 2, Position_Tiret - 2)
        If Référence = chantier Then Compteur = Compteur + 1
    Next x

    ActiveSheet.Name = "G" & chantier & "-" & Compteur + 1

    'Passage Yvouille -----------------------------------------------FIN

Si cela te convient, il est évident que la prochaine étape serait de classer les feuilles.

Cordialement.

Rah puré merci!!

Je pense bien que mes macros font peurs... C'est vraiment du bricolage, j'essaye de faire en sorte que ça marche, et je ne fais pas attention à la mise en forme ou aux raccourcis que je pourrais faire.

Je ne suis pas assez calé en VBA pour ça...

Par contre, je suis preneur de tes idées et remarques, ça m'aidera toujours à avancer!

Merci beaucoup déjà pour ce que tu as fait.

J'attends tes critiques

Re,

J'espère t'avoir bien compris : mon code fonctionne bien et te donne satisfaction, c'est bien ça ? Si oui, merci d'indiquer ce fil comme résolu.

Sinon, je ne vais pas me lancer dans le nettoyage de ton code Tant qu'il te convient comme ça, tant mieux

A te relire.

Oui ton code est niquel et me va complètement.

Mais juste pour info, tu peux me dire plus ou moins ce qu'il ne pas ?

Sans me le corriger, mais m'aiguiller.

Merci encore!

Salut

rouky07 a écrit :

tu peux me dire plus ou moins ce qu'il ne pas ?

Il me semble qu'il manque un mot

Finalement je pense que tes codes vont très bien, il n'y a rien à redire à leur sujet.

Bonne continuation.

Rechercher des sujets similaires à "renommer onglet incrementer"