Colorer une ligne suivant contenu d'une cellule

Signaler
Messages postés
286
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
28 février 2021
-
Messages postés
14387
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
28 février 2021
-
Bonjour, j'ai encore besoin de vos lumières.
Dans une feuille représentant des commandes, j'ai une colonne où j'écris (liste déroulante) "paiement reçu : OUI - NON"
Je voudrais qu'en fonction de ce qui se trouve dans cette colonne l'entièreté de ma ligne soit colorisée en jaune. (si rien d'écrit dans la cellule paiement) et le reste demeure avec un fond blanc.
J'y suis arrivé avec une MFC, sauf que cela n'est valable que pour la plage que j'ai sélectionnée au départ. Si je sélectionne une plus grande plage (en vue des commandes suivantes) alors le tout se colorise en jaune.
Ne voyant pas de solution avec MFC, je voudrais voir s'il n'y a pas une possibilité en VBA ?
Merci de votre aide

8 réponses

Messages postés
14387
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
28 février 2021
807
bonjour,
je pense que tu peux facilement faire cela en VBA.
toutefois je n'ai pas vraiment compris: une colonne, cette colonne, ma ligne, la cellule paiement, le reste.
Merci bcp de ton aide. Je vais t'envoyer de meilleures explications ainsi qu'un exemple de ma feuille afin que ce soit plus compréhensible.
Je fais cela dès que je suis sûr mon pc car actuellement je suis sûr mon iPad.
Merci et ... À dans quelques minutes .
Messages postés
286
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
28 février 2021
25
enfin, me voici devant mon pc !
Sub ArchiverBC()

'archiver les Bons de commande dans l'historique clients et incrémenter le numéro de Bon de commande

ligne = Sheets("Historique_Commande").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("Historique_Commande").Range("A" & ligne).Value = Sheets("Bon de Commande").Range("E1").Value 'numero BC
Sheets("Historique_Commande").Range("B" & ligne).Value = Sheets("Bon de Commande").Range("C5").Value & " " & Sheets("Bon de Commande").Range("E5").Value 'Nom
Sheets("Historique_Commande").Range("C" & ligne).Value = Sheets("Bon de Commande").Range("C6").Value & " " & Sheets("Bon de Commande").Range("C7").Value & " " & Sheets("Bon de Commande").Range("C8").Value 'Adresse
Sheets("Historique_Commande").Range("E" & ligne).Value = Sheets("Bon de Commande").Range("C9").Value 'Téléphone
Sheets("Historique_Commande").Range("F" & ligne).Value = Sheets("Bon de Commande").Range("J6").Value 'Fournisseur
Sheets("Historique_Commande").Range("G" & ligne).Value = Sheets("Bon de Commande").Range("A14").Value 'Désignation 1

Sheets("Historique_Commande").Range("H" & ligne).Value = Sheets("Bon de Commande").Range("A15").Value 'Désignation 2
Sheets("Historique_Commande").Range("I" & ligne).Value = Sheets("Bon de Commande").Range("A16").Value 'Désignation 3
Sheets("Historique_Commande").Range("J" & ligne).Value = Sheets("Bon de Commande").Range("D3").Value 'Date
Sheets("Historique_Commande").Range("N" & ligne).Value = Sheets("Bon de Commande").Range("Q28").Value 'Acompte
Sheets("Historique_Commande").Range("K" & ligne).Value = Sheets("Bon de Commande").Range("E23").Value 'PV. TTC
Sheets("Historique_Commande").Range("D" & ligne).Value = Sheets("Bon de Commande").Range("N7").Value 'Pays

Sheets("Historique_Commande").Range("M" & ligne).Value = Sheets("Bon de Commande").Range("H6").Value 'PA. HT
'Sheets("Historique_Commande").Range("L & ligne).Value = range("K"&ligne).value / range("M" & ligne) 'coeficient
Sheets("Historique_Commande").Range("P" & ligne).Value = Sheets("Bon de Commande").Range("B23").Value 'date Livraison
Sheets("Historique_Commande").Range("R" & ligne).Value = Sheets("Bon de Commande").Range("J9").Value 'Vendeur
'Sheets("Historique_Commande").Range("P" & ligne).Value = Sheets("Bon de Commande").Range("E115").Value 'Pourcentage du Vendeur
'Sheets("Historique_Commande").Range("R" & ligne).Value = Sheets("Bon de Commande").Range("B142").Value 'Remarque
Sheets("Historique_Commande").Range("U" & ligne).Value = Sheets("Bon de Commande").Range("B100").Value 'Livraison





voici donc une partie de mon fichier, ainsi qu'une vue sur la feuille en question.

Donc, dans la colonne "paiement reçu" j'aurai une liste déroulante avec OUI et NON
Dans le cas où le paiement n'est pas encore reçu, je voudrais que la ligne entière se colorise en jaune.
Ainsi que je l'ai dit hier, je sais le faire avec une MFC, mais seulement valable pour le partie sélectionnée or je voudrais que cela continue au fur et à mesure de l'augmentation de nouvelles lignes.
Merci de ton aide
>
Messages postés
14387
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
28 février 2021

Si, j'aimerais le faire, ce serait bien plus aisé ! Mais si j'applique ma MFC à l'ensemble de la feuille, toutes les lignes non encore remplies deviennent jaunes or je voudrais qu'elles restent blanches et seulement devenir jaune si la condition est réalisée
Messages postés
14387
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
28 février 2021
807 > simkmil
je connais peu les MFC.
pourquoi laisser vide la colonne paiement au moment de l'archivage?
Messages postés
286
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
28 février 2021
25 >
Messages postés
14387
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
28 février 2021

Merci d'avoir corrigé mon code. C'est en effet bien plus lisible.
Si j'ai bien compris, la seule erreur que je faisais était un espace après \ ? maintenant, je le saurai.

pour la colonne paiement vide, je vais regarder.

J'ai réussi à intégrer une signature faite avec la souris.
Je fais cela sur une feuille appelée ... Signature où j'ai dessiné un grand rectangle dans lequel il faut "signer"
mon problème est pour l'effacement, j'obtiens :
 array("Freeform 1").select



mais je pense que le nom Freeform 1 change à chaque fois (2-3-4...) comment faire pour que avec mon bouton "effacer signature" je puisse à chaque fois effacer la signature

merci
Messages postés
14387
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
28 février 2021
807 >
Messages postés
286
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
28 février 2021

je me demande si tu sélectionnes bien ton code avant d'utiliser le bouton pour mettre les balises...
je me demande pourquoi le nom change a chaque fois...
Messages postés
14387
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
28 février 2021
807 >
Messages postés
14387
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
28 février 2021

pour l'effacement de la signature, je suggère que tu crées une nouvelle discussion, et que tu y partages ton fichier.
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 février 2021
616
Bonjour,

Pourquoi ne pas faire une boucle sur la colonne concernée comme ceci:

Option Explicit
Sub For_X_to_Next_Ligne()
Dim FL1 As Worksheet, NoCol As Integer
Dim NoLig As Long, Var As Variant
    Set FL1 = Worksheets("Feuil1") ' a adapter
    NoCol = 11 'lecture de la colonne k  a adapter
    For NoLig = 2 To Split(FL1.UsedRange.Address, "$")(4)
        Var = FL1.Cells(NoLig, NoCol)
        If Var = "OUI" Then ' a adapter
        Rows(NoLig & ":" & NoLig).Interior.Color = 65535 ' a adapter
        End If
    Next
    Set FL1 = Nothing
End Sub


Voilà
Merci beaucoup de ton aide, je vais essayer cela et reviens dire si ça fonctionne pour moi. Merci
Messages postés
14387
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
28 février 2021
807
peux-tu donner suite, ou marquer comme résolu?
Messages postés
286
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
28 février 2021
25
Merci cs_Le Pivert
j'ai essayé plusieurs fois et je n'obtiens aucun résultat.
Afin de faire l'essai, j'ai ouvert un nouveau classeur; dans ce classeur j'ai mis ton code dans un module 1
et sur ma feuille 1 j'ai écrit "OUI" dans une ligne de la colonne K
et cette ligne de code bloque

For NoLig = 2 To Split(FL1.UsedRange.Address, "$")(4)

je ne comprends pas car je n'ai jamais employé SPLIT, ni Usedrange donc je ne sais pas voir d'où vient le blocage.
Merci de ton aide
Messages postés
14387
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
28 février 2021
807
"cette ligne de code bloque": message d'erreur?
il est sans doute utile que tu nous montres tout le code, si jamais tu l'avais modifié.
Messages postés
286
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
28 février 2021
25
je n'ai rien modifié au code. il est ci dessus (mais au cas où tu ne pourrais le voir car envoyé par cs_LePivert, je le recopie ci dessous :

Option Explicit

Sub For_X_to_Next_Ligne()
Dim FL1 As Worksheet, NoCol As Integer
Dim NoLig As Long, Var As Variant
Set FL1 = Worksheets("Feuil1") ' a adapter
NoCol = 11 'lecture de la colonne k a adapter
For NoLig = 2 To Split(FL1.UsedRange.Address, "$")(4)
Var = FL1.Cells(NoLig, NoCol)
If Var = "OUI" Then ' a adapter
Rows(NoLig & ":" & NoLig).Interior.Color = 65535 ' a adapter
End If
Next
Set FL1 = Nothing
End Sub
Messages postés
286
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
28 février 2021
25
re bonsoir, j'ai réussi à le faire fonctionner car je m'étais trompé en n'affectant pas ce code a la bonne feuille.
Maintenant il fonctionne.
Mon seul problème est de le faire fonctionner automatiquement (sans déclencher l'exécution du code manuellement)
merci et bonne soirée.
Messages postés
14387
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
28 février 2021
807
il suffit de l'appeler dans la procédure Worksheet_Change de la feuille.