Changer la couleur la valeur d'une TextBox

br44

XLDnaute Impliqué
Bonjour à tout le forum

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
 
G

Guest

Guest
Re : Changer la couleur la valeur d'une TextBox

Bonjour,

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.

A+
 

br44

XLDnaute Impliqué
Re : Changer la couleur la valeur d'une TextBox

bonjour Hasco,le forum ,

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
 
G

Guest

Guest
Re : Changer la couleur la valeur d'une TextBox

Bonjour,

A mon avis:

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


Tu appelle la procédure comme ceci:

Code:
Call combochange(Me.NFacture, Me.MonFacture, Me.ToggleButton2)
('Me' n'est pas obligatoire)
Ou
Code:
 combochange NFacture, MonFacture, ToggleButton2

A+
 
Dernière modification par un modérateur:

br44

XLDnaute Impliqué
Re : Changer la couleur la valeur d'une TextBox

Bonjour,Hasco,le forum

Tout d'abords je tiens à te remercier vraiment beaucoup pour le travail que tu as fais c'est tout simplement génial !!!!!;);););):p:p:p:p

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 :

Code:
Call combochange[B][SIZE="3"]1[/SIZE][/B](Me.NFacture, Me.MonFacture,Me.ToggleButton2).


Donc il ne me reste plus qu'à me pencher sur le problème de ma boucle pour affecter le changement de couleur à la cellule correspondante.

Te remerciant de nouveau pour tout je te dis à plus pour ma progression . Amicalement Br 44
 

br44

XLDnaute Impliqué
Re : Changer la couleur la valeur d'une TextBox

Bonsoir HASCo,le forum

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 :p:p:p:p:p:p:p:p:p 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 :p:p:p:p:p:p) .

Vous remerciant tous et toutes pour l'aide que pourriez m'apporter je vous dis à bientôt .Amicalement BR44
 

Pièces jointes

  • ESSAI3.6.zip
    44.6 KB · Affichages: 68
G

Guest

Guest
Re : Changer la couleur la valeur d'une TextBox

Bonjour,

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)
 
Dernière modification par un modérateur:

br44

XLDnaute Impliqué
Re : Changer la couleur la valeur d'une TextBox

Bonjour HAsco,le forum,

Un grand merci à toi pour cette correction .

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 :confused::confused::confused::confused:

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
 
G

Guest

Guest
Re : Changer la couleur la valeur d'une TextBox

Re,

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:cool:. 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.

A+
 
Dernière modification par un modérateur:

br44

XLDnaute Impliqué
Re : Changer la couleur la valeur d'une TextBox

Bonjour Hasco,Le forum

Merci à toi pour toutes ces explications . je comprend mieux le principe de fonctionnement .

J'ai appliquer le même principe pour les autres types de facturation et je suis en plein test je te tient au courant des résultat dès que possible .

Te remerciant par avance pour tout je te dis à bientôt sur se fil.Amicalement BR44
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87