Userform & ComboBox

Résolu
cs_Gabriel Messages postés 9 Date d'inscription samedi 30 novembre 2002 Statut Membre Dernière intervention 18 février 2006 - 17 févr. 2006 à 07:43
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 4 mars 2006 à 11:40
Bonjour à tous,
J'ai un petit soucis, je programme depuis peu et j'ai quelques difficultés à saisir certaine procédures :
J'ai crée un userform qui contient un combobox dont les informations sont récupérées sur une bdd excel, j'ai nommé mes colonnes et utilisé la propriété RowSource (NomEmprunteur dans ce cas), j'ai ensuite crée autant de label que de champs à afficher soit 18. Pourriez vous m'indiquer la procédure à suivre pour que les valeurs correspondantes à ma séléction dans la combo s'affiche dans les labels ? mon formulaire est un formulaire de recherche à 1 critère qui est le nom de l'emprunteur ensuite toutes les informations concernant cette perssone doivent s'afficher dans les labels avec possibilité de faire défiler les infos des différentes fiches avec un scrollbar. voilà c'est une longue explication... j'espère que c'est suffisament clair....
Merci de l'aide que vous voudrez bien m'apporter.
A voir également:

11 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
23 févr. 2006 à 21:44
Salut Gab !

Admettons que tu ais les noms emprunteurs dans ta colonne A et les critères dans les
colonnes suivantes,

Dans les procédures de ton UserForm, il faut placer

Sub ComboBoxX_Change()
PremLiVide = Columns(1).Find ("", [A1], , , xlByRows, xlNext).Row
' Ca c'est pour chercher la premiere ligne vide de ta colonne A

' ensuite il faut faire une boucle pour chercher le nom qui est choisi par l'utilisateur dans la ComboBox correspondant au nom saisis dans ta colonne A
For i = 1 To PremLiVide
ColA = ("A" & i)
ColB = ("B" & i)
ColC = ("C" & i)
' etc...

'cherche le nom rentrer dans la combobox dans la colonne A :
If ComboBoxX.Value = Range(ColA).Value Then
Label1.Caption = Range(ColB).Value
Label2.Caption = Range(ColC).Value
' etc...
Exit sub 'comme ca, une fois qu'il a le resulta, la boucle s'arrete
End If
Next i
End Sub

J'espere que c'est assez clair et que cela pourra t'aider, sinon n'hésite pas.

A +


Mortalino
3
cs_Gabriel Messages postés 9 Date d'inscription samedi 30 novembre 2002 Statut Membre Dernière intervention 18 février 2006
28 févr. 2006 à 13:30
Merci Beaucoup Mortalino

après de multiples plantages et une compréhension assez douteuse du VBA...

je me suis aventuré sur d'autres chemins... celui de la modification de
données contenues dans ma base, CA MARCHE PAS, je promets j'essaye de
comprendre mais cest pas faute d'avoir essayé.

voilà ce que j'ai trouvé comme code, j'aimerais l'adapter à une comboBox (tel quel il fonctionne parfaitement)



Private Sub CommandButton5_Click()

Dim Msg As String

ListBox1.Value = ""

With Sheets("Base")

.Range("A" & Contenu).Value = TextBox9.Value

.Range("B" & Contenu).Value = TextBox21.Value

.Range("C" & Contenu).Value = TextBox10.Value

.Range("D" & Contenu).Value = TextBox20.Value

.Range("E" & Contenu).Value = TextBox1.Value

.Range("F" & Contenu).Value = TextBox2.Value

.Range("G" & Contenu).Value = TextBox3.Value

.Range("H" & Contenu).Value = TextBox5.Value

.Range("I" & Contenu).Value = TextBox7.Value

.Range("J" & Contenu).Value = TextBox8.Value

.Range("L" & Contenu).Value = TextBox11.Value

.Range("M" & Contenu).Value = TextBox12.Value

.Range("N" & Contenu).Value = TextBox12.Value

.Range("O" & Contenu).Value = TextBox14.Value

.Range("P" & Contenu).Value = TextBox15.Value

.Range("Q" & Contenu).Value = TextBox19.Value

.Range("R" & Contenu).Value = TextBox17.Value

