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 Function

Je 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")

image

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 Function

J'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".

image

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 If

C'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é puisqu'il a changé son code pour obtenir le résultat souhaité.

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? merci.

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.

Rechercher des sujets similaires à "changer couleur text"