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

Bonsoir,Jp14,le forum

Un grand merci pour les modifications des toggleButton et pour ton dernier message . Le résultats fonctionnes au niveau de l'affichage .

Bon il ne reste plus cas régler le problème d'envoie des informations vers la feuilles "Récap Impayer " .

Je croie avoir trouver où se trouve le problème mais je but à trouver une solution .

Je t'explique le petit souci :

La validation de l'usf se fait bien au niveau de la première feuille ,mais pas dans la deuxième ,hors dans ma procèdure il n'y à pas de beug vba .

Deux hypothèse me vienne à l'esprit:

1) Soit qu'il n'affiche pas pars qu'il ne vas pas rechercher les noms de clients dans la feuille ?

2) j'ai omis une variable dans la procédure de validation ?

Le programme reste bloqué sur la première feuille comme si il ignorait la deuxième partie .

Si tu peut voir où se trouve l'erreur se serais génial , je continue à rechercher de mon cotée dans l'espoir de trouvée une solution avec "else" mais dans se cas quelle condition " if" mettre au début de procédure ?

Te remerciant beaucoup pour tout je te dis à plus .Amicalement BR44
 
Re : Créer un plage pour alimenter un Combobox

Bonsoir

On trouve dans le corps de la macro ce type de code

With NFacture
If .Value = "" Then Exit Sub

Ce code doit se mettre au début, sinon on met à jour une partie du documents.

Il faudrait écrire pour sauter le traitement correspondant à NFacture
With NFacture
If .Value = "" Then
...........................
.........................
end if
end with

Il est plus simple d'écrire au début de la procédure.
If NomClient.Value = "" Then Exit Sub

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

Bonjour Jp14,le forum

Comme prévue dans mon dernier message je viens donner des nouvelles .

J'essaye d'appliquer tes derniers conseils à ma macro et je n'y arrive pas .

Faut-il que je supprimes les boucles ?

faut_il maitre qu'une seul fois où deux la condition :

If NomClient.value="" Then Exit sub ?

Je t'avoues franchement que je ne sais plus, cela va faire 24 heures que je suis là dessus et je n'y comprend plus rien .

A part qu'il refuse toujours de me valider les données la deuxième feuille .

Si tu me dire se que je dois garder où supprimer et comment je dois écrire le début de macro (où placer la condition ,avant où après le nom des feuilles).

Voilà où j' en suis et cela commence à m'énerver . 🙁🙁🙁🙁:😡😡

Je te dis à bientôt et te remerciant beaucoup pour ta patience et pour tout le reste .Amicalement BR44
 
Re : Créer un plage pour alimenter un Combobox

Bonsoir

Dans le corps de la macro on trouve ce code
Code:
 With NAnFacture1
   If .Value = "" Then Exit Sub

.................................
'Pour la Combo Facture Unique
    With NFactureUnique
          If .Value = "" Then Exit Sub
.......................................

'Pour la combo Facture
  With NFacture1
   [COLOR="Red"] If .Value = "" Then Exit Sub[/COLOR]
.........................................

Si toutes les conditions avant le test de NFacture1 sont remplies les instructions seront exécutées et arrivant à la ligne en rouge on sort de la procédure et les informations ne seront pas inscrites.


Pour éviter ce problème, il faut écrire au début de la procédure toutes les conditions nécessaires pour réaliser l'opération en informant l'opérateur des conditions manquantes.
Dans ce type de code on peut utiliser exit sub, puisque la procédure ne doit pas être exécuter.
exemple :
Code:
......................................
 If NomClient.Value = "" Then
    Call MsgBox("Vous ne pouvez enregistrer, il n'y a pas de client", vbInformation, Application.Name)
    Exit Sub
 End If

.................................

Si une variable n'est pas obligatoire, seul le concepteur les connait, il faut écrire comme ci dessous pour sauter la partie.

Code:
'Pour la combo AnnexeFacture1
 With NAnFacture1
   [COLOR="Lime"]If .Value <> "" Then[/COLOR]  '     [COLOR="Red"]à supprimer exit sub[/COLOR]
'Balayer tous les items
   For X = 0 To .ListCount - 1