.Range("S" & Contenu).Value = TextBox18.Value

.Range("T" & Contenu).Value = CheckBox2.Value

.Range("U" & Contenu).Value = CheckBox3.Value

End With

Unload Me

UserForm1.Show

End Sub



Merci encore...
0
cs_Gabriel Messages postés 9 Date d'inscription samedi 30 novembre 2002 Statut Membre Dernière intervention 18 février 2006
28 févr. 2006 à 15:21
Re bonjour à tous et à toutes

Re bonjour Mortalino

j'aimerais apporter une petite précision, quand je dis que le code
"fonctionne parfaitement" c'est sur un autre formulaire dans lequel se
trouve une listbox...

Les champs étant identiques je pensais pouvoir le réutiliser
(erreur !!!). Par la meme occasion peut on faire une listbox
multicolonnes dont les colonnes ne se touchent pas ex : A2 - D2 - C2 -
T2

Merci de l'aide que vous voudrez bien m'apporter.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
3 mars 2006 à 13:05
Salut Gab

Pour récupérer une donnée, au lieu de déclarer ta variable en Dim (ex : Dim NomEmprunteur as String), déclare le en Public (ex : Public NomEmprunteur as String), situé dans les déclarations (tout en haut du module).Comme ca, qd tu l'appelles, tu récupères la valeur.

Concernant la ListBox, elle peut effectivement contenir plusieurs colonnes ; dans la propriété de la ListBox, met 4 dans ColumnCount, si ta ListBox fait, par exemple, 100 en "Width" (largeur), dans ColumnWidths, met par exemple
25; 25; 25; 25 (=> t'auras 4 colonnes de largeur égale),
mais tu peux mettre ce que tu veux.

Ensuite, il y a peut-être un code + simple mais j'ai encore peu d'expérience donc j'ai bien une combine mais, à voir...
moi je copierai tes colonnes A, D, C et T dans une autre feuile, en colonne A, B, C & D. Puis
ListBox1.RowSource = "NomDeLaFeuille!A2:D10"

Si tu galères, envoi un Msg !

A +
Mortalino
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Gabriel Messages postés 9 Date d'inscription samedi 30 novembre 2002 Statut Membre Dernière intervention 18 février 2006
3 mars 2006 à 13:17
Salut à toi Mortalino,

Merci de m'avoir répondu, j'essaye de ce pas....

et si tu as le temps, peux tu me renseigner sur les formats monetaires
dans les textbox. J'ai plusieurs textbox dans lequels je fais des
opérations , multiplication addition, pourcentage, et le tout en Euros.

Je t'envois un morceau de code dont aucun format ne fonctionne, si tu as une idée, je suis preneur...

Private Sub MontantMission_Change()

MontantMission = format(MontantMission.Value, " 0,00 ?")

ComAfis = format(ComAfis, "0.0E+00 ")

ComComHT = format(ComComHT, "0.0E+00 ")

TotalTTC.Value = format(TotalTTC, "0.0E+00 ")

Taxe.Value = format(Taxe.Value, "0.0E+00 ")

ComAfis.Value = Val(MontantMission.Value) * Val(P100Afis.Value) / 100

ComComHT.Value = Val(ComAfis.Value) * Val(P100Com.Value) / 100

Taxe.Value = Val(ComComHT.Value) * "19,6" / 100

TotalTTC.Value = Val(ComComHT.Value) + Val(Taxe.Value)



Merci & @+

Gabriel
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 mars 2006 à 07:00
Salut Gabriel,

Pour etre franc, les formats me font aussi galérer.
Quand je n'y arrive pas, je passe par des cellules :

MontantMission.Value, une fois que c'est saisi, je le placerai dans une cellule d'une feuille (par exemple, dans feuille "Calcul", A1)

click droit sur la cellule A1, "Format de Cellule", "Monétaire" & Symbole "?".
cellule A2 : tu mets =A1
click droit sur la cellule A2, "Format de Cellule", "Personnalisé" & "0.0E+00"
etc...

Comme ça tes calculs se feront quand tu rentres une valeur dans A1,

Du coup,
Private Sub MontantMission_Change()
Sheets("Calcul").Range("A1").Value = Mission.Text
NomTextBox.Value = Sheets("Calcul").Range("B1").Text
etc...
End Sub

Par contre je vois que t'utilises la virgule, peut-etre cela peut aussi te créer des problèmes (ça m'est arrivé). Si, quand tu saisies dans une cellule un chiffre a virgule, est ce le point ou la virgule qui s'affiche. Si c'est la virgule, je te conseil de le changer, car dans les TextBox, lorsque tu rentres un chiffre, là c'est le point quui s'affiche. Du coup, étant configuré en virgule, VBA ne comprends pas.
Si c'est le cas, va dans "Panneau de Configuration", "Options Régionales et Linguistiques",
sur cet onglet, clique sur "personnaliser", et remplace dans "Nombre" & "Symbole Monétaire" la virgule en point.

