Créer un plage pour alimenter un Combobox

  • Initiateur de la discussion Initiateur de la discussion br44
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

br44

XLDnaute Impliqué
Bonjour le forum ,

Je voudrais afficher dans un Combobox le résultat de colonnes et l'associer de manière à obtenir le résultat suivant :

Nom + le n° de facture de chaque mois (1 résultat toutes 9 colonnes )

J'ai déjà fait les variables qui associent le n° au montant mais je n'arrive pas à les associer à ma liste de départ .

Le résultat que je voudrais obtenir est le suivant :

Si je sélectionne le Nom de MAXOU dans ma liste je voudrais que s'affiche dans la ConboBox (N°de facture) les cellules P ,Y, AH de la lignes 13 soit 125, 250, 35, (Voir ligne 2 du tableau) et ceci pour chaque nom de la liste ?

Pour l'instant j'ai réussi à afficher tout la colonne 16 mais je veux juste les cellules correspondantes à la ligne .

Je joins mon fichier avec le tableau ,l'USF et mon programme .


Si ma demande n'est pas claire où si il vous manquait des éléments faites le moi savoir . Je ne vous demande pas de faire le programme mais de me donner l'explication ou les procédures de base pour que je puisse avancer .

Vous remerciant par avance de votre aide je vous dit à plus sur se fil . Amicalement Br44
 

Pièces jointes

Re : Créer un plage pour alimenter un Combobox

Bonjour

Une piste

Pour alimenter le combobox il faudrait utiliser une boucle for next step 9 (9 pas entre les colonnes)

For i = 16 To 34 Step 9
NFacture.AddItem Cells(13, i)
Next i

JP
 
Re : Créer un plage pour alimenter un Combobox

Re: Bonjour Jp14,le forum

Bon je viens de tester ta macro elle fonctionne sur le principe ,mais quelques questions à te poser si cela ne te dérange pas .

1°) pourquoi tu pars de la ligne 13 = "Nfacture.AddItem cells(13,i) quand le tableau commence en ligne 12 ?

2°) quand je la place dans ma macro je n'est que 2 N° de facture (il manque le N° 250 ) qui s'affiche au lieu de 3

3°) J'ai les autres N° qui s'affiche entrent les deux N° de facture es-ce normal?

Je te mets ci-dessous ma macro modifier avec ton code :


