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