(Pour info, je peux te répondre jusqu'à 14h00 car pas internet chez moi, seulement au boulot)

Bonne matinée à toi.


Mortalino
0
cs_Gabriel Messages postés 9 Date d'inscription samedi 30 novembre 2002 Statut Membre Dernière intervention 18 février 2006
4 mars 2006 à 10:28
Salut Mortalino,

J'espère que c'est pas trop dur de bosser le samedi... moi c'est bureau 7/7...

Merci pour ta solution, je l'avais déjà expérimentée, seulement je
trouvais ça moins rapide que le calcul direct dans les textbox.

Connais tu le moyen de n'afficher que les USF sans avoir excel en
arriere plan, j'ai essaié de mettre les feuilles en masqué mais comme
c'est des bases de travail ca me crée des erreurs. Est qu'a ta
connaissance il est possible de masquer les feuilles tout en
travaillant dessus ?



Merci Bon W.E

@+

Gabriel
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 mars 2006 à 10:53
Cher Gabriel,

Tout d'abord, bon courage à toi aussi pour le Taf.

Concernant le moyen de cacher excel, j'ai un moyen que je viens de tester, et ça n'a pas l'air de planter.
Dans userform_initialize, place Application.Visible = False
comme ça Excel est caché, mais n'oublie pas de placer dans
ton bouton "Quitter" si tu en as un ou dans ThisWorkbook_BeforeClose
de placer Application.Visible = True, sinon tu vas devoir supprimer le processus Excel dans le gestionnaire des tâches

Concernant mon test, je l'ai fait sur mon tour de service, j'ai une macro pour sélectionner au fur et à mesure mes 12 onglets (de janv => déce) et qui écrit en rouge les samedis et dimanches.
Je les ai remis en noir, cacher l'application Excel, mon Userform reste à l'écran et j'ai lancé ma macro.
Une fois que j'ai remis l'application visible, je suis allé vérifier et ça m'a bien fait les changements de couleurs.

Donc test ça en espérant que ça marche,
pendant ce temps, je le teste sur d'autres de mes prog et je te tiens au courant

A toute allure
Mortalino
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 mars 2006 à 11:09
Re Bonjour Gabriel,

Et bien je viens de le tester avec un autre programme.

Mon userform principal (sorte de menu) me permet de faire afficher d'autres userform, ça navigue entre chaque Userform sans aucun probleme et mes données s'affichent


Mortalino
0
cs_Gabriel Messages postés 9 Date d'inscription samedi 30 novembre 2002 Statut Membre Dernière intervention 18 février 2006
4 mars 2006 à 11:33
Salut à toi oh Mortalino !

Ca marche pour moi aussi...

Du grand art !



Merci beaucoup - Thank you very much - Vielen Dank -
Gracias mucho - Grazie molto - Obrigado muito muito
- あなたに非常に感謝しなさい - 非常感谢你



+ que 2h30 et c'est le W.E

courage ...



@+

Gabriel
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 mars 2006 à 11:40
Et bien si ça marche pour toi aussi c'est parfait !
Si on peut s'aider, c'est le top.
Merci pour les traductions en japonais (ou chinois), c'est pas mal et je ne connaissez pas !

Je te souhaite une bonne programmation et un excellent Week End à toi aussi.

A bientôt

Mortalino
0
Rejoignez-nous