XL 2019 colorer les différents aliments avec un code VB pour macro de ce genre ?

  • Initiateur de la discussion Initiateur de la discussion anthoYS
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

anthoYS

XLDnaute Barbatruc
bonjour


les instructions sont dans le fichier (2 onglets).
Le second ce qui est attendu. Il sera sans doute nécessaire de le transformer en *.xlsm.
Le code VB n'est pas adapté, il est utile pour un autre fichier et onglet..
Donc il sera nécessaire de changer PlageOmega par PlageProteines, etc. etc.

A minima, une piste de départ, surtout les couleur, code couleur RGB(XXX, YYY, ZZZ) je ne sais pas à quoi correspond quoi...


Merci 🙂
VB:
Sub ColorerMotsRepas()

    Dim ws As Worksheet
    Dim cell As Range, mot As Range
    Dim PlageOmega As Range, PlageLegum As Range, PlageCheat As Range, PlageAutres As Range
    Dim startPos As Long

    Set ws = ThisWorkbook.Sheets("plg") ' <<< adapter si nécessaire

    ' Définir les plages des listes
    Set PlageOmega = ws.Range("AQ2:AQ20")
    Set PlageLegum = ws.Range("AR2:AR20")
    Set PlageCheat = ws.Range("AS2:AS20")
    Set PlageAutres = ws.Range("AT2:AT20")
  
    ' Parcourir toutes les lignes utilisées en colonne B
    For Each cell In ws.Range("B2:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row)
        If Not IsEmpty(cell.Value) Then
          
            ' Nettoyer d’abord la mise en forme
            cell.Font.Bold = False
            cell.Font.color = vbBlack

            ' Recherche dans chaque liste
            Call AppliquerCouleur(cell, PlageOmega, RGB(148, 0, 211)) ' Violet
            Call AppliquerCouleur(cell, PlageLegum, RGB(0, 112, 192)) ' Bleu
            Call AppliquerCouleur(cell, PlageCheat, RGB(255, 0, 0))   ' Rouge
            Call AppliquerCouleur(cell, PlageAutres, RGB(0, 176, 80)) ' Vert
        End If
    Next cell

    MsgBox "Coloration terminée !", vbInformation

End Sub


Private Sub AppliquerCouleur(ByVal cell As Range, ByVal liste As Range, ByVal couleur As Long)
    Dim mot As Range
    Dim startPos As Long
  
    For Each mot In liste
        If Trim(mot.Value) <> "" Then
            startPos = InStr(1, cell.Value, mot.Value, vbTextCompare)
            Do While startPos > 0
                ' Mise en forme partielle du mot trouvé
                cell.Characters(startPos, Len(mot.Value)).Font.color = couleur
                cell.Characters(startPos, Len(mot.Value)).Font.Bold = True
              
                ' Continuer la recherche (si plusieurs occurrences)
                startPos = InStr(startPos + Len(mot.Value), cell.Value, mot.Value, vbTextCompare)
            Loop
        End If
    Next mot
End Sub
 

Pièces jointes

Dernière édition:
Solution
C'est mieux ainsi :
Code:
    '--- 3. Définir les plages dynamiquement
    With ws
        Dim PlageProteines As Range, PlageGraisses As Range, PlageGlucides As Range, PlageFibres As Range, PlageBoissons As Range
        Set PlageProteines = .Range("J2:J" & .Cells(.Rows.Count, "J").End(xlUp).Row)
        Set PlageGraisses = .Range("K2:K" & .Cells(.Rows.Count, "K").End(xlUp).Row)
        Set PlageGlucides = .Range("L2:L" & .Cells(.Rows.Count, "L").End(xlUp).Row)
        Set PlageFibres = .Range("M2:M" & .Cells(.Rows.Count, "M").End(xlUp).Row)
        Set PlageBoissons = .Range("N2:N" & .Cells(.Rows.Count, "N").End(xlUp).Row)
    End With
Chaque plage prend en compte l'ensemble de ses éléments.
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
430
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
994
Réponses
5
Affichages
688
Réponses
4
Affichages
541
Réponses
4
Affichages
383
Retour