'si l'item est "Payer"
'alors mettre couleur bleue dans la bonne colonne uniquement
   If NAnFacture1.List(X, 2) = "Payer" Then
      Sheets("SAISIE1").Range("K" & Lig).Offset(, X * 9).Font.ColorIndex = 5 'bleu
   Else
      Sheets("SAISIE1").Range("K" & Lig).Offset(, X * 9).Font.ColorIndex = 3 'Rouge
   End If
  Next X
[COLOR="Lime"]end if[/COLOR]
End With


J'espère avoir été clair.

A +

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

Bonjour Jp14,le forum

Je viens pour te dire que j'ai enfin réussi à régler le problème . j'ai ajouter un nouveau bouton pour valider les factures impayées .

Je te remercie vraiment beaucoup pour toutes l'aides que tu m'as apporté et de ta patience pour la quelles tu à fait preuve .

Je joints la dernière version du fichier avec l'ajout du bouton et de la macro .

Je n'est toujours pas compris pourquoi il y a un conflit entres les deux feuilles au niveau des noms des clients quand les macros sont ensemble ,mais bon ce n'est pas grave le principal étant que cela fonctionne .

Comme tu pourras le voir dans la feuille"Recap Impayer" la première ligne n'est pas valider ,c'est le résultat de la macro avec un seul bouton
La deuxième ligne étant le résultat avec les deux boutons .

Te remerciant pour tout de nouveau je te dis à bientôt sur le forum et je tiens à remercier ègalement tout ceux et celles qui ont pris le temps de lire se post en espérant qu'il rendent service à d'autres personnes . Amicalement à tous BR44
 

Pièces jointes

Re : Créer un plage pour alimenter un Combobox

Bonsoir jp14,le forum

Désolé de revenir te déranger mais j'ai juste omis une boucle sur cette partie du code :
Code:
[COLOR="Green"]'Je Selectionne la feuille du classeur consernée[/COLOR]
[COLOR="Blue"]With[/COLOR] Sheets("RECAP IMPAYER")
 [COLOR="Blue"]If[/COLOR] NomClient.Value = "" [COLOR="Blue"]Then Exit Sub[/COLOR]
     [COLOR="Green"]'Je rentre les données dans le tableau[/COLOR]
[COLOR="Green"] 'Pour les N° de Chèques où de virement[/COLOR]
    .Range("K" & Lig).Value = NCheque.Value
 [COLOR="Green"]'Pour le Montant des Chéques où de virement[/COLOR]
    .Range("J" & Lig).Value = Montant.Value
 [COLOR="Green"]'Je mets au format les TextBox[/COLOR]
     Montant.Value = Format(Montant, "#,##0.00 €")
 [COLOR="Green"]'Pour la date des Chéques où de virement[/COLOR]
    .Range("L" & Lig).Value = Date1.Value
[COLOR="Green"] 'Pour la date de la saisies des Chéques où des virements[/COLOR]
    .Range("M" & Lig).Value = DateSaisie.Value
[COLOR="Green"] 'Pour la Banque[/COLOR]
    .Range("N" & Lig).Value = Banque.Value
[COLOR="Green"]'Pour le N° de bordereau[/COLOR]
    .Range("O" & Lig).Value = Nbordereau.Value
[COLOR="Green"]'Je quitte le feuille sélectionnée[/COLOR]
[COLOR="Blue"]End With[/COLOR]

Oui il faudrait une boucle pour que les informations soit elles aussi répartie en fonctions du mois .

Exemple:
1) je règle une facture en janvier pas de problème les infos s'affiche en Janvier .
2) Je règle une facture en février pour des factures de janvier et février il faut que les infos soit réparties en Janvier et Février
3) Je régle une facture en février il faut que les infos soit réparties en février

J'ai essayer ceci :
.Range("K" & Lig).offset(,y*14).Value = NCheque.Value
mais cela beug au niveau vba .

Si tu as une petite idée la dessus n'hésites pas .

Te remerciant par avance et m'excusant pour cette omission je te dis à plus . Amicalement BR44
 
Re : Créer un plage pour alimenter un Combobox

Bonjour JP14,le forum

Je vient donnée des nouvelles de ma situation depuis notre dernier message (en MP).

Voilà en cherchant dans mon programme j'ai trouvée une macro qui permet d'afficher plusieurs TexBox en fonction d'une liste de choix . j'ai donc essayer de l'adapter à ma macro mais là elle beug .

Je me pert donc de la déposer sur se post pour voir si tu m'expliquer d'où vient le problème .

