Création d'un onglet avec nomination variable

Fermé
zoanthaire - 27 mai 2013 à 13:01
biboupifa Messages postés 54 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 19 juillet 2013 - 19 juil. 2013 à 17:38
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 1119 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
27 mai 2013 à 14:03
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 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 110
27 mai 2013 à 14:06
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
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 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
27 mai 2013 à 14:48
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 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 19 juillet 2013
Modifié par biboupifa le 19/07/2013 à 17:09
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 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 19 juillet 2013
19 juil. 2013 à 17:38
nan c'est bon j'ai compris pourquoi ca ne marchait pas :)
0