Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Mise en forme conditionnelle avec du texte a partir d'une liste

toto89

XLDnaute Junior
Bonjour,
Je souhaite faire une mise en forme conditionnelle en fonction d'une liste de donnée.

La cellule peut contenir une des valeur de la liste et donc doit mettre également la mise en forme.

Je ne sais pas quelle est la formule a faire.

Merci de votre aide svp.

Bonne journée
 

Pièces jointes

  • exemple1.xlsx
    12.4 KB · Affichages: 10
Solution
re
ok on va y arriver
si tu nous donnais toute les contraintes dès le départ on aurais déjà fini

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If (Target.Column = 1 Or Target.Column = 2) Then
      Target.Font.Color = vbBlack
       For Each cel In Range("listenoms").Cells
           For Each targ In Target.Cells
                If InStr(1, targ.Value, cel) Then targ.Font.Color = vbRed
            Next
        Next
    End If
End Sub

Gégé-45550

XLDnaute Accro
Bonjour,
Une possibilité, valable uniquement si la liste des prénoms à contrôler est constante et assez courte.
Cordialement,
 

Pièces jointes

  • exemple1.xlsx
    19.3 KB · Affichages: 4

patricktoulon

XLDnaute Barbatruc
bonjour
je pense que tu va devoir passer par du vba
car une MFC il te faudra en faire autant que dans ta liste
et je suppose que cette liste sera probablement ammenée a s'agrandir ou être modifiée
bref une mfc serait un vrai carcan a gérer
donc par vba dans le module de la feuille elle même
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then
        For Each cel In Range("listenoms").Cells
            If InStr(1, Target.Value, cel) Then Target.Font.Color = vbRed
        Next
    End If
End Sub

et ta liste devient allors un tableau structuré a fin que tu ne soit pas obligé de modifier le ref to dans le name
tu ajoute des nom en dessous le tableau s'agrandi tout seul

bien entendu ton fichier devient alors un fichier avec macro donc "xlsm" et non "xlsx"


à +
 

Pièces jointes

  • exemple1 v pat .xlsm
    16.9 KB · Affichages: 4

toto89

XLDnaute Junior
Merci bien, je viens de voir que si par ex j'efface marie que je remplace par paul (qui n'est pas dans la liste) il me ressort quand même en rouge ... :/ OU même si j'ajoute un nouveau prénom dans la liste, cela ne fonctionne pas .. ou alors je ne sais pas faire..


Sinon ok c'est bien le sujet.

Et quel est le code pour mettre en couleur toute la cellule ?

Merci de ton aide.
 

Pièces jointes

  • Capture.PNG
    12.9 KB · Affichages: 14
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
ha!!! oui pardon autant pour moi milles excuses je n'ai pas fait le versa

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then
      target.font.color=vbblack
      For Each cel In Range("listenoms").Cells
            If InStr(1, Target.Value, cel) Then Target.Font.Color = vbRed
        Next
    End If
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
ben normalement un tableau structuré n'a pas de vide c'est un des avantages a les utiliser
voici une autre version ou je t'ajoute dans le menu contextuel(click droit) dans le tableau des noms un bouton supprimer le nom
comme ça tu n'aura jamais de vide si tu veux en supprimer un tu click droite sur la colonne du tableau
 

Pièces jointes

  • exemple1 av modif.xlsm
    23.1 KB · Affichages: 2

toto89

XLDnaute Junior
Bonjour, intéressant ! Merci
une petite question, QUE dois-je changer si je souhaite avoir cette condition dans 2 colonnes au lieu d'une ?

Merci

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
Target.Interior.Color = xlNone
For Each cel In Range("listenoms").Cells
If InStr(1, Target.Value, cel) Then Target.Interior.Color = vbRed
Next
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
 

toto89

XLDnaute Junior
Merci, j'affine j'affine ...
si je colle plusieurs valeurs (dans 2/3 cellules en même temps) cela ne fonctionne pas, je suis obligé d'entrer dans chaque cellule puis refaire entrée....

un peu gênant ... surtout qd je colle une dizaine de cellule en même temps.

Dsl du dérangement
 

patricktoulon

XLDnaute Barbatruc
re
ok on va y arriver
si tu nous donnais toute les contraintes dès le départ on aurais déjà fini

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If (Target.Column = 1 Or Target.Column = 2) Then
      Target.Font.Color = vbBlack
       For Each cel In Range("listenoms").Cells
           For Each targ In Target.Cells
                If InStr(1, targ.Value, cel) Then targ.Font.Color = vbRed
            Next
        Next
    End If
End Sub
 

toto89

XLDnaute Junior
Super merci bcp !
Desolé, je suis amateur , j'apprends ... dc je découvre au fur et à mesure les problèmes que je rencontre..

En tout cas merci beaucoup de votre aide ! C'est TOP !

Bonne journée
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…