'Définit la varible C
Set C = Range("AH12:AH" & Range("AH65536").End(xlUp).Row)
For X = 16 To 34 Step 9
NFacture.AddItem Cells(12, X)
Next X
'alimentation de la listbox
For Each Cel2 In C 'boucle sur toutes les cellules Cel2 de la plage C
NFacture.AddItem (Cel2.Value) ['ajout du numéro de facture (en colonne 0 de la listbox) /COLOR]
'ajout de la somme facturée (en colonne 1 de la listbox)
With Me.NFacture 'prend en compte la listbox
.Column(1, .ListCount - 1) = Cel2.Offset(0, 1).Value 'ajout de la somme
.Column(1, .ListCount - 1) = Format(.Column(1, .ListCount - 1), "#,##0.00 €") 'mise au format de la somme
End With 'fin de la prise en compte de la listbox
Next Cel2 'prochaine cellule Cel2 de la listbox


Te remerciant à nouveau pour le coup de main je te dis à plus .Amicalement BR44
 
Re : Créer un plage pour alimenter un Combobox

Bonsoir
En réponse à ta question j'ai utilisé cette info comme exemple

Bonjour le forum ,
Le résultat que je voudrais obtenir est le suivant :

Si je sélectionne le Nom de MAXOU dans ma liste je voudrais que s'affiche dans la ConboBox (N°de facture) les cellules P ,Y, AH de la lignes 13 soit 125, 250, 35, (Voir ligne 2 du tableau) et ceci pour chaque nom de la liste ?

Pour afficher les numéros de facture en fonction des noms il faut modifier les procédures.

Code:
Private Sub UserForm_Initialize()
'Initialise à l'ouvertue de l'UserFrom
'Création de la Liste de Choix"Nom des Clients"
'déclare la variable x et xx
 ..................................................
 
'On remplit la liste des Noms
'On boucle sur toutes les cellules de la plage A
 la combobox
...............................
With Me.NomClient
.Clear
.ColumnCount = 3
.ColumnWidths = "50;0;0"
.Style = fmStyleDropDownList
For Each Cel In A 'boucle sur toutes les cellules Cel de la plage A
    .AddItem (Cel.Value) 'ajout le nom du client(en colonne 0 de la listbox)
    'ajout le montantGlobal (en colonne 1 de la listbox)
    'prend en compte la listbox
        .Column(1, .ListCount - 1) = Cel.Offset(0, 1).Value 'ajout de la somme
        .Column(1, .ListCount - 1) = Format(.Column(1, .ListCount - 1), "#,##0.00 €") 'mise au format de la somme
        .List(.ListCount - 1, .ColumnCount - 1) = Cel.Row
     'fin de la prise en compte de la listbox
Next Cel 'prochaine cellule Cel de la listbox
End With
............................................
Le numéro de la ligne est associé au nom dans la troisième colonne.

Quand on change le nom du client on remplit le combobox NFacture

Code:
Private Sub NomClient_Change() 'récupère F1 F2 etc... pour modification
........................................
Dim lig As Long
lig = CLng(NomClient.List(NomClient.ListIndex, (NomClient.ColumnCount - 1)))
For X = 16 To 34 Step 9
    NFacture.AddItem Cells(lig, X)
Next X

A modifier et à tester

JP
 
Dernière édition:
Re : Créer un plage pour alimenter un Combobox

Bonjour JP14,le forum ,


Bon je viens te mettre au courant ,je suis perdu je n'arrive pas à adapter ta macro à mon programme .

Si je modifie le variable "C" j'ai une erreur de "bloc With non définit"

Enfin bref en un mot 'Je Nage 😕😕😕😕😕😕😡😡😡

Je me permet ,si tu à un peut de temps , me modifier la variable "C",où m'expliquer ta procédure , avec les éléments suivants:

il faut prévoir 10 colonnes (Capacité maximum)
Dans mon fichier le tableau est réduit à 3 mois , mais il couvre une année complète .

De mon côté je cherche un moyen d'adapter ta macro pour que je puisse afficher 3 N° de facture mais je n'y arrive pas non plus .

S'il faut passer par des listes index et des colonnes index ,cela n'est pas grave du moment que ça marche .

voici des éléments complèmentaires:
La plage pour l'ensemble des mois ="P😀K"

La plage des mois = "P😀R" pour le N° de facture =listeBox1 (variable "C")

Si il te faut d'autre informations,fait le mois savoir .

Je te remercie par avance et m'excuses d'être aussi nul . Amicalement BR44
 
Re : Créer un plage pour alimenter un Combobox

Rebonjour à tous ,

Juste ce petit message pour vous dire que vous joint la dernière version de mon fichier .

Comme tu pourras le constaté il juste rajouter des colonnes supplémentaires au variables "C,D,E et F" et peut être rajouter une condition du style :
ne pas afficher les "0" .

Cela évitera d'avoir trop de chiffres dans les listebox .

Espérant que cela te seras utile je te dis de nouveau merci pour le coup de main . Amicalement BR44
 

Pièces jointes

Re : Créer un plage pour alimenter un Combobox

Bonsoir

Je n'ai pas compris la fonction des combobox.
Le premier permet de sélectionner un nom.
A ce nom est associé un numéro de facture ( un numéro par mois ) ainsi que des annexes à cette facture.
Si on sélectionne un nom et un numéro de facture le choix est de ce fait terminé.
Un peu d'explication est nécessaire pour écrire le code.

@+

JP
 
Re : Créer un plage pour alimenter un Combobox

Bonsoir,JP14,le forum

Merci pour ta réponse aussi rapide .

Oui le but est quand je sélectionne un nom dans la combobox1 (nom client )et qu'il affiche :

1) le Montant global = qui correspond au total des factures sur l'année (tout les types de facturation sur 1ans)

2) les n° des factures par types :

1- N° factures= combo 2
2- n° annexe facture 1 =combo 3
3- n° annexe facture 2 = combo 4
4- n° facture unique = combo 5

Comme tu peut le voir sur l'usf à coté de la textbox(Montant global) et des combo 2,3,4,5 il y a un bouton à bascule qui me servira à valider le paiement de la facture correspondant soit au montant total soit au montant d'une où de plusieurs factures . Oui certain client paye plusieurs facture avec un seul chèque d'autre un chèques par facture .

C'est pour cela que j'aurais voulu que le où les n° de factures s'affiche en association avec les noms enfin si c'est possibles .

Espèrant que c'est explications soit claire je te dis à plus et merci encore .

Si tu besoin d'un exemple un peut plus complet dis le mois je complèterais le tableau avec divers exemples . Amicalement Br 44
 
Re : Créer un plage pour alimenter un Combobox

Bonsoir

Ci joint le fichier avec les procédures pour alimenter les combobox.
J'utilise des combobox avec des colonnes cachées qui contiennent le numéro de ligne pour le nom, le montant de la facture pour les numéros de facture.
Pour avoir une année complète il suffit de modifier la valeur de la dernière colonne au niveau des variables publiques.


