Mise en Forme Conditionnelle avec Mots-Clès

YaGo

XLDnaute Junior
Bonjour à tous!

J'ai réalisé une mise en forme conditionnel avec des jeux d’icônes pour valider ou non une valeur souhaitée.
Afin de valider cette valeur, une liste déroulante est utilisé via validation des données comprenant deux choix "Garder" ou "Ne Pas Garder", ces choix renvoient la valeur 1 ou 0 suivant le format de cellule suivant: [=1]"Garder";[=0]"Ne Pas Garder"

J'ai exactement le résultat voulu sauf que je ne souhaite pas avoir sur le coin d'une feuille les deux valeur "Garder" et "Ne Pas Garder" nécessaire pour les sources de la validation de données. (Voir Fichier Joint)

En Bref ma question est de savoir, Comment faire cette même opération sans ajouter des données dans des cellules en plus que celles utilisé?

Cordialement,

YaGo
 

Pièces jointes

  • MFC YaGo.xlsx
    10.3 KB · Affichages: 29

Lolote83

XLDnaute Barbatruc
Re : Mise en Forme Conditionnelle avec Mots-Clès

Salut YaGo,
Soit tu inscrits tes données de validation dans un autre onglet et tu y fais appel via ta liste déroulante, soit tu inscrits directement dans la liste déroulante les données que tu souhaites avoir (données séparées par un ;)
@+ Lolote83
 

YaGo

XLDnaute Junior
Re : Mise en Forme Conditionnelle avec Mots-Clès

Merci Lolote83,

Mais cela ne marche pas, car je souhaite avoir dans ma liste "Garder et "Ne Pas Garder" et lors de l'affichage obtenir "0" et"1"
Sans pour autant avoir mes valeur "Garder" et "Ne Pas Garder" dans des cellules à part ;)
 

YaGo

XLDnaute Junior
Re : Mise en Forme Conditionnelle avec Mots-Clès

Bonjour BoisGontier,

J'aurais préféré faire sans VBA mais si cela n'est pas possible...

Le code ressemble t-il a quelque chose comme cela?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B2:B5")) Is Nothing Then
        If Cells(2, 2).value = "Keep" Then Cells(2, 2).value = 1
    End If
End Sub
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Mise en Forme Conditionnelle avec Mots-Clès

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B2:B5")) Is Nothing And Target.Count = 1 Then
        Application.EnableEvents = False
        If Target.Value = "Keep" Then Target.Value = 1
        If Target.Value = "No Keep" Then Target.Value = 0
        Application.EnableEvents = True
    End If
End Sub

JB
 

Pièces jointes

  • MFC YaGo.xls
    51 KB · Affichages: 30
  • MFC YaGo.xls
    51 KB · Affichages: 29
  • MFC YaGo.xls
    51 KB · Affichages: 31

YaGo

XLDnaute Junior
Re : Mise en Forme Conditionnelle avec Mots-Clès

Bonjour,

En fait, je viens de découvrir une problématique de plus...
J'ai mon tableau qui comprend plusieurs fois la colonne des valeurs à valider "Validated" et ce nombre de colonnes peut-être emmener à varié au cours du temps.
Je voudrais que quelque soit le nombre de colonne "Validated", mon programme s'adapte et prenne en compte ces nouvelles colonnes.

J'ai un peu de mal à voir comment rajouter çà... Je pense qu'il faut un module de plus qui viendrait récolté les ranges de chaque nouvelles colonnes pour les indiquer dans le module worksheet_Change ensuite ou rechercher les colonnes avec l'intitulé "Validated".

Pouvez-vous m'éclairer sur la procédure à effectuer?
 

Pièces jointes

  • MFC YaGo.xls
    52 KB · Affichages: 28
  • MFC YaGo.xls
    52 KB · Affichages: 36
  • MFC YaGo.xls
    52 KB · Affichages: 26

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Mise en Forme Conditionnelle avec Mots-Clès

Bonjour,

Nb fixe de colonnes

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B2:B5,d2:d5,f2:d5,H2:H5")) Is Nothing And Target.Count = 1 Then
        Application.EnableEvents = False
        If Target.Value = "Keep" Then Target.Value = 1
        If Target.Value = "No Keep" Then Target.Value = 0
        Application.EnableEvents = True
    End If
End Sub

champ variable

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Set champ = Range("b2:b5")
    col = 4
    Do While Cells(1, col) <> ""
      Set champ = Union(champ, Cells(2, col).Resize(4, 1))
      col = col + 2
    Loop
    If Not Intersect(Target, champ) Is Nothing And Target.Count = 1 Then
        Application.EnableEvents = False
        If Target.Value = "Keep" Then Target.Value = 1
        If Target.Value = "No Keep" Then Target.Value = 0
        Application.EnableEvents = True
    End If
End Sub

JB
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Mise en Forme Conditionnelle avec Mots-Clès

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Set champ = Range("b2:b5")
    col = 4
    Do While Cells(1, col) <> ""
      Set champ = Union(champ, Cells(2, col).Resize(4, 1))
      col = col + 2
    Loop
    If Not Intersect(Target, champ) Is Nothing And Target.Count = 1 Then
        Application.EnableEvents = False
        If Target.Value = "Keep" Then Target.Value = 1
        If Target.Value = "No Keep" Then Target.Value = 0
        Application.EnableEvents = True
    End If
End Sub

JB
 

YaGo

XLDnaute Junior
Re : Mise en Forme Conditionnelle avec Mots-Clès

Merci ça marche nickel
Peux-tu m'expliquer à quoi correspond la variable col et pourquoi lui avoir attribuer la valeur 4 au début?
Car même avec plus de colonne le code marche toujours.

EDIT: C'est bon j'ai compris le pourquoi du comment! Merci!
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 333
Membres
103 519
dernier inscrit
Thomas_grc11