2 combobox en cascade qui alimentent plusieurs textbox

Loglana

XLDnaute Nouveau
Bonjour à tous,
Étant novice dans le VBA cela fait plusieurs jours que je me creuse là tête en vain.
J'aurais souhaité créer un userform alimenté par une base de donnée.
Cette base de donnée est composée de plusieurs colonnes. La colonne A alimente la Combobox 1, la colonne B alimente la Combobox 2 en fonction du choix de la Combobox 1.
Cependant, ma colonne A possède plusieurs cases identiques mais des cases uniques pour la colonne B. Il aurait fallu, en donnant un exemple pour les voitures, la Combobox 1 soit la marque de la voiture, la Combobox 2 le modèle de la voiture, ensuite une fois le choix fait on appui sur un bouton qui nous rempli plusieurs textbox (non modifiables) correspondant aux infos sur cette voiture (infos alimentée par la ligne de la voiture dans la base de donnée).
En espérant avoir été assez clair dans mes explications..
Dans l'attente de vos réponses, merci d'avance
 

calu

XLDnaute Nouveau
J'ai essayé mais je ne connais pas encore tres bien VBA
J'ai mis ci-joint mon fichier excel avec des donnée prise au hasard car je n'ai pas l'autorisation de mettre les données réelles mais je ne vois plus du tout pourquoi sa ne fonctionne pas
si vous pouvez y jeter un coup d'oeil merci par avance
 

Pièces jointes

  • fournisseur.xls
    218 KB · Affichages: 29

Dranreb

XLDnaute Barbatruc
Votre variable CL n'est pas déclarée comme variable objet globale avec évènements.
Commencez le module de l'UserForm par :
VB:
Option Explicit
Private WithEvents CL As ComboBoxLiées
Ensuite vérifiez vos noms de contrôles.
Me("TextBox" & C - 2) soit "TextBox1" n'existe pas.

Remarque: C'est une vieille version des modules de service.
La nouvelle n'utilise plus TableIndex parce que je me suis aperçu que l'indexation par fusions est plus rapide que celle par Quick-sort. Et le nouveau module MSujetCBx est donc équipé d'une procédure d'indexation sur un seul argument par cette méthode là.
Si vous joignez le classeur une fois les modifications indiquées effectuées, je l'en équiperai des nouveaux modules si vous voulez. Ils peuvent aussi être utilisés avec un complément à mettre en référence dont je joins le classeur précurseur.
 

Pièces jointes

  • CBxL.xlsm
    102.9 KB · Affichages: 21
Dernière édition:

calu

XLDnaute Nouveau
Sa fonctionne merci beaucoup, j'ai mis ci-joint le fichier modifié si vous avez le temps de l'équiper avec le nouveau module de service, merci par avance
Je voulais aussi savoir, les infos dans les textbox se remplissent dès que je rempli le première combobox fournisseur
Pourront-on les faires apparaitres une fois que le choix de la deuxième combobox mail est saisit?
 

Pièces jointes

  • fournisseur.xls
    210.5 KB · Affichages: 29

Dranreb

XLDnaute Barbatruc
Vous avez oublié une chose importante: refaire un CL.Actualiser après une modification de la base. Je vais vous équiper le classeur des nouveaux modules.
À +

Je ferais à peu près comme ça.
 

Pièces jointes

  • CBxLiéesCalu.xlsm
    93.1 KB · Affichages: 47
Dernière édition:

Dranreb

XLDnaute Barbatruc
Attention: oubli important dans la Sub CL_Résultat:
Remplacer TVL = CL.PlgTablo.Rows(Lignes(1)).Resize(, 9).Value par :
VB:
LCou = Lignes(1)
TVL = CL.PlgTablo.Rows(LCou).Resize(, 9).Value
Pour que LCou contienne bien, à l'intention des autre procédures, le numéro de la ligne en cours de mise à jour, ou 0 seulement si on est en voie de création.
 

calu

XLDnaute Nouveau
Désolé mais j'ai encore un petit problème au niveau des boutons ils fonctionnent tous sauf celui pour ajouter des fournisseurs
et je voulais savoir si en plus du bouton ajout d'un fournisseur il était possible d'ajouter une autre adresse mail pour un fournisseur avec les infos qui vont avec dans les textbox
merci par avance
 

Dranreb

XLDnaute Barbatruc
Bonjour
Oui, je n'avais pas fais attention: vous ne pouvez taper aucun nouvel élément parce qu'il y a CL.CorrespRequise = True
Supprimez cette instruction.
Vous pouvez mettre à la place :
VB:
CL.CouleurSympa
La couleur de fond des ComboBox indiquera alors s'il portent un élément figurant dans leurs liste, assumé ou spécifié.

Et oui, il est possible de créer une 2ième ligne pour un fournisseur avec une adresse mail différente.
 

Dranreb

XLDnaute Barbatruc
Il faut, pour l'instant, avoir renseigné au moins une TextBox en plus des ComboBox pour que le contact puisse être ajouté.
Si vous voulez pouvoir ajouter une ligne avec seulement Fournisseur et Mail il faut corriger dans la Sub HabiliterContrôles:
VB:
With CBnValider
   .Enabled = (Différent Or LCou = 0) And NbCBxRens > 0
   .Caption = IIf(LCou = 0, "Ajouter", "Modifier")
   End With
 

Discussions similaires

Statistiques des forums

Discussions
312 189
Messages
2 086 031
Membres
103 101
dernier inscrit
CyberAlex93