Combobox et textbox à remplisage automatique

Bonjour,

Je suis actuellement entrain de creer une application pour réaliser des devis de transport et j'ai eu la bonne idée de mettre un peu de VBA dans mon excel et du coup je galère.

J'ai déjà eu quelques informations et pas mal de déblocage grâce à votre forum, mais la encore et malgré mes recherche je bloque .

Je vous explique mon problème:

Sur ma feuille excel nommé "DEVIS", j'ai toute mes données. J'ai mis quelques bouton dans une zone dédier pour que les utilisateurs de l'application puissent utiliser de manière plus facile mon appli sans faire de grosse boulette.

Du coup mes boutons lancent des userforme contenant des combobox, et j'aimerais:

Que ma combobox remplisse automatiquement mes textbox et que ensuite toutes les données présentes sur l'userform se stock dans une ligne.

Pour l'instant, j'arrive à faire en sorte que la combobox proposent les différents choix, mais je n'arrive pas à faire en sorte que les textbox se remplissent automatiquement.

Le bouton qui me pause problème et le "Livraison FAS ou FOB (Maritime)"

Les données que la combobox doit proposer à l'utilisateur sont en: "Q76:Q79"

Les données que je souhaiterais mettre dans mes textbox une fois le choix effectuer par la combosont en: "P76:U76 ainsi que les trois lignes en desous"

Et j'aimerais stoker le résultat de mes textbox dans : "P54:U54"

Auriez-vous une idée ?

Je vous transmet un fichier vierge pour que vous puissiez comprendre un peu mieux.

Cordialement

Guillaume

19modele-devis.xlsm (133.79 Ko)

Bonjour Guillaume, bonjour le forum,

Rajoute le code ci-dessous dans l'UserForm LIV_FAS_FOB :

Private Sub ComboBox_Lieux_Change()
Dim LI As Byte
LI = Me.ComboBox_Lieux.ListIndex + 76
With Sheets("Devis")
    Me.TB_Pay = .Range("P" & LI)
    Me.TB_Liv = .Range("Q" & LI)
    Me.TB_Ad = .Range("R" & LI)
    Me.TB_Dapar = .Range("S" & LI)
    Me.TB_TpsTra = .Range("T" & LI)
    Me.TB_CouPea = .Range("U" & LI)
End With
End Sub

Il utilise la propriété [ListIndex] d'une ComboBox . Le premier élément de la liste à sa propriété égale à 0, le second à 1, etc. En rajoutant 76 on récupère le numéro de la ligne de la donnée sélectionnée.

Bonjour

Bonjour ThauThème

A vérifier

OUAHHH

Je suis sur le c.. !!!

C'est vraiment parfait ThauThème je ne connaissais pas cette manip.

Du coup un grand merci pour ton aide sa marche nickel !!!

Aurais tu aussi une solution miracle pour un problème de combobox remplit de casse vide et de doublon ?

Ce problème est lié au bouton "Livraison CIF ou CFR (Maritime)" qui récupère mes données depuis la feuille devis en colonne X83:X721 et qui me récupère tous les blanc et tous les doublons de cette colonne.

J'avais réussi à enlever les doublon au début mais maintenant, il me met ma liste en double. La première partie sans doublon mais avec des vides puis la même chose avec les doublons et les vide.

Aurais tu une idée ?

Cordialement,

Guillaume


Merci a toi aussi banzai64

Ta solution marche nickel aussi

Bonjour Guillaume, Banzai, bonjour le forum,

Il y a plusieurs méthode pour cela. Dans ce cas, j'utilise celle ci-dessous :

Private TV As Variant 'déclare le tableau des valeurs TV

Private Sub UserForm_Initialize()
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)

Set D = CreateObject("Scripting.Dictionary") 'définit la variable D
With Worksheets("Devis") 'prend en compte l'onglet "Devis"
    TV = .Range("X83:Z" & .Cells(Application.Rows.Count, 24).End(xlUp).Row) 'définit le tableau des valeurs TV
End With 'fin de la prise en compte de l'onglet "Devis"
    For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes du tableau de valeurs TV
         'si la valeur en ligne I colonne 1 du tableau des valeurs TV n'est pas vide, alimente le dictionnaire avec le pays
         If TV(I, 1) <> "" Then D(TV(I, 1)) = TV(I, 1)
    Next I 'prochaine ligne de la boucle
Me.ComboBox_Pays.List = D.keys 'alimente la ComboBox_Pays de la liste des pays sans doublons
End Sub

Private Sub ComboBox_Pays_Change() 'au chagement dans la ConboBox
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)

Me.ComboBox_Port.Clear 'vide la ComboBoX_Port
Set D = CreateObject("Scripting.Dictionary") 'définit la variable D
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes du tableau de valeur TV
    'si la valeur ligne I colonne 1 du tableau des valeurs est égale à la valeur de la comboBox_Pays, alimente le dictionnaireavec le port
    If TV(I, 1) = Me.ComboBox_Pays Then D(TV(I, 3)) = TV(I, 3)
Next I 'prochaine ligne de la boucle
Me.ComboBox_Port.List = D.keys 'alimente la ComboBox_Port de la liste des ports (correspondants au pays) sans doublons
End Sub

Attention à la variable Private TV qui doit rester en première ligne du code...

Je pensait pas que c'était aussi compliquer mais sa marche à la perfection

Merci beaucoup ThauThème tu vient de réaliser un miracle du vba et de sauver mon stage au passage.

Merci mille fois

Guillaume

Re,

guillaume6381 a écrit :

tu vient de réaliser un miracle du vba et de sauver mon stage au passage.

Arf !

Rechercher des sujets similaires à "combobox textbox remplisage automatique"