casualexcel
XLDnaute Nouveau
Bonjour à tous !
Je m'explique avec les infos de base et un exemple, mais pour faire court j'ai un problème avec ma macro.
Informations :
J'ai deux listes déroulantes, l'une contient des noms (aussi présents dans un tableau sur une même feuille), l'autre contient une légende (fait, pas fait, etc.).
Chaque valeur de la légende est associée à une couleur (et/ou un motif) qui change grâce à la mise en forme conditionnelle (texte spécifique)
Ces deux listes sont donc (par ex) en A1 et en B1.
J'ai un tableau en C1:G10.
La colonne C contient les noms présents dans la liste déroulante.
Les colonnes D à G contiennent des données qui ne nous intéressent pas.
Ce que je veux faire :
choisir un nom en A1
choisir une légende en B1
Cliquer sur mon bouton (btn1) avec une macro associée
La ligne associée au nom choisi en A1 (ex: je choisis le nom DUPOND dans la liste déroulante, il est présent dans la colonne C en C5) changera accordémment à ce que j'ai défini en B1
Donc si j'ai
A1: DUPOND
B1: pas fait (avec motif rayé, fond rouge, police blanche)
alors la ligne C5:G5 se verra colorer en rouge et abordera un motif rayé, la police deviendra blanche
voici mon code qui ne fonctionne pas :
Je joins un fichier pour test si besoin, les données ne sont pas au même endroit mais le principe est le meme, j'ai mis une liste de noms pour le test.
Désolé pour le petit pavé, merci pour votre lecture !
Je m'explique avec les infos de base et un exemple, mais pour faire court j'ai un problème avec ma macro.
Informations :
J'ai deux listes déroulantes, l'une contient des noms (aussi présents dans un tableau sur une même feuille), l'autre contient une légende (fait, pas fait, etc.).
Chaque valeur de la légende est associée à une couleur (et/ou un motif) qui change grâce à la mise en forme conditionnelle (texte spécifique)
Ces deux listes sont donc (par ex) en A1 et en B1.
J'ai un tableau en C1:G10.
La colonne C contient les noms présents dans la liste déroulante.
Les colonnes D à G contiennent des données qui ne nous intéressent pas.
Ce que je veux faire :
choisir un nom en A1
choisir une légende en B1
Cliquer sur mon bouton (btn1) avec une macro associée
La ligne associée au nom choisi en A1 (ex: je choisis le nom DUPOND dans la liste déroulante, il est présent dans la colonne C en C5) changera accordémment à ce que j'ai défini en B1
Donc si j'ai
A1: DUPOND
B1: pas fait (avec motif rayé, fond rouge, police blanche)
alors la ligne C5:G5 se verra colorer en rouge et abordera un motif rayé, la police deviendra blanche
voici mon code qui ne fonctionne pas :
VB:
Sub AppliquerMiseEnForme()
Dim ListeNoms As Range
Dim NomSelectionne As String
Dim LegendeSelectionnee As Range
Dim LigneCible As Range
' Plages et cellules spécifiées
Set ListeNoms = Range("D6") ' liste noms
Set LegendeSelectionnee = Range("E6") ' légende
' Récupérer les valeurs sélectionnées dans les listes déroulantes
NomSelectionne = ListeNoms.Value
Debug.Print "Nom sélectionné : " & NomSelectionne
' Appliquer la mise en forme à la ligne correspondante
Set LigneCible = Range("H5:K75").Find(NomSelectionne, LookIn:=xlValues)
' Si la ligne est trouvée, appliquer la mise en forme à la ligne
If Not LigneCible Is Nothing Then
Debug.Print "Ligne trouvée : " & LigneCible.Address
LigneCible.Interior.Color = LegendeSelectionnee.Interior.Color
LigneCible.Interior.Pattern = LegendeSelectionnee.Interior.Pattern
LigneCible.Font.Color = LegendeSelectionnee.Font.Color
Else
Debug.Print "Aucune ligne correspondante trouvée."
End If
End Sub
Je joins un fichier pour test si besoin, les données ne sont pas au même endroit mais le principe est le meme, j'ai mis une liste de noms pour le test.
Désolé pour le petit pavé, merci pour votre lecture !