Changer couleur text
Bonsoir le forum,
J'ai deux codes simple qui me permettent de transférer des txtbox dans un TS:
Function TransfereIniModif()
Dim ligne As ListRow
Dim LI As Integer
Set ligne = ts1.ListRows.Add: LI = ligne.Index
With ts1
.ListColumns("ID").DataBodyRange(LI) = FrmRecherche.Cbx_produit2.Value
.ListColumns("Désignation").DataBodyRange(LI) = FrmRecherche.TextDesignation2.Value
.ListColumns("Référence").DataBodyRange(LI) = FrmRecherche.TextReference2.Value
.ListColumns("Numéro").DataBodyRange(LI) = FrmRecherche.TextNumero2.Value
.ListColumns("Code Alice").DataBodyRange(LI) = FrmRecherche.TextCodeAlice2.Value
.ListColumns("Poids").DataBodyRange(LI) = FrmRecherche.TextPoids2.Value
.ListColumns("Emplacement").DataBodyRange(LI) = FrmRecherche.TextEmplacement2.Value
.ListColumns("Quantité").DataBodyRange(LI) = FrmRecherche.TextQuantite2.Value
.ListColumns("Date d'envoie").DataBodyRange(LI) = FrmRecherche.TextDateEntree2.Value
.ListColumns("Nom Stock").DataBodyRange(LI) = FrmRecherche.Cbx_NomStock2.Value
.ListColumns("Lien Image").DataBodyRange(LI) = FrmRecherche.TextLienImage2.Value
.ListColumns("PU/Marge/Prix totale HT").DataBodyRange(LI) = FrmRecherche.TextPrix1
.ListColumns("Ajout/Livr/Com/supp").DataBodyRange(LI) = FrmRecherche.TextModifier.Value & "/" & FrmRecherche.TextInitiale.Value
End With
End Function
Function TransfereFinaModif()
Dim ligne As ListRow
Dim LI As Integer
Set ligne = ts1.ListRows.Add: LI = ligne.Index
With ts1
.ListColumns("ID").DataBodyRange(LI) = FrmRecherche.Cbx_produit.Value
.ListColumns("Désignation").DataBodyRange(LI) = FrmRecherche.TextDesignation.Value
.ListColumns("Référence").DataBodyRange(LI) = FrmRecherche.TextReference.Value
.ListColumns("Numéro").DataBodyRange(LI) = FrmRecherche.TextNumero.Value
.ListColumns("Code Alice").DataBodyRange(LI) = FrmRecherche.TextCodeAlice.Value
.ListColumns("Poids").DataBodyRange(LI) = FrmRecherche.TextPoids.Value
.ListColumns("Emplacement").DataBodyRange(LI) = FrmRecherche.TextEmplacement.Value
.ListColumns("Quantité").DataBodyRange(LI) = FrmRecherche.TextQuantite.Value
.ListColumns("Date d'envoie").DataBodyRange(LI) = FrmRecherche.TextDateAjd.Value
.ListColumns("Nom Stock").DataBodyRange(LI) = FrmRecherche.Cbx_NomStock.Value
.ListColumns("Lien Image").DataBodyRange(LI) = FrmRecherche.TextLienImage.Value
.ListColumns("PU/Marge/Prix totale HT").DataBodyRange(LI) = FrmRecherche.TextPrix1
.ListColumns("Ajout/Livr/Com/supp").DataBodyRange(LI) = FrmRecherche.TextModifier.Value & "/" & FrmRecherche.TextFinale.Value
End With
End FunctionJe voudrais que les texte de la function "TransfereFinaModif" deviennent rouge et gras s'il sont diffèrent des textbox de la function "TransfereIniModif".
Voici un exemple de ce que ça devrais ressembler quand je lance le code: ( ne pas prendre en compte la différence entre les colonnes "Date d'envoie" ,"PU/Marge/Prix totale HT" et "Ajout/Livr/Com/Supp")
j'ai essayer plusieurs méthodes mais sans aucun bon résultat. Je peut vous envoyer mon fichier si vous le voulez, mais il comporte tellement de code que je pense qu'il serait préférable que je vous envoie juste le screen. Merci pour votre aide.
Cldt
Bonsoir,
si la fonction IniModif est exécutée juste avant FinaModif et que LI corespond à la ligne d'écriture sur le tableau alors dans FinaModif après chaque écriture vous pouvez faire un test de valeur sur la colonne considérée avec LI-1 et Li afin de comparer les deux valeurs et si différentes alors la font de LI passe au rouge.
@ bientôt
LouReeD
Bonsoir LouReeD,
J'ai essayé de faire comme tu ma dit avec la variable Li mais j'ai pas trop compris comment faire. Du coup j'ai fais comme ça:
Function TransfereFinaModif()
Dim ligne As ListRow
Dim LI As Integer
Dim lngRed As Long
Set ligne = ts1.ListRows.Add: LI = ligne.Index
lngRed = RGB(255, 0, 0)
With ts1
.ListColumns("ID").DataBodyRange(LI) = FrmRecherche.Cbx_produit.Value
.ListColumns("Désignation").DataBodyRange(LI) = FrmRecherche.TextDesignation.Value
.ListColumns("Référence").DataBodyRange(LI) = FrmRecherche.TextReference.Value
.ListColumns("Numéro").DataBodyRange(LI) = FrmRecherche.TextNumero.Value
If FrmRecherche.TextCodeAlice.Value <> FrmRecherche.TextCodeAlice2.Value Then
.ListColumns("Code Alice").DataBodyRange(LI) = (FrmRecherche.TextCodeAlice.BorderColor = lngRed)
Else
.ListColumns("Code Alice").DataBodyRange(LI) = FrmRecherche.TextCodeAlice.Value
End If
If FrmRecherche.TextPoids <> FrmRecherche.TextPoids2 Then
.ListColumns("Poids").DataBodyRange(LI) = (FrmRecherche.TextPoids.BorderColor = lngRed)
Else
.ListColumns("Poids").DataBodyRange(LI) = FrmRecherche.TextPoids.Value
End If
.ListColumns("Emplacement").DataBodyRange(LI) = FrmRecherche.TextEmplacement.Value
.ListColumns("Quantité").DataBodyRange(LI) = FrmRecherche.TextQuantite.Value
.ListColumns("Date d'envoie").DataBodyRange(LI) = FrmRecherche.TextDateAjd.Value
.ListColumns("Nom Stock").DataBodyRange(LI) = FrmRecherche.Cbx_NomStock.Value
.ListColumns("Lien Image").DataBodyRange(LI) = FrmRecherche.TextLienImage.Value
.ListColumns("PU/Marge/Prix totale HT").DataBodyRange(LI) = FrmRecherche.TextPrix1
.ListColumns("Ajout/Livr/Com/supp").DataBodyRange(LI) = FrmRecherche.TextModifier.Value & "/" & FrmRecherche.TextFinale.Value
End With
End FunctionJ'ai fais un petit test avec le "CodeAlice" et le "Poids" le problème c'est que quand je lance le programme, dans le tableau les valeurs sont remplacer pas "FAUX".
Merci pour ton aide.
Bonsoir,
plutôt un truc comme ça :
If FrmRecherche.TextCodeAlice.Value <> FrmRecherche.TextCodeAlice2.Value Then
.ListColumns("Code Alice").DataBodyRange(LI) = FrmRecherche.TextCodeAlice.Value
.ListColumns("Code Alice").DataBodyRange(LI).Font.Color = lngred
Else
.ListColumns("Code Alice").DataBodyRange(LI) = FrmRecherche.TextCodeAlice.Value
.ListColumns("Code Alice").DataBodyRange(LI).Font.Color = 0
End IfC'est à dire un test d'égalité entre deux valeurs, si c'est égale on inscrit cette valeur et l'on met en rouge la font de la cellule concernée, si ce n'est pas égale on inscrit la valeur et l'on passe la couleur de la font à noir au cas où il y avait du rouge avant.
Mais tout ceci sans fichier ce n'est pas évident pour les tests
@ bientôt
LouReeD
Re,
A d'accord c'est comme ça merci, du coup j'ai ajoute une ligne pour que le texte devient aussi en gras.
If FrmRecherche.TextCodeAlice.Value <> FrmRecherche.TextCodeAlice2.Value Then
.ListColumns("Code Alice").DataBodyRange(LI) = FrmRecherche.TextCodeAlice.Value
.ListColumns("Code Alice").DataBodyRange(LI).Font.Color = lngRed
.ListColumns("Code Alice").DataBodyRange(LI).Font.Bold = True
Else
.ListColumns("Code Alice").DataBodyRange(LI) = FrmRecherche.TextCodeAlice.Value
.ListColumns("Code Alice").DataBodyRange(LI).Font.Color = 0
End If
Merci encore et passe une bonne soirée.
Bonsoir Minakashi, LouReeD
N'oublie pas que tu as un ID en première colonne, c'est à dire un identifiant qui te permet de l'utiliser comme une clé.
Et donc de comparer deux lignes portant le même ID. La comparaison par colonne te donnera Faux ou Vrai pour la deuxième ligne versus première ligne.
Ainsi si le résultat est Faux, il faudra changer la couleur de police (donc rouge) pour la colonne ciblée.
Si c'est Vrai, les 2 colonnes portant la même donnée. On ne change pas la couleur de police sur la même colonne de la 2ième ligne.
X Cellus bonsoir,
Oups ! En me relisant j'ai tout inversé dans mes explications !
@ bientôt
LouReeD
A nouveau,
Tu l'as bien aidé
Il a mis du gras aussi. C'est plus voyant... Lard et la manière
Re,
Par hasard savez-vous comment je peut mettre en surbrillance une ligne? par exemple si dans la colonne 12 y'a marquer "supprimer" alors la ligne est en rouge.
J'ai vu que je pouvais le faire avec une mise en forme conditionnelle mais est-ce possible de le faire avec du code
Suite,
Tes données sont inscrites sur la feuille. Si tu souhaites qu'une ligne de ta feuille soit en surbrillance selon une valeur d'une colonne.
La MFC sera suffisante. Mais il vaudrais mieux une autre couleur car tu utilises déjà le rouge sur la police pour différencier des données.
Re,
A oui tu a raison je vais voir avec du orange ce que ça donne merci.