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 Sub

NB : 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 Sub

EDIT : 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
Rechercher des sujets similaires à "attribuer variable nom feuille selectionnee userform"