A tester

@+

JP
 

Pièces jointes

Re : Créer un plage pour alimenter un Combobox

Bonjour Jp14,le forum

Un très grand merci à toi pour ton dernier message et le fichier que tu as joint

Je viens de regarder et je trouve cela génial !!!!!

Je n'est pas tout compris mais ils me sembles que cela devrais parfaitement convenir .

juste une questions en passant : A part le dernière colonnes pour l'affichage annuel il-y-t-il d'autre variables à changer sur le programme ?

Je teste avec mon programme et te tiens au courant si j'ai un problème pour comprendre quelques choses .


Te remerciant vraiment beaucoup je te dis à bientôt sur ce fil où sur le forum. Amicalement Br44
 
Re : Créer un plage pour alimenter un Combobox

Bonsoir le forum ,Jp14,

Comme prévue dans mon dernier message je vous donne des nouvelles de ma progression .

En ce qui concerne l'adaptation de la procédure ça marche très bien ouf !!!!😛😛

Mais maintenant j'ai un problème d'affichage de textBox dans mais cellules .

J'ai essayer plusieurs types de boucle (For each , For X = , ect..) je n'arrive pas à afficher mes textBox dans mon tableau , le vba ne signal aucun problème de variable où autre .

J'ai tenter de reprendre une de mes procèdure que j'utilise pour un autre fichier est la pareille aucun résultat .

Bon je sais je ne suis pas doué ,mais quand même là je commence à me poser des questions 😕😕😕😕

Je vous mais ci-dessous la dernière procédure utilisée ,si quelqu'un peut me dire ou se trouve l'erreur et m'expliquer pourquoi je suis preneur .

Code:
Private Sub CommandButton1_Click() 'Bouton "VALIDER"
'Je choisi le Nom du Client dans la ComboBox1 (NomClient)
 If NomClient.Value = "" Then
'Je Selectionne la feuille du classeur consernée
 With Sheets("SAISIE1")
'Je recherche la dernière ligne de la colonne "A" (NomClient)
 DerLig = .Range("A11:A" & Cells.Rows.Count).End(xlUp).Row + 1
  For X = 1 To 4
'Je rentre les données dans le tableau
 'Pour les N° de Chèques
    .Range("B11" & DerLig).Value = NCheque1.Value
    .Range("C" & DerLig).Value = NCheque2.Value
    .Range("D" & DerLig).Value = NCheque3.Value
    .Range("E" & DerLig).Value = NVirement.Value
 'Pour les Montant des Chéques
    .Range("F" & DerLig).Value = Montant1.Value
    .Range("G" & DerLig).Value = Montant2.Value
    .Range("H" & DerLig).Value = Montant3.Value
    .Range("I" & DerLig).Value = Montant.Value
 'Pour la date des Chéques
    .Range("J" & DerLig).Value = Date1.Value
    .Range("K" & DerLig).Value = Date2.Value
    .Range("L" & DerLig).Value = Date3.Value
    .Range("M" & DerLig).Value = DateVirement.Value
 'Pour le N° de bordereau
    .Range("N" & DerLig).Value = Nbordereau.Value
 'Pour la Banque
    .Range("O" & DerLig).Value = Banque.Value
Next X
 
'Je quitte le feuille sélectionnée
End With
'Je quitte la recherche
End If

End Sub

Vous remerciant toutes et tous par avance et m'excusant de vous déranger à nouveau pour un petit problème ,je vous dis à bientôt sur ce fil .Amicalement Br44
 
Re : Créer un plage pour alimenter un Combobox

Bonsoir

Bonsoir le forum ,Jp14,


Code:
Private Sub CommandButton1_Click() 'Bouton "VALIDER"
'Je choisi le Nom du Client dans la ComboBox1 (NomClient)
 If NomClient.Value = "" Then


A la lecture de ton code, l'enregistrement se fait s'il n'y pas de de nom. il faudrait écrire
Code:
 If NomClient.Value = "" Then exit sub
ou 
if ComboBox1.listindex=-1 then exit sub si on doit choisir un nom de client

A tester

JP
 
Dernière édition:
Re : Créer un plage pour alimenter un Combobox

Bonjour JP14, le forum ,


Merci à toi au grand maître d'excel je teste et te tien au courant de la suite des événements ,car je dois attaqué les boutons à bascule .

D'ailleurs à se sujet faut-il que je change de fil où je continue sur celui-ci ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
17
Affichages
931
Réponses
40
Affichages
1 K
Réponses
6
Affichages
214
Réponses
5
Affichages
125
Retour