Renommer un onlget via VBA

Résolu/Fermé
Behippie Messages postés 14 Date d'inscription mardi 18 août 2009 Statut Membre Dernière intervention 31 janvier 2011 - 9 mars 2010 à 14:45
Behippie Messages postés 14 Date d'inscription mardi 18 août 2009 Statut Membre Dernière intervention 31 janvier 2011 - 21 juin 2010 à 10:46
Bonjour à tous,

Voici mon problème:

J'ai créer une macro qui copie mon onglet "Modèle" et qui le renomme d'après les valeurs des cellules E2 et E3 se trouvant dans l'onglet "Données" (ex.: cellule E3 = "Sacha" cellule E2 = "TOUILLE").

En claire ça donne ceci :

Sheets("Modèle").Copy After:=Sheets(Sheets.Count)
' Crée une copie du modèle

Sheets("Modèle (2)").Name = Sheets("Données").Range("E3").Text + " " + Sheets("Données").Range
("E2").Text
' Renomme l'onglet "Sacha TOUILLE"

Malheureusement, si je relance la macro, il y a un blocage car l'onglet "Sacha TOUILLE" existe déjà....

Que faut-il rajouter (boucle ou autre) pour que la macro vérifie si un onglet "Sacha TOUILLE" existe déjà (dans ce cas, elle crée un onglet "Sacha TOUILLE2") et si ce n'est pas le cas et le crée normalement...

Comme lorque l'on crée un nouvelle onglet, l'onglet "Feuil1" apparaît, si on le copie il devient, "Feuil1 (2)"

J'éspère avoir été suffisament claire!!?!!? :-(

Par avance, merci pour votre aide

2 réponses

Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
9 mars 2010 à 21:30
Bonjour,
Tu peux créer une fonction qui test l'existance de ton onglet.

Function Onglet_existe(Nom As String)
Dim feuille as WorkSheet
Dim Existe as Boolean
Existe = False
For Each feuille In ActiveWorkbook.Sheets
   If feuille.Name = Nom Then
      Existe = True
   End If
Next feuille
Onglet_existe = Existe
End Function

Une fois que cette fonction est créée, tu peux ajouter dans ton code :
i=1
If Onglet_existe("Sacha Touille") Then
   While Onglet_existe("Sacha Touille" & i)
      i=i+1
   Wend
   Sheets("Modèle (2)").Name = "Sacha Touille" & i
Else
   Sheets("Modèle (2)").Name = "Sacha Touille"
End If


J'ai mis Sacha Touille pour plus de clarté, mais tu peux remplacer par ta syntaxe dépendant des cellules.

Remarque : j'utilise & plutôt que + pour concaténer 2 chaînes je le trouve moins ambigu.
1
Behippie Messages postés 14 Date d'inscription mardi 18 août 2009 Statut Membre Dernière intervention 31 janvier 2011
21 juin 2010 à 10:46
Ca marche au top....

Ta macro est parfaite et je te remercie infiniement Gord21 pour avoir pris de ton temps afin de m'aider...

:-) à bientôt
0