Feuilles nommer avec le même nom
Résolu/Fermé
A voir également:
- Feuilles nommer avec le même nom
- Nom de l'adresse - Forum Réseaux sociaux
- Que faut il écrire dans le champ obligatoire : Adresse (suite)*? ✓ - Forum Réseaux sociaux
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
- &Quot;Nom de l'adresse" lors d'une inscription sur une site - Forum Consommation & Internet
- Croix a cote du nom snap - Forum Snapchat
13 réponses
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
16 oct. 2017 à 16:00
16 oct. 2017 à 16:00
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
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
23 oct. 2017 à 14:23
23 oct. 2017 à 14:23
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
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
23 oct. 2017 à 16:06
23 oct. 2017 à 16:06
C'est un fichier texte, ce n'est pas un classeur Excel!!!!!!!!!!!!!!!
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
23 oct. 2017 à 16:24
23 oct. 2017 à 16:24
Essayer avec
https://mon-partage.fr/
Il fait combien ce classeur?
https://mon-partage.fr/
Il fait combien ce classeur?
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/
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
23 oct. 2017 à 17:08
23 oct. 2017 à 17:08
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,
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
Modifié le 23 oct. 2017 à 18:03
Modifié le 23 oct. 2017 à 18:03
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
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
23 oct. 2017 à 18:16
23 oct. 2017 à 18:16
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