Recherche avec plusieurs combobox

Bonsoir EXCEL PRATIQUE

Bonsoir a tous et a toutes

Svp et biensure si vous avez un peu du temps pour m'aider dans cette labyrinthe ..se sera vraiment un grand plaisir de votre part.

J'ai essaye avec cette facture de mettre 10 combobox pour afficher ( code produit ) et une combobox11 pour afficher ( clients )

j'ai alimenté ces 10 combobox par meme colonne D

est ce qu'il ya une autre facon d'alimenter ces 10 combobox d'une façon assez bref

j'ai alimenté combobox11 par colonne C

Ce que je veux voir c'est que lorsque je choisis un code produit par combobox1 s'affichera devant cette combobox le nom du produit "colonne E" dans textbox1

meme chose pour les autres combobox de 2 a 9.

Merci d'avance pour l'aide

Merci aussi pour votre precieux temps

Cordialement

MARTI

1
9marti.xlsm (20.97 Ko)

Bonjour,

Il n'y a que l'alimentation des tes combobox dans ton fichier.

Plutôt que cette énumération, je mettrai "D6:D" & la dernière ligne dans une variable String et j'affecterai cette valeur à la propriété RowSource de tes ComboBox au moyen d'une boucle : For i = 1 to 6 --- Controls("ComboBox" & i).RowSource = ...

Pour la suite, tu crées une procédure de recherche (dans le même module) qui fait la recherche sur ton tableau. La proc. Change de chaque ComboBox appelle cette proc. de recherche en lui donnant en argument son numéro, ce qui permet la proc. d'identifier la valeur cherchée, trouver le produit et l'affecter au textbox produit correspondant au combo appelant. Tu as intérêt à renommer tes TextBox de façon à ce qu'ils puissent être identifiés par combobox et par fonction que tu leur destine...

Avance un peu plus ton projet...

Cordialement

Ferrand

Bonsoir MFerrand

Ravi de te revoir

Franchement j'ai rien compris..

Je suis debutant en excel vba et je veux vraiment apprendre et comprendre

Tiens j'ai fais aussi quelque chose..alimenter les 5 textboxs

y'a pas autre moyen mieux que ces long codes

Merci d'avance pour l'aide

Cordialement

MARTI

14marti1.xlsm (21.47 Ko)

Salut,

Tu as au moins 3 façons d'initialiser les contrôles à l'ouverture d'un Userform.

- si cette initialisation est fixe, tu la fixes à la conception et plus besoin de s'en occuper, elle sera là chaque fois (en laissant de côté les cas où tu réutilise un Userform sans l'avoir déchargé et que la valeur puisse être à réinitialisé, mais là on n'est plus dans l'ouverture initiale)

- si elle est variable, tu peux utiliser la procédure Initialize dans les cas où cette initialisation est homogène,

- tu peux enfin y procéder de l'extérieur, généralement par la procédure qui lance le Userform : on le charger avec l'instruction Load, initialiser les contrôles, puis l'afficher avec Show ; si le Userform a des utilisations diverses et que l'initialisation dépend de l'utilisation, cette méthode est préférable.

Mais ton Userform n'est pas finalisé dans sa mise en forme. Tu vas un peu vite en voulant coder un peu prématurément, tu risques d'avoir pas mal de modifications ultérieures. Prévois qu'il faut pouvoir identifier les contrôles par fonction et par type de choix. Il y a lieu de renommer avec un élément d'identification et un élément de position ou d'ordre (numérique), permettant de les défiler le cas échéant dans une boucle.

Ce que tu ne connais pas, tu l'apprendras au fur et à mesure, mais d'autant mieux que ta conception aura été plus affinée, et que tu sais exactement ce que tu veux obtenir et comment l'obtenir. Le code consiste ensuite à traduire le comment d'une façon interprétable par VBA et Excel. Pardonne moi d'insister mais je crois que en complétant par les étiquettes qui manquent, en redéfinissant les noms selon l'utilisation et les interactions prévisibles (et aussi de façon que toi tu les identifies du premier coup, je suis partisan de noms courts mais cela dépend de la façon de fonctionner de chacun). Ne commencer à coder de préférence que lorsque les noms des contrôles sont en principe définitifs... Dès lors que tu peux indiquer de façon définitive ce qui doit être initialisé et toutes les fonctions que le Userform devra assurer dans son fonctionnement (et ce qui doit se passer à la sortie), tu passes au codage de chaque volet et tu testes au fur et à mesure indépendamment du reste du programme.

