Renommer un onlget via VBA

Résolu
Behippie Messages postés 14 Statut Membre -  
Behippie Messages postés 14 Statut Membre -
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 928 Statut Membre 289
 
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 Statut Membre
 
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