Feuilles nommer avec le même nom
Résolu
Mimi
-
Mimi -
Mimi -
Bonjour,
J'ai un code qui me permet de nommer une feuille selon le contenu de combobox...
Je souhaiterai rajouter une vérification et si une feuille à déjà la même nom un message d'erreur, qui ne rentre pas dans le débogage.
Sub NOMMER()
'
Dim nommerfeuille As String
Sheets("MODELE (2)").Select
nommerfeuille = Left(UserForm2.ComboBox1.Text, 3) & " - " & Left(UserForm2.ComboBox2.Text, 25)
Sheets("MODELE (2)").Name = nommerfeuille
ActiveSheet.Shapes.Range(Array("TextBox 3")).Select
ActiveWorkbook.Protect ("Toto"), Structure:=True, Windows:=True
End Sub
Merci d'avance,
J'ai un code qui me permet de nommer une feuille selon le contenu de combobox...
Je souhaiterai rajouter une vérification et si une feuille à déjà la même nom un message d'erreur, qui ne rentre pas dans le débogage.
Sub NOMMER()
'
Dim nommerfeuille As String
Sheets("MODELE (2)").Select
nommerfeuille = Left(UserForm2.ComboBox1.Text, 3) & " - " & Left(UserForm2.ComboBox2.Text, 25)
Sheets("MODELE (2)").Name = nommerfeuille
ActiveSheet.Shapes.Range(Array("TextBox 3")).Select
ActiveWorkbook.Protect ("Toto"), Structure:=True, Windows:=True
End Sub
Merci d'avance,
A voir également:
- Feuilles nommer avec le même nom
- Comment faire un livret avec des feuilles a4 - Guide
- Bruler des feuilles de laurier - Guide
- Changer le nom de son iphone - Guide
- Nom sonnerie iphone - Forum iPhone
- Dans le document à télécharger, trouvez les lettres situées derrière les rectangles pour reconstituer le nom du chat. comment s'appelle-t-il ? - Forum InDesign
13 réponses
Bonjour,
Voir boucle sur les feuilles du classeur et adapter:
https://silkyroad.developpez.com/vba/boucles/#LII
Voir boucle sur les feuilles du classeur et adapter:
https://silkyroad.developpez.com/vba/boucles/#LII
J'ai essayé d'ajouter le code :
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name = nommerfeuille Then Exit For
msgbox "Une feuille porte le même nom"
Next Ws
Mais cela ne fonctionne pas...
Si une page a le même nom le message apparait plusieurs fois
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name = nommerfeuille Then Exit For
msgbox "Une feuille porte le même nom"
Next Ws
Mais cela ne fonctionne pas...
Si une page a le même nom le message apparait plusieurs fois
Il y a pas mal d’incohérences dans ton code, cela ne risque pas de marcher.
Met Option Explicit en haut du module, cela te signalera tes erreurs:
If sans End If
Après Exit For tu ne peux pas avoir de message
Met Option Explicit en haut du module, cela te signalera tes erreurs:
If sans End If
Après Exit For tu ne peux pas avoir de message
Option Explicit Dim Ws As Worksheet For Each Ws In ThisWorkbook.Worksheets If Ws.Name = nommerfeuille Then MsgBox "Une feuille porte le même nom" Else 'code End If Next Ws
Le fichier est assez "conséquent", excusez moi d'ores et déjà pour ma piteuse utilisation de VBA (je suis en phase d'apprentissage !)
Après avoir lu le lien conseillé il vaut peut-être mieux mettre la vérification du nom sur les OK des userform 1 et 2 ?
http://www.cjoint.com/c/GJxnDLrwPOw
Merci encore de votre aide, et si je suis un cas désespérée je comprendrai !
Après avoir lu le lien conseillé il vaut peut-être mieux mettre la vérification du nom sur les OK des userform 1 et 2 ?
http://www.cjoint.com/c/GJxnDLrwPOw
Merci encore de votre aide, et si je suis un cas désespérée je comprendrai !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Cette fois ça devrait fonctionner ! Il est pas gros 135Ko...
Voici le lien :
https://mon-partage.fr/f/WhCp5GCA/
Voici le lien :
https://mon-partage.fr/f/WhCp5GCA/
Je ne vais pas me plonger dans le fonctionnement de ce classeur, cela me prendrait trop de temps.
Par contre en changeant cela, ça devrait marcher.
Si il y a un bug dans une autre macro, me le signaler, je verrais au cas par cas:
Par contre en changeant cela, ça devrait marcher.
Si il y a un bug dans une autre macro, me le signaler, je verrais au cas par cas:
Sub NOMMER() Dim nommerfeuille As String Sheets("MODELE (2)").Select nommerfeuille = Left(UserForm2.ComboBox1.Text, 3) & " - " & Left(UserForm2.ComboBox2.Text, 25) For Each Ws In ThisWorkbook.Worksheets If Ws.Name = nommerfeuille Then MsgBox "Une feuille porte le même nom" Exit Sub Else Sheets("MODELE (2)").Name = nommerfeuille End If Next Ws ActiveSheet.Shapes.Range(Array("TextBox 3")).Select ActiveWorkbook.Protect ("Toto"), Structure:=True, Windows:=True End Sub
Je comprends !
Ca ne fonctionne pas.
C'est en cliquant sur un bouton que l'on déclenche cette macro, voici le code :
Private Sub ok_Click()
Dim X As Boolean
Dim i As Byte
' vérification si combobox vides
For i = 1 To 2
If Me.Controls("Combobox" & i) = "" Then
X = True
End If
Next i
'message si une ou plusieurs sont vides
If X = True Then
msgbox "Veuillez remplir tous les champs"
'On colle les données des box dans les colonnes en dernière ligne
Else: Sheets("MODELE (2)").Select
Range("B3").Value = ComboBox1.Value
Range("B4").Value = ComboBox2.Value
Application.Run "'Modele.xlsm'!Module5.NOMMER"
Unload UserForm2
result = msgbox("Vous pouvez maintenant saisir votre argumentaire")
End If
End Sub
C'est ma dernière idée !
Encore mille mercis pour votre aide,
Ca ne fonctionne pas.
C'est en cliquant sur un bouton que l'on déclenche cette macro, voici le code :
Private Sub ok_Click()
Dim X As Boolean
Dim i As Byte
' vérification si combobox vides
For i = 1 To 2
If Me.Controls("Combobox" & i) = "" Then
X = True
End If
Next i
'message si une ou plusieurs sont vides
If X = True Then
msgbox "Veuillez remplir tous les champs"
'On colle les données des box dans les colonnes en dernière ligne
Else: Sheets("MODELE (2)").Select
Range("B3").Value = ComboBox1.Value
Range("B4").Value = ComboBox2.Value
Application.Run "'Modele.xlsm'!Module5.NOMMER"
Unload UserForm2
result = msgbox("Vous pouvez maintenant saisir votre argumentaire")
End If
End Sub
C'est ma dernière idée !
Encore mille mercis pour votre aide,
Remplacer:
par
changer le code dans le module 5 par cela:
supprimer le message de l'userForm2 et le mettre dans la sub Nommer
@+ Le Pivert
Application.Run "'Modele.xlsm'!Module5.NOMMER"
par
NOMMER
changer le code dans le module 5 par cela:
Sub NOMMER() Dim nommerfeuille As String Sheets("MODELE (2)").Select nommerfeuille = Left(UserForm2.ComboBox1.Text, 3) & " - " & Left(UserForm2.ComboBox2.Text, 25) For Each Ws In ThisWorkbook.Worksheets If Ws.Name = nommerfeuille Then MsgBox "Une feuille porte le même nom" Exit Sub End If Next Ws Sheets("MODELE (2)").Name = nommerfeuille ' ActiveSheet.Shapes.Range(Array("TextBox 3")).Select MsgBox("Vous pouvez maintenant saisir votre argumentaire") ActiveWorkbook.Protect ("Toto"), Structure:=True, Windows:=True End Sub
supprimer le message de l'userForm2 et le mettre dans la sub Nommer
MsgBox("Vous pouvez maintenant saisir votre argumentaire")
@+ Le Pivert
Si feuille même nom il faut supprimer la feuille qui vient d'être créée comme ceci:
je pense que cela devrait coller
Sub NOMMER() Dim nommerfeuille As String Application.DisplayAlerts = False Sheets("MODELE (2)").Select nommerfeuille = Left(UserForm2.ComboBox1.Text, 3) & " - " & Left(UserForm2.ComboBox2.Text, 25) For Each Ws In ThisWorkbook.Worksheets If Ws.Name = nommerfeuille Then MsgBox "Une feuille porte le même nom" Sheets("MODELE (2)").Delete Exit Sub End If Next Ws Sheets("MODELE (2)").Name = nommerfeuille ' ActiveSheet.Shapes.Range(Array("TextBox 3")).Select MsgBox ("Vous pouvez maintenant saisir votre argumentaire") ActiveWorkbook.Protect ("Toto"), Structure:=True, Windows:=True Application.DisplayAlerts = True End Sub
je pense que cela devrait coller