Code multipage Dans un UserForm

Bonjour à tous,

Dans la continuité du fichier ci-joint, j'aimerais modifier un peu une étape.

Dans la feuille "Listes", se trouve un tableau qui se rempli avec le bouton Export. La colonne Famille & Type est à remplir manuellement. J'aimerai via l'UserForm1 remplir ces 2 colonnes.

Autrement dit, suivant sur la page que nous nous trouvons ( Fond en applique 19mm, Fond en applique 8mm, Fond en œuvre 19mm) et le bouton d'option sélectionné, les deux colonnes du tableau se remplisse en conséquence.

Espérant être clair ! merci d'avance pour votre aide ;)

Bonjour SOTIN,

Un essai ...

Private Sub CommandButton1_Click() 
Dim X As Byte, Z As Byte

   Z = Me.ComboBox4.ListIndex + 2  ' la ligne du combobox4, plus 2 =  ligne feuille 
   For X = 1 To 6                    ' boucle sur les OptionButton
      If Controls("OptionButton" & X) = True Then    ' si OptionButton est sélectionné
         Worksheets("Listes").Cells(Z, "M").Value = Controls("OptionButton" & X).Caption  ' écrire dans la feuille
         Exit For    ' sortir de la boucle
      End If
   Next X
End Sub

ric

Bonjour SOTIN,

Regarde le code du UserForm ...

En séparant les macros en sections, il sera plus facile de se retrouver pour effectuer des changements ...

ric

Bonjour ric,

Encore une fois ça fonctionne !!!

Merci également pour pour la technique de séparation, c'est effectivement plus clair de cette manière !

Si je puis abuser, maintenant que je rempli le tableau avec l'UserForm, ce dernier génère une erreur au moment de cliquer sur le bouton "Débit". Je pense que cela vient du fait que le tableau n'est plus rempli avec les menu déroulant. Pourrais tu y jeter un petit coup d'œil ?

Merci !

Ci-joint le fichier avec les dernières mise à jour, je n'ai pas encore fait le propre dans Visual basic, je m'y mets maintenant

Bonjour SOTIN,

2 choses ...

1- tb_export <> tb_familles = la nomenclature n'est pas identique :

Fond en applique 19mm pour le 1re tableau

et Fond applique 19mm pour le 2e tableau

2- L'item de TbExport colonne "M" n'est pas trouvé dans TbType ...

Je suggère de gérer les erreurs "non-trouvés" ainsi ...

  For i = 1 To UBound(tbExp)
    abr = "pl_"
    For j = 1 To UBound(tbFam)
      If tbExp(i, 6) = tbFam(j, 1) Then
         abr = abr & tbFam(j, 2)             'Copie/colle la famille
         Exit For
      ElseIf j = UBound(tbExp) Then
            MsgBox " Donnée non trouvée ...!"
            Exit Sub
      End If
    Next j

    For j = 1 To UBound(tbTyp)
      If tbExp(i, 7) = tbTyp(j, 1) Then
         abr = abr & "_" & tbTyp(j, 2)       'Copie/colle le type
         Exit For
      ElseIf j = UBound(tbTyp) Then
            MsgBox " Donnée non trouvée2 ...!"
            Exit Sub
      End If
    Next j

ric

C'est pratique cette boite de dialogue ! Si j'ai bien compris l'erreur provient du fait que ce qu'écrit l'Userform et ce que propose la liste déroulante est différent.

J'ai donc modifié cela et .... ça fonctionne !!! Impeccable !

J'ai quelques trucs à faire que je maitrise, si tu le permet je reviendrais vers toi par la suite je risque d'avoir quelques questions plus tard .... Rassure toi, rien de trop compliqué pour un maitre de VBA !

Merci pour tout ! ;)

Bonjour,

C'est pratique cette boite de dialogue ! Si j'ai bien compris l'erreur provient du fait que ce qu'écrit l'Userform et ce que propose la liste déroulante est différent.

Pour composer le contenu de "abr" Sheets("donnees").Range(abr) le code compare les valeurs de 2 tableaux ...

Donc si pas trouvé ... "abr" ne contient pas la bonne valeur pour le range ... le contenu de "abr" fait référence à un "Champ nommé" ...

Bien sûr que tu peux revenir poser toutes les questions auxquelles j'ai une réponse ...

Pour les autres, je tenterai de te rediriger vers une possible solution ...

ric

D'accord, c'est clair pour moi, merci ;)

Merci beaucoup et à plus tard donc

Rechercher des sujets similaires à "code multipage userform"