Userform - Liste déroulante pour sélection d'onglet

Bonjour a tous,

Je travaille actuellement sur un Userform. Mon objectif est de faire un formulaire permettant de remplir des tableaux placés dans différents onglets (les tableaux dans les onglets sont strictement identiques et ont « besoin » des mêmes données).

Les données dont ils ont besoin seront à remplir dans le futur formulaire dans des textbox sur les multipages.

Pour qu’Excel sache où je veux remplir mes cellules je dois créer une liste déroulante.

J’ai placé une combo box, j’ai réussi à faire apparaître les onglets de deux manières différentes mais je ne sais pas laquelle est la plus viable. (Voir fichier ci-joint les deux cases en dessous « Product » dans l’userform.) Je ne sais pas non plus si la sélection est bien reliée aux onglets.

Et surtout est-ce que cela est possible ? Si quelqu’un pouvait me donner un petit coup de pouce s’il vous plaît ?

Je débute sur Userform soyez un petit peu indulgents

PS : Tous les onglets ne sont pas présents dans le fichier joint (il était trop lourd)

Allan

203fofo-1.xlsm (482.44 Ko)

Bonjour Allan, bonjour le forum,

Set WS = Worksheets(ONGLET.Value)

ou, si je reprends ton code :

Private Sub ONGLET_Change()

'Test pour selection onglet selon liste deroulante

If ONGLET.ListIndex > -1 Then 'Si la sélection est valide
    With Worksheets(ONGLET.Value)
        .Visible = True
        .Activate
    End With
    Unload Me ' Ferme le formulaire
    'UserForm1.Show 'Ouvre le formulaire
End If
End Sub

Bonjour ThauTheme,

Merci beaucoup !!!

Quel ligne faudrait-il rajouter pour que la "MainSheet" ne s'affiche pas dans la liste déroulante ?

Cordialement

Allan

Bonjour

peux être comme sa

Private Sub UserForm_Initialize()
Dim I As Long
Dim Nonglet As String
Nonglet = Sheet1.Name
ONGLET.Clear
    For I = 1 To Sheets.Count
      If Nonglet <> Sheets(I).Name Then
         ONGLET.AddItem Sheets(I).Name
       End If
    Next
End Sub

A+

Maurice

Salut Maurice,

Parfait ça fonctionne ! Super je vous remercie tous les deux

Mais du coup, lorsque je sélectionnerai un "Product", les données iront bien dans la feuille sélectionné ? Et donc comment procéder pour désigner les cellules qui doivent être remplies par les données insérées dans les futures Textbox (car quand on désigne une cellule on désigne la feuille sur laquelle elle se trouve hors là ....?)

Si quelqu'un pourrait me fournir une petite explication de plus je ne suis pas contre

Encore merci en tous les cas

Re,

Ton code simplifié. Tu adapteras les adresses où tu veux renvoyer la valeur des contrôle dans la procédure Click du bouton Export :

Option Explicit  'Activation de la déclaration explicite des variables
Dim Ws As Worksheet  'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de cet UserForm

Private Sub UserForm_Initialize()
Dim ER As Worksheet
For Each ER In ThisWorkbook.Worksheets
    If Not ER.Name = "vierge" And Not ER.Name = "Main Sheet" Then ONGLET.AddItem ER.Name
Next ER
End Sub

Private Sub ONGLET_Change()
If ONGLET.ListIndex > -1 Then Set Ws = Worksheets(ONGLET.Value)
End Sub
Private Sub CommandButton1_Click() 'bouton Export
Ws.Range("A1").Value = Me.ComboBox1.Value 'adresse A1 à adapter
Ws.Range("A2").Value = Me.TextBox1.Value 'adresse A2 à adapter
Ws.Range("A3").Value = Me.TextBox2.Value 'adresse A3 à adapter
'etc...
Unload Me
End Sub

Private Sub CommandButton2_Click()
Unload Me
'Unload => Permet de fermer l'Userform et de l'effacer de la mémoire, les valeurs de ses contrôles sont à alors perdues.
' Me => Référence à l'objet en cours
End Sub

Re,

Petite modif. En fait tu vas vouloir, je pense, placer les données en ligne (et pas en colonne comme dans mon premier exemple) les unes en-dessous des autres. Pour cela il faut rechercher la première ligne vide. On utilisera la colonne qui contient obligatoirement une donnée (dans mon exemple la colonne A). Cela donne :

Private Sub CommandButton1_Click() 'bouton Export
Dim DL As Long

DL = Ws.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'première ligne vide de la colonne A (colonne à adapter)
Ws.Cells(DL, "A").Value = Me.ComboBox1.Value 'Colonne A à adapter
Ws.Cells(DL, "B").Value = Me.TextBox1.Value 'colonne B à adapter
Ws.Cells(DL, "C").Value = Me.TextBox2.Value 'colonne C à adapter
'etc...
Unload Me
End Sub

Re,

Je n'ai pas essayé mais c'est super sympa ce que tu as fais je n'aurai pas réussi à faire ça tout seul ! C'est avec l'habitude que tu acquières toutes ces connaissances où vous vous référez systématiquement à une base de donnée selon ce que tu veux faire ?

Je te tiens au courant dès que j'ai essayé à tout à l'heure et merci encore !!

Re,

Autodidacte, à force de m'amuser je commence à maîtriser une toute petit partie du langage VBA. Plus j'en fais, plus ça me plaît et plus je progresse. Mais c'est long ! Heureusement qu'il y a des super balèzes ici qui me font progresser...

Bonsoir

bon voila une dernière

pour débuter évite les sapins de Noël

A+

Maurice

257fofo-1.xlsm (495.82 Ko)

Re,

Tu es déjà doué je trouve ! Merci Maurice je regarde vos deux versions très vite ! Qu'est ce que les sapins de Noël Maurice ? C'est du genre quand c'est complexe ?

Bonne soirée à vous encore merci, je planche dessus dès demain matin.

Allan

Rechercher des sujets similaires à "userform liste deroulante selection onglet"