Bon courage. A+

Bonsoir MFerrand

Merci ces conseils et pour l'explication

Merci pour tous

Merci pour votre gentillesse

Cordialement

MARTI

merci 001

Un petit complément : en nommant en champ dynamique B6:B... tu mets le nom de plage dans la propriété RowSource du ComboBox et il n'est plus besoin d'initialisation sur ce point. Il faut savoir si les cellules B1 à B4 doivent rester vides ou non.

A+

MFerrand a écrit :

Un petit complément : en nommant en champ dynamique B6:B... tu mets le nom de plage dans la propriété RowSource du ComboBox et il n'est plus besoin d'initialisation sur ce point. Il faut savoir si les cellules B1 à B4 doivent rester vides ou non.

A+

Salut MFerrand

Oui ces cellules restent vides

Merci pour tes remarques

Cordialement

MARTI

Donc tu mets par exemple le nom CodeP avec référence:

=DECALER(Feuil1!$D$6;;;NBVAL(Feuil1!$D:$D)-1;1)

Puis tu définis un nom Clients :

en référence : =DECALER(CodeP;;-1)

Tu utilises les noms dans la propriété RowSource des ComboBox, il n'y aura plus à y toucher.

A+

MFerrand a écrit :

Donc tu mets par exemple le nom CodeP avec référence:

=DECALER(Feuil1!$D$6;;;NBVAL(Feuil1!$D:$D)-1;1)

Puis tu définis un nom Clients :

en référence : =DECALER(CodeP;;-1)

Tu utilises les noms dans la propriété RowSource des ComboBox, il n'y aura plus à y toucher.

A+

Bonsoir MFerrand

Merci pour l'aide

Peux tu svp me mettre ces codes dand le fichier pour mieux comprendre

Croyez moi je me sens sans fichier comme je suis dans terrible tourbillon

Merci d'avance

MARTI

Voilà un exemple :

(Aère et indente ton code si tu ne veux pas que ça devienne vite illisible.)

30marti-marti1.xlsm (23.17 Ko)

Salut MFerrand

il ne me reste que 2 gestes dans ce fichier et sera ma bonheur

* si je remplis les textboxs de (2 à 35) qui sont en realite un facture..comment faire qu'avec un command button transmettre les donnees saisient dans ces textbox dans les colonnes de F à K

* une numerotation automatique dans textbox 37

Merci MFerrand pour votre gentillesse et pour votre aide

Cordialement

MARTI

Tu as noté que j'avais renommé les textbox produits de façon à reduire à 2 lignes (3 si on compte l'appel du combobox) le code pour le rechercher ?

Tu illustres mes propos précédents, il faut savoir ce qu'il y aura dans tes autres textbox et si c'est de la saisie où ça doit aller de façon à d'abord renommer tes textbox afin d'avoir un code simple pour le transfert des données.

Par exemple si les text box d'une même 'colonne' du Userform vont dans une même colonne du tableau, on les renomme de façon à identifier la colonne...

Mais tu me dis que tu dois produire une facture, ce qui me semble un peu curieux avec la liste de clients sur le même tableau...

Salut MFerrand

Oui vous avez raison dans tes remarques

les clients normalement je vais ecrire ses noms dans combobox11

Ici dans ce tableau la liste des clients est comme un simple exemple car en realite je ne sais pas les noms de ces clients sauf au moment de facturation..

Donc je remplis l'userform avec : nom client ,et les textboxs maintenant sont du numero 2 à 35

Le reste est avec des comboboxs

On peut donc mettre la liste des clients dans feuil2 par exemple

J'espere que j'ai bien exprimé

Merci maitre pour tous

Cordialement

MARTI

Rechercher des sujets similaires à "recherche combobox"