Voici la macro consernée :
Première partie : je l'ai placé à cette endroit pour l'associé au N° de facture.

Code:
 Private Sub NFacture1_Change() 'au changement dans la listbox
[COLOR="Blue"]Call[/COLOR] Combochange1(Me.NFacture1, Me.MonFacture1, Me.ToggleButton5)

[COLOR="Green"]'Déclare la varible LNFacture1[/COLOR]
[COLOR="Blue"]Dim[/COLOR] LNFacture1[COLOR="Blue"] As Integer[/COLOR]

[COLOR="Teal"]'Je récupère les inframtions des textbox pour alimenter le tableau[/COLOR]
LNFacture1 = Cells.Find(NFacture1.Value, LookIn:=xlValues).Row

NCheque.Value = Cells(LNFacture1, 2).Value
NVirement.Value = Cells(LNFacture1, 3).Value
Montant.Value = Cells(LNFacture1, 4).Value
Date1.Value = Cells(LNFacture1, 5).Value
DateSaisie.Value = Cells(LNFacture1, 6).Value
Banque.Value = Cells(LNFacture1, 7).Value
Nbordereau.Value = Cells(LNFacture1, 8).Value
[COLOR="Blue"]End Sub[/COLOR]

Deuxième partie placé au niveau du bouton " Validation facture impayée"

Code:
[COLOR="Teal"]'Je recherche la dernière ligne de la colonne "A" [/COLOR](NomClient)
Lig = CLng(NomClient.List(NomClient.ListIndex, (NomClient.ColumnCount - 1)))


[COLOR="Teal"]'Je Selectionne la feuille du classeur consernée[/COLOR]
[COLOR="Blue"]With[/COLOR] Sheets("RECAP IMPAYER")

[COLOR="Teal"]'Boucle sur l'ensemble des textBox[/COLOR]
[COLOR="Blue"]For[/COLOR] X = 3 [COLOR="Blue"]To[/COLOR] 8
[COLOR="Teal"]'La cellule lig (ligne),X-1(colonne)prend la valeur de la textbox[/COLOR]
[COLOR="Red"]Cells(Lig, X - 1).Value = Me.Controls("LNFacture1" & X).Value[/COLOR]
[COLOR="Teal"]'sort de la boucle jusqu'à la prochaine TextBox[/COLOR]
[COLOR="Blue"]Next[/COLOR] X

Le beug est :Erreur d'exécution :-2147024809(80070057)
Objet spécifie introuvable

Il se situe au niveau de la ligne en rouge dans la deuxième partie du code


D'autre part je joint une feuille de classeur qui représente la résultat que je souhaite obtenir de ma macro (les infos sont bonne mais les tableaux sont à titre d'exemple ) .

Espérant que ma demande soit claire et pas trop complexe à comprendre je te dis à bientôt sur se post . Amicalement BR44
 

Pièces jointes

Re : Créer un plage pour alimenter un Combobox

Bonjour

Il y a des variables qui posent problème
on a
Dim LNFacture1 As Integer

et dans le code
Cells(Lig, X - 1).Value = Me.Controls("LNFacture1" & X).Value

La variable se transforme en Textbox
Si effectivement il y a des textbox qui portent le nom comme LNFacture1, il faut suppprimer la valeur numérique.
Me.Controls("LNFacture" & X).Value

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

Bonsoir jp14, le forum

Un grand merci à toi pour cette réponse ; si j'ai bien compris il faut mettre le nom de la texteBox à la place de "LNFacture1"
et renouvlé la macro pour chaque textbox ?

Bon et bien je vais essayer ça .

La première macro est-elle bien place où faut-il la mettre au niveau du "combochange1" pour que la macro s'applique à tout les numéros de factures ?

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

bonsoir le Jp14,le forum

Bon un petit résumé de la situation , je suis toujours bloqué sur l'affectation des mes textBox par raport au n°de facture de la feuille "RECAP IMPAYEE" si quelqu'un à une idée je suis preneur .

Je résume le problème : je voudrais pouvoir afficher le résultat de mes texteBox en fonction des n°de factures "payer " dans les colonnes situées à la suite du N° de facture (Voir "Résultat pour macro" joint précédemment comme exemple) .


Vous remerciant toutes et tous par avance je vous dis à bientôt sur se fil ; amicalement BR44
 
- 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