Microsoft 365 Sélection une donnée dans une ComboList et les faire s'afficher dans des TextBox et les modifier

AppleDance

XLDnaute Nouveau
Bonjour à tous,

Je suis un débutant en VBA et je souhaiterais trouver un moyen de créer une certaine macro. Ayant cherché sur ce forum et d'autre, je n'ai pas su/pu trouvé de réponse.
J'ai crée un UserForm que j'essai de finir, mais malheureusement je ne pense pas que je pourrais le finir tout seul:

J'ai déjà fait une première partie (saisie de données dans des TextBox et les faire d’afficher là où je le voudrais : Feuil1 --> A2, B2, C2.)


Private Sub CommandButton1_Click()
'remplir textbox sur la page 1
no_ligne = Range("A1000").End(xlUp).Row + 1

Cells(no_ligne, 1) = TextBox1.Value

If TextBox1.Value = "" Then
MsgBox "Nom du saisisseur obligatoire"
Exit Sub
End If

Cells(no_ligne, 2) = TextBox2.Value

If OptionButton1 = True Then
Cells(no_ligne, 3) = "OK"
ElseIf OptionButton2 = True Then
Cells(no_ligne, 3) = "KO"
End If

Cells(no_ligne, 4) = TextBox3.Value

End Sub


La seconde partie est plus compliquée pour moi: sélection sur la Feuil1, les données de Range "A" via un ComboBox si possible.
J'ai fait des test de macro dans mes recherches, mais elle bug si il n'y a qu'une seule ligne (mais elle marche! pas à la perfection, certes, mais elle fonctionne) Si vous avez une proposition....

Private Sub ComboBox1_Change()
'selection combobox sur page 2
'message tapez une lettre
'ne marche que si nb de ligne >1. Pourquoi ?

Dim LastRow As Long
Sheets("Feuil1").Activate

LastRow = Range("A" & Rows.Count).End(xlUp).Row
ComboBox1.List = Range("A2:A" & LastRow).Value

End Sub

ou

Private Sub ComboBox1_Change()

'message tapez une lettre
ComboBox1.RowSource = ""
ComboBox1.List = ActiveSheet.Range("A2", ActiveSheet.Range("A" & Rows.Count).End(xlUp)).Value

End Sub

Et mon second problème: Afficher les informations précédemment saisies (correspondant au choix fait dans ComboBox1)

Ex: Si on choisi l'info en A5 dans la comboBox1, alors les informations de la ligne sont afficher ( TextBox4 afficherait B5 et TextBox5 afficherait C5).

Toute idée serait la bienvenue.

Et merci par avance pour toute aide.
 

Pièces jointes

  • Demo.xlsm
    24.2 KB · Affichages: 11
Solution
bonjour
que de tracas pour 3/4 controls
pour commencer
j'ai pris pour habitude dans mes formulaires de nommer les controls avec un nom en relation avec la colonne de la source
j'ajoute a ce nom un indice qui me rapelle la page parent dans le multipage
tes controls s'apeelleront donc respectivement
pour la page 1
p1A
p1B
p1C et p1Cbis
p1D

pour la page 2
p2A
p2B
p2C
p2Cbis
p2D
p pour page
le chiffre pour l'index de page
la lettre pour la colonne de la source
voila on s'y retrouve

maintenant dans le activate je rempli la liste la p2combo

et au click sur item je rempli les controls

voila le seul code que je met dans l'userform pour ce qui concerne la relation combo et les autres controls



VB:
Private Sub p2combo_Click()
Dim...

bbb38

XLDnaute Accro
Bonjour AppleDance, le forum,
Personnellement, je n’utilise que très rarement le contrôle Multipage (peut-être parce que je n’en vois pas l’utilité - à tort - ou que mes petits programmes ne doivent pas afficher de nombreux contrôles).
Dans ton exemple, je pense que toutes tes données peuvent figurer dans un seul formulaire – Fichier ci-joint (mais ce n’est qu’un avis personnel).
Cordialement,
Bernard
 

Pièces jointes

  • Demo.xlsm
    24.5 KB · Affichages: 10

patricktoulon

XLDnaute Barbatruc
bonjour
que de tracas pour 3/4 controls
pour commencer
j'ai pris pour habitude dans mes formulaires de nommer les controls avec un nom en relation avec la colonne de la source
j'ajoute a ce nom un indice qui me rapelle la page parent dans le multipage
tes controls s'apeelleront donc respectivement
pour la page 1
p1A
p1B
p1C et p1Cbis
p1D

pour la page 2
p2A
p2B
p2C
p2Cbis
p2D
p pour page
le chiffre pour l'index de page
la lettre pour la colonne de la source
voila on s'y retrouve

maintenant dans le activate je rempli la liste la p2combo

et au click sur item je rempli les controls

voila le seul code que je met dans l'userform pour ce qui concerne la relation combo et les autres controls



VB:
Private Sub p2combo_Click()
Dim x&
x = p2combo.ListIndex
p2A.Value = p2combo.List(x, 0)
p2B.Value = p2combo.List(x, 1)
If p2combo.List(x, 2) = "KO" Then p2C = True Else p2Cbis = True
p2D.Value = p2combo.List(x, 3)

'si tu veux remplir les controls de page 1 debloquer les lignes suivantes
'p1A.Value = p2combo.List(x, 0)
'p1B.Value = p2combo.List(x, 1)
'If p2combo.List(x, 2) = "KO" Then p1C = True Else p1Cbis = True
'p1D.Value = p2combo.List(x, 3)


End Sub

Private Sub UserForm_Activate()
p2combo.List = Feuil1.Range("A2", Cells(Rows.Count, "D").End(xlUp)).Value
End Sub

les autres boutons valider et autre, je ne sais pas ce que tu veux en faire
c'est beaucoup plus simple d'un coup
a+(parti pour la journée) ;)
 

Pièces jointes

  • Demo APPLE DANCE.xlsm
    23.2 KB · Affichages: 19

AppleDance

XLDnaute Nouveau
Merci beaucoup pour vos réponses.

J'avoue qu'hier soir, j'ai fini par essayer de passer par des ListBox pour obtenir un résultat équivalent (d'ailleurs ça a été plus facile à mettre en place).

Maintenant je vais essayer de comprendre comment tout cela fonctionne pour essayer de le mettre en place moi-même (normalement j'ai une quinzaine de TextBox par page, et ça ce n'est qu'une démo pour voir si je peux le mettre en place, et tout fonctionne comme je le veux).

Je devrais avoir encore 2-3 pages avec des fonctionnalités différentes à ajouter, mais je vais essayer de me débrouiller.

Encore merci pour votre soutien.
 

AppleDance

XLDnaute Nouveau
Re boujour,

J'aurais une autre question.
Comment feriez-vous pour modifier la police sur un worksheet (ici Feuil1) en se basant sur les infos trouver dans une listBox ? Ou même une textbox ?

Par exemple : La liste Box contient les informations apparaissant sur la ligne "3".
Comment faire en sorte à ce que interior.colorindex affecte toute la ligne sur la Feuil1 via un "OptionButton" ou un bouton ?

Merci à vous.
 

Discussions similaires

Statistiques des forums

Discussions
311 705
Messages
2 081 733
Membres
101 807
dernier inscrit
foued