Attribuer une variable à un nom de feuille sélectionnée sur un Userform
Bonjour à tous,
Est il possible d'attribuer le nom d'une feuille à une variable en sélectionnant la feuille dans un Userform ?
Un petit fichier sera plus compréhensible je pense.
Merci pour votre aide
Robert
Bonjour
Vous avez lu ce que je vous ai proposé dans l'autre fil ?
Là vous allez compliquer pour moi
Dans l'usf ce code
Private Sub Validation_Click()
' Attribuer le mois selectionné dans la liste déroulante à la variable Mois
Dim choixmois As string
' Selectionner la feuille "Mois" de la variable
choixmois = ComboBox1.Value
' Selectionner la feuille "Mois" de la variable
Worksheets(choixmois).select 'ou sans variable --> Worksheets(combobox1.value).select
' Ferme l'userform
Unload UserForm1
End SubNB : n'utilisez pas Mois comme non de variable qui est une fonction native d'excel
Crdlt
Bonjour,
Je vous propose la révision suivante dans le code de votre Userform.
Pour la partie initialize, l'ajout des noms de feuille est dynamique ce qui assure qu'ils correspondront bien aux feuilles lorsqu'on voudra les activer. Si ça ne vous convient pas, vous pouvez garder votre ancien code qui fonctionne très bien.
Pour le clic sur Validation, on parcourt les feuilles, et on active celle dont le nom correspond. Si non trouvée, on affiche un petit message d'erreur.
Private Sub UserForm_Initialize()
' Cr�ation de la liste déroulante
Dim sht As Worksheet
With Me.ComboBox1
' ajout de toutes les feuilles
For Each sht In ThisWorkbook.Worksheets
.AddItem sht.Name
Next sht
' ajout du 1
.AddItem 1
End With
End Sub
Private Sub Validation_Click()
' Parcours des feuilles, et activation de celle correspondante
Dim sht As Worksheet
For Each sht In ThisWorkbook.Worksheets
If Me.ComboBox1.Value = sht.Name Then
sht.Activate
Unload Me
Exit Sub
End If
Next sht
' feuille non trouv�e
MsgBox "La feuille " & Me.ComboBox1.Value & " n'a pas été trouvée", vbCritical, "Erreur"
End SubEDIT : Salut @Dan je n'avais pas rafraichi, nos messages se sont croisés.
Bonjour à tous
Merci beaucoup pour votre aide.
Dan, Sur le précédent sujet, je n'ai pas tout compris. Je vais analyser.
Je vais essayer votre code sur un second fichier car je garde précieusement les fichiers d'un sujet. en exemple.
Saboh12617 votre code fonctionne à merveilles
Je vous remercie tous les deux pour votre patience et votre aide
Je mets le fichier qui fonctionne, s'il peut être utile à d'autres Exceleurs
Bonne journée
Robert
Bonjour, merci pour votre retour.
Pour info, si vous voulez "cacher des feuilles" de la liste déroulante, vous pouvez utiliser le Sub ci-dessous.
Il suffit de mettre les noms à masquer dans la liste "aEviter" (début du sub), en les séparant par des virgules. Si jamais vous avez des feuilles de configuration/calcul, ça peut être pratique.
Private Sub UserForm_Initialize()
' liste des noms de feuilles à ne pas afficher
' séparés par une virgule
Dim aEviter As String
aEviter = "Données,Feuille Fictive"
Dim feuillesEvitees() As String, i As Long
feuillesEvitees = Split(aEviter, ",")
' Création de la liste déroulante
Dim sht As Worksheet, peutAjouter As Boolean
With Me.ComboBox1
' ajout de toutes les feuilles
For Each sht In ThisWorkbook.Worksheets
peutAjouter = True
For i = Lbound(feuillesEvitees) To UBound(feuillesEvitees)
peutAjouter = peutAjouter And Not(feuillesEvitees(i) = sht.Name)
Next i
If peutAjouter Then .AddItem sht.Name
Next sht
' ajout du 1
.AddItem 1
End With
End Sub