Aide formulaire sur plusieurs onglets

steven542304

XLDnaute Nouveau
Bonjour à tous,

Je sèche complètement... Je débute en VBA sur excel, j'essaye de me débrouiller comme je peux en péchant des infos à droite et à gauche sur les différents forums.
Dans mon tableau, ci joint, j'ai déjà programmé plusieurs macros, comme je vous le disais en pêchant des infos un peu partout donc j'ai surement des lignes de codes inutiles..

Enfin bref, je sollicite votre aide, je vous explique :

Mon tableau, contient 3 onglets. (Je peux en avoir jusqu'à 10 sur une année)

J'ai créé un formulaire me permettant de remplir certaines colonnes de mon tableau, mais celui agit sur un onglet à la fois.

Je voudrais, si cela est possible :

Premièrement de fixer mon formulaire sur la première feuille de mon classeur.

Ensuite, je voudrais que mon formulaire agisse sur mes différents onglets. Avec par exemple, une liste déroulante (combobox pour les intimes) afin de sélectionner l'onglet sur lequel je veux rentrer mes données.
Sachant que les tableaux contenus dans mes différents onglets, sont identiques.
Pour la liste déroulante, j'ai réussi. Mais les données ne suivent pas...


Voila, je ne sais pas si c'est très clair. Mon classeur est en pièce jointe.

Un grand merci par avance,

Voila mon code contenu dans le formulaire...

VB:
Private Sub ComboBox2_Change()
Dim ER As Worksheet

ONGLET.Clear
For Each ER In ThisWorkbook.Worksheets
If ER.Name <> "vierge" Then
  ONGLET.AddItem ER.Name
End If
Next ER

End Sub

'Pour bouton valider

Private Sub CommandButton1_Click()
 

    Dim Liste_combobox As Variant
    Dim List() As String
    Dim ER As Worksheet
Dim dl As Integer


dl = .Range("A65000").End(xlUp).Row + 1

  

     
        'Pour placer la nouvelle ligne
     
        Range("A" & ligne).Value = ComboBox1
        Range("B" & ligne).Value = TextBox1
        Range("C" & ligne).Value = TextBox2
        Range("D" & ligne).Value = TextBox4
        Range("E" & ligne).Value = TextBox5
        Range("F" & ligne).Value = TextBox3
        Range("G" & ligne).Value = TextBox6
        Range("H" & ligne).Value = TextBox7
        Range("I" & ligne).Value = TextBox8
        Range("J" & ligne).Value = TextBox9
        Range("K" & ligne).Value = TextBox10
        Range("N" & ligne).Value = TextBox11
        Range("O" & ligne).Value = TextBox12
        Range("T" & ligne).Value = TextBox13
        Range("V" & ligne).Value = TextBox14
        Range("W" & ligne).Value = TextBox15
     
        
 
    Unload Me
 
End Sub


Private Sub UserForm_Initialize()
    ONGLET.Clear
    For Each ER In ThisWorkbook.Worksheets
        If ER.Name <> "vierge" Then
            ONGLET.AddItem ER.Name
        End If
    Next ER
 


If ONGLET.ListIndex > -1 Then

ThisWorkbook.Worksheets(ONGLET.List(ONGLET.ListIndex)).Visible = True
ThisWorkbook.Worksheets(ONGLET.List(ONGLET.ListIndex)).Activate
Unload Me ' Ferme le formulaire
UserForm1.Show 'Ouvre le formulaire

End If
End Sub
stv
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour Steven

Variable: dl = .Range() , et tu met .Range("A" & ligne) ??? o_O

Ensuite la macro de la combo est à mettre dans CommandButton et là

VB:
For Each ER In ThisWorkbook.Worksheets
        If ER.Name <> "vierge" Then       
With ER
lig = .Range("a65536").End(xlUp).Row + 1
.Cells(lig, 1) = ComboBox1
for i = 2 to 11
.Cells(lig, i) = Controls("TextBox" & i - 1)
next
.Cells(lig, 14) = TextBox11
.Cells(lig, 15) = TextBox12
.Cells(lig, 20) = TextBox13
.Cells(lig, 22) = TextBox14
.Cells(lig, 23) =  TextBox15
End With
End If
Next ER
 

steven542304

XLDnaute Nouveau
Merci beaucoup Lone Wolf.

Oui mdr à l'origine j'avais un "Selection.row" me permettant de rentrer les données sur la ligne selectionnée.
J'ai tellement galéré que j'ai surement dû oublier...

Enfin bref, un grand merci à toi je vais essayer ça et je te tiens au courant!

Bonne journée
 

Lone-wolf

XLDnaute Barbatruc
Re

Tes listes déroulantes sont inutiles dans les feuilles, les titres des listes ,et ça c'est quand même abérant :eek:, sont dans la même feuille où tu vas rentrer les données en ligne 252??? o_O
Tu Recherche la feuille "vierge" qui n'existe pas. Comment veux-tu t'en sortir???? Met Feuil1 à la place.

Tu mets les titres en feuille 1, ensuite dans formulaire initialize

VB:
Private Sub UserForm_Initialize()
  Dim i As Integer

   With Feuil1
  For i = 2 To .Range("a65536").End(xlUp).Row
  ComboBox1 = .Range("a" & i)
  If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Range("a" & i)
  Next i
End With
End Sub
 
Dernière édition:

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa