Je voudrais savoir si il est possible de changer la couleur de la valeur d'une textbox grâce un TooggleButton ?
Je m'explique ,j'ai une textBox qui affiche un montant(s'affiche en rouge) est qui est liée à une combox.
Question:
1) Je voudrais passer le montant en bleu par l'intermédiaire d'un bouton à bascule ?
2) mettre une ligne de code sur la bouton "Valider" de mon USF pour que bouton à bascule revienne à sa position initial après la validation ?
Exemple :
Je sélectionne le nom "TITI" dans ma liste il m'affiche le montant de"99.22€" je clique sur le bouton bascule cela me donne "99.22€" .je valide
Résultat après validation
Je sélectionne le nom "Maxou" dans ma liste il m'affiche le montant de"3282,00€" et ainsi de suite ....
Pour info:
le rouge est = aux sommes dues
le blueu est = aux somme payées
J'ai réussi à programmer une partie du bouton à bascule mais je n'arrive pas :
1) conserver le montant afficher dans la textbox
2) à revenir à la position initial .
Voici le code que j'ai réaliser:
Code:
Private Sub ToggleButton1_Click()
If ToggleButton1.Caption = "Somme Dûe" Then
MontantGlobal.Value = ""
MontantGlobal.ForeColor = &H8&
MontantGlobal.Value = " "
MontantGlobal.ForeColor = &HFF0000
ToggleButton1.Caption = " PAYER "
Else
MontantGlobal.Value = " PAYER"
MontantGlobal.ForeColor = &HFF0000
ToggleButton1.Caption = "Somme Dûe "
End If
End Sub
Si quelqu'un peut m'aider à le modifier pour obtenir le résultat se serai sympas. De plus si le bouton à bascule n'est pas le bon choix je vous laisse me conseiller sur le meilleur contrôle à utiliser pour se genre d'action .
pour la deuxième question la macro suffira je la placerais dans la macro "CommandBoutton" de mon programme .
Vous remerciant par avance de votre aide je vous dis à plus .Amicalement Br44
Tu n'a pas à être désolé de ne pas savoir, d'autant plus que ce que tu as fait est déjà pas si mal.
Pour ta dernière question, dans le fichier que tu m'a donné, seules les bonnes cellules sont modifiées en bleues( colonnes Q,Z,AI). Sans doute as-tu fais, par mégarde, ce qui arrive parfois, quelque chose depuis ton dernier fichier.
Un grand Merci à toi pour ton intérêt , en se qui concerne mon fichier j'ai fais des essais sur ma macro ,mais vu qu'ils n'étaient pas concluant je ne les ai pas gardés .
Pour infos : je crois que j'ai trouvé où se situe une partie du problème .
Je pense peut-être avoir fais un mauvais choix au niveau du toggleButton2
,oui car il valide l'ensemble des N°de facture de liste au lieu de valider le n°celui qui est affiché .(il ne revient pas à ça position initial à chaque changement)
Pour illustrer mon propos je prend comme exemple la deuxième ligne de mon tableau .
Quand tu sélectionne le nom de"Maxou" dans l'usf il affiche trois N°de facture . Si tu sélectionne la facture 250 il affiche un montant de 789,00€,ensuite tu valide avec le toggleButton et la il passe en bleu ,jusque là c'est normal . Mais si on remonte au n° précédant (150) où suivant(35) on voit que le montant est lui aussi en bleu ,or je voudrais qu'il reste rouge
D'où ma question que je me pose :Comment faire pour que le bouton ne valide que les montant affichés ?
A partir de là il me serait plus facile de valider dans ma macro tout les montants qui seraient égal à "payer" où à la position "True" du bouton .
le deuxième problème est de renvoyer cette couleur bleu à la cellule correspondante? j'ai essayer de faire une boucle sur les colonnes allant de "Q à AI" mais sans résultat pour l'instant .
De plus hier en regardant sur le forum j'ai lu un poste sur un commandeButton qui fonctionnait comme une case à cochée. Est-il possible de le faire avec n'importe quelle bouton?
Voilà où j'en suis actuellement .
En espérant que toute c'est informations puissent t'aider et quelles soient suffisamment claire pour comprendre mon problème .
De mon côté je continu de chercher une solution. Je te remercie de nouveau pour le coup de main et m'excuse de pour mes explications parfois dur à comprendre . Je te dis à bientôt sur se fil .Amicalement BR44
1 - rajouter une colonne cachée à chaque combobox qui contiendra un indicateur (paye/sommedue) exemple avec NFacture:
Code:
With NFacture
.AddItem Cells(lig, X)
.List(.ListCount - 1, 1) = Cells(lig, X).Offset(0, 1)
.List(.ListCount - 1, 2) = "" ' chaine vide par défaut mais tu pourrais mettre "payé" ou "dûe" suivant la couleur d'écriture de la cellule
End With
2 - Tes togglebutton:
Code:
Private Sub ToggleButton2_Click()
If ToggleButton2 Then
MonFacture.ForeColor = &HFF0000
ToggleButton2.Caption = "PAYER "
With NFacture
If .ListIndex > -1 And MonFacture = Format(.List(.ListIndex, 1), "#,##0.00 €") Then
.List(.ListIndex, 2) = "Payer"
End If
End With
Else
ToggleButton2.Caption = "Somme Dûe1"
MonFacture.ForeColor = &HC0&
With NFacture
If .ListIndex > -1 And MonFacture = Format(.List(.ListIndex, 1), "#,##0.00 €") Then
.List(.ListIndex, 2) = "Dûe"
End If
End With
End If
End Sub
3-
Code:
Private Sub combochange(Cb As MSForms.ComboBox, tb As MSForms.TextBox, TG As MSForms.ToggleButton)
If Cb.ListIndex = -1 Then Exit Sub
If Cb.List(Cb.ListIndex, 2) = "Payer" Then
tb.ForeColor = &HFF0000
TG = True
Else
tb.ForeColor = &HC0&
TG = False
End If
tb.Value = Format(CCur(Cb.List(Cb.ListIndex, 1)), "#,##0.00 €") 'mise au format de la TextBox1
End Sub
Tout d'abords je tiens à te remercier vraiment beaucoup pour le travail que tu as fais c'est tout simplement génial !!!!!
Je viens de tester toutes les macros est cela fonctionne bien .
L'idée de rajouter une colonne cachée dans la listbox est très fortes .
Je me suis juste permis de modifier le code suivant :
Code:
Private Sub combochange(Cb As MSForms.ComboBox, tb As MSForms.TextBox, TG As MSForms.ToggleButton)
If Cb.ListIndex = -1 Then Exit Sub
If Cb.List(Cb.ListIndex, 2) = "Payer" Then
tb.ForeColor = &HFF0000
TG = True
Else
tb.ForeColor = &HC0&
TG = False
End If
tb.Value = Format(CCur(Cb.List(Cb.ListIndex, 1)), "#,##0.00 €") 'mise au format de la TextBox1
End Sub
En remplacent la première ligne de la façon suivante :
Code:
Private Sub combochange(Cb As MSForms.ComboBox, tb As MSForms.TextBox, TG As MSForms.ToggleButton)
par :
Code:
Private Sub combochange[SIZE="3"][B]1[/B][/SIZE](Cb As MSForms.ComboBox, tb As MSForms.TextBox, TG As MSForms.ToggleButton)
pour la raison suivante:
Il y a déja une private sub combochange dans le programme .
J'ai donc également ajouter dans l'appel du Nfacture Change la procédure suivante :
je post à nouveau pour comprendre où j'ai fais erreur dans ma macro ?
Voilà mon programme fonctionne bien au niveau de l'usf ,mais je n'arrive pas à trouver la solution pour renvoyer la valeur de la textbox "Monfacture" vers les cellules correspondantes?
Soit que je bête et stupide et dans ce cas je dois apprendre le petit manuel du vba pour les nul par coeur où je démissionne ?
je vais essayer de m'expliquer clairement :
Si je valide la facture 150 qui à pour montant (TextBox) 20,08€ et que je la passe en bleu j'ai toutes les cellules des autres colonnes qui passe en bleu soit pour les factures 250,35 . aussi ,hors je voudrais que se ne soit que la cellule concernée qui change de couleur .
Je mets ci joint une version de mon fichier avec les dernière modifications ,la macro sur la quelle je bloc , et trois exemplaire du tableau montrant les résultats suivant:
1) le tableau avant modification
2) le tableau après l'application de ma première macro
3) le tableau avec le résultat que je voudrais .
plus la macro que j'ai tenter et qui beug sur une erreur 438 .
Si quelqu'un peut m'expliquer où j'ai comis une erreur et me donner une piste pour continuer cette macro se serais gentil ?
pour ma part je pense que le problème se situe au niveau de la déclaration de ma variable et l'autre au niveau de ma boucle (avec laquelle je tourne en rond ) .
Vous remerciant tous et toutes pour l'aide que pourriez m'apporter je vous dis à bientôt .Amicalement BR44
Voici quelque correction faites, l'exemple n'est valable que pour NFacture, à toi de faire pour les autres suivant le même schema.
Re-lis tout le code et regarde ce qui a changé
A+
[Edition] nouvelle version du fichier à 8:58 (correction d'une erreur)
Je viens de comparer les deux versions et j'ai vu les modification que tu as faite ,c'est impressionnant ! non seulement tu as corrigés ma macro mais en plus tu as alléger le programme ,je suis confus
je voudrais juste pourquoi tu as suprimés cette ligne de code :
Code:
Private Sub combochange(nomcombo As String, nomtextbox As String)
With Me.Controls(nomcombo)
If .ListIndex = -1 Then Exit Sub
Me.Controls(nomtextbox).Value = Format(CCur(.List(.ListIndex, (.ColumnCount - 1))), "#,##0.00 €") 'mise au format de la TextBox1
End With
End Sub
afin de savoir si je peux utiliser de nouveaux "combochange" à la place de "combochange1" se qui me permettra aussi de comprandre la différence entre les deux .
j'ai également observé que tu as affecter la couleur bleu à ce nivau :
Code:
For X = coldep To colder Step pas
With NFacture
.AddItem Cells(lig, X)
.List(.ListCount - 1, 1) = Cells(lig, X).Offset(0, 1)
If Cells(lig, X).Offset(0, 1).Font.ColorIndex = 5 Then '[COLOR="Magenta"]<***** ICI[/COLOR]
'La facture à déjà étée payée
.List(.ListCount - 1, 2) = "Payer"
Else
'la facture est dûe
.List(.ListCount - 1, 2) = ""
End If
End With
Pourrais-tu m'expliquer pourquoi ?
Voilà en quelque lignes les question que je me pose . Je te remercie à nouveau pour tout en espérant que cela ne ta pas trop déranger .
Je remercie aussi toutes celles et tous ceux qui ont pris le temps de lire se poste . Amicalement à tous BR44
Alors première question:
Pourquoi j'ai supprimé la procédure
Code:
Private Sub combochange(nomcombo As String, nomtextbox As String)
Parcequ'elle est devenue inutile à partir du moment où j'avais ecrit ComboChange1 qui a pour avantages:
1 - de passer les paramètres en tant qu'objet et non par leur nom
2 - de comporter un paramètre supplémentaire (TG As MSForms.ToggleButton) qui permet de traiter le togglebutton pour le mettre à false ou true
Dans cette nouvelle procédure en fonction de la valeur du paramètre 'Cb', le combobox qui a changé, on peut ainsi paramétrer le textbox et le togglebutton idoines.
Pour la deuxième question. Il ne s'agit pas d'affecter une couleur mais de voir si la couleur de la cellule est bleue. Si oui, c'est que la facture a déjà été payée, sinon c'est qu'elle est dûe.
Imagine: tu lances ton userform avec les factures dûes (non bleues) de MAXOU tu changes l'état de certaines factures (payées*); tu valides et fermes ton userform pour aller boire un café (ou une bière) et te détendre les neurones. Tu reviens, relances ton userForm, affiches les factures de MAXOU, il faudra bien que le programme reconnaisse celles qui on été payées la fois précédentes (avant le café-détente).
Ce changement de stratégie à cette fonction.
Code:
[COLOR=red][B]'Si la couleur de police est [COLOR=deepskyblue]bleue[/COLOR][/B][/COLOR]
If Cells(lig, X).Offset(0, 1).Font.ColorIndex = 5 Then
[COLOR=red][B]'La facture à déjà étée [COLOR=deepskyblue]payée[/COLOR][/B][/COLOR]
[COLOR=#00bfff][B] 'comme si on avait cliquer sur le togglebutton correspondant.[/B][/COLOR]
.List(.ListCount - 1, 2) = "Payer*"
Else
[B][COLOR=red]'la facture est dûe[/COLOR][/B]
.List(.ListCount - 1, 2) = ""
End If
* je trouve que le mot 'Payer' prête à confusion est-ce l'action de payer ou l'état payé? D'ailleurs il me semble que des cases à cocher seraient moins ambigües, ce n'est que mon avis les mots dépendent beaucoup de celui qui les lit.
Pour comprendre comment se déroule ton programme mets des points d'arrêt à des endroits stratégiques comme 'Combochange1' (curseur sur la ligne et F9). Puis lorsqu'il s'arrête sur cette ligne fait des F8 pour avancer ligne à ligne dans le déroulement et voir ce qui se passe, comment les procédures s'appellent les unes, les autres.
Si tu es arrivé jusque là c'est que t'as du mérite.