Création d'un onglet avec nomination variable
zoanthaire
-
biboupifa Messages postés 54 Statut Membre -
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
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:
- Création d'un onglet avec nomination variable
- Creation compte gmail - Guide
- Création site web - Guide
- Création d'un compte google - Guide
- Rouvrir onglet fermé chrome - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
3 réponses
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.
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.
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
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
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.
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.
Bonjour,
et une 3ème proposition : une fonction.
retourne 0 (False) si la feuille n'existe pas.
eric
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
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
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