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

Microsoft 365 Mise en forme d'une ligne d'après listes déroulantes + clic sur un bouton

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 :

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 !
 

Pièces jointes

  • FICHIER TEST.xlsx
    19.3 KB · Affichages: 3

Lolote83

XLDnaute Barbatruc
Bonjour @casualexcel
Voici ton fichier en retour
En fonction du nom et de l'état choisi, on se positionne sur la ligne et on inscrit en colonne L (rajoutée) le numéro de la légende correspondant à l'état.
Une simple MFC fait ensuite le taf !!!!
@+ Lolote83
 

Pièces jointes

  • Copie de CASUALEXCEL - FICHIER TEST.xlsm
    32.3 KB · Affichages: 3

casualexcel

XLDnaute Nouveau
Bonjour @Lolote83 !
j'ai pensé à la MFC mais je ne pensais pas à ajouter une colonne avec l'état et donc j'avais peur que la MFC s'enlève après, c'est vrai que c'est bien plus simple ainsi merci infiniment !!!
 

Discussions similaires

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