Création d'un onglet avec nomination variable

zoanthaire -  
biboupifa Messages postés 54 Statut Membre -
Bonjour,

Je n'arrive pas à trouver de solution pour ce que je souhaite faire :
L'objectif étant que la macro une fois activée crée un onglet avec le nom d'une cellule déterminée (ça j'ai réussi). Par contre si je réactive cette macro, il y a forcément un problème car l'onglet existe déjà. De ce fait je souhaite prévenir par le biais d'un message box pour prévenir l'utilisateur que l'onglet existe déjà et qu'il puisse avoir le choix de pouvoir le remplacer ou de créer une version (2) et là, malheureusement ça devient compliqué pour moi. Quelqu'un peut -il m'aider...

merci d'avance
A voir également:

3 réponses

scinarf Messages postés 1183 Statut Membre 252
 
dim i as integer
dim NomOnglet as String

nomOnglet = "ManouvelleFeuille"

for i = 1 to sheets.counter
if (sheets(i).name == nomOnglet) then
MSGbox "Le nom que vous proposez existe déjà il sera changé en " & nomOnglet & " (2)"
nomOblget = nomonglet & "(2)"
end if
next i

Dites moi si ca marche, logiquement il ne devrait pas y avoir d'erreur.
0
Mike-31 Messages postés 19571 Date d'inscription   Statut Contributeur Dernière intervention   5 138
 
Salut,

En supposant que le nom de la feuille se trouve en cellule A2 de la feuille active

Sub InsereFeuille()
Dim n As Integer, trouve As Boolean
For n = 1 To Sheets.Count
If Sheets(n).Name = [A2].Value Then
trouve = True
MsgBox "La feuille " & [A2].Value & " existe déjà"
Exit For
End If
Next n
If Not trouve Then Sheets.Add.Name = [A2].Value
End Sub
0
zoanthaire
 
J'ai essayé, mais cela ne fonctionne pas. j'ai noté ci-dessous le code que j'ai fait pour le moment. peut être que ce sera plus explicite.

Sub Renommer_onglet()

'avant il faudrait une condition qui ouvre la message box que dans le cas où l'onglet existe déjà
'ensuite :
If MsgBox("Cette préparation existe déjà, Voulez vous la remplacer", vbYesNo) = vbYes Then
Sheets("prepa_type").Select
Sheets("prepa_type").Copy After:=Sheets("prepa_type")
ActiveSheet.Name = Sheets("preparation").Range("D1") + " (V" + ")" + 'ici il me manque un code pour créer une numérotation pour chaque onglet identique : V1, V2, V3...
End If
Next
End Sub


J'espère que cela est assez explicite.
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 281
 
Bonjour,

et une 3ème proposition : une fonction.
Function existSheet(nomFeuille As String) As Long
    On Error Resume Next
    existSheet = Sheets(nomFeuille).Index
End Function

retourne 0 (False) si la feuille n'existe pas.

eric

0
biboupifa Messages postés 54 Statut Membre
 
Bonjour eriiic,

je n'arrive pas a comprendre ta fonction:

Dim NomFeuille As String
NomFeuille = "BDD_valeurs"
If Not existSheet(NomFeuille) Then
ActiveSheet.Name = NomFeuille
End If

c'est au niveau du code que je n'arrive pas a l'utiliser
cela me renvoi vrai ou faux et je n'arrive pas a m'en sortir

merci par avance
0
biboupifa Messages postés 54 Statut Membre
 
nan c'est bon j'ai compris pourquoi ca ne marchait pas :)
0