Microsoft 365 Mise en forme d'une cellule par rechercheV en VBA

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 !

Florent6744

XLDnaute Nouveau
Bonjour,

J'ai besoin de votre aide.
Je souhaite automatiser un repérage de RAL en affichant la couleur dans un TCD par rechercheV.

Plus en détail, quand je suis sur l'onglet RAL mon TCD indique les couleur du matériel connu avec le numéro de RAL (ou une info couleur quand ce n'est pas précis ex: GRIS).
Ce que j'aimerais c'est qu'à partir d'un bouton je puisse afficher dans la colonne C la mise en forme de la cellule correspondant au numéro de RAL de la colonne A.
La référence se trouvant dans l'onglet RefRAL.

Pour info, le vrai tableau contient plusieurs milliers de lignes.

Merci d'avance pour votre aide.

J’espère avoir été assez clair sur ma demande.

Florent
 

Pièces jointes

Bonjour @Florent6744,

Un essai en VBA. Cliquer sur le bouton Hop! Le code est dans module1:
VB:
Sub Test()
Dim xrg, xArea, x, rech
   Application.ScreenUpdating = False
   Columns(3).Clear
   ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("CD_EMPRISE"). _
      ShowDetail = True
   ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotSelect _
      "lu_couleur[All]", xlLabelOnly + xlFirstRow, True
   Set xrg = Selection
   On Error Resume Next
   For Each xArea In xrg.Areas
      For Each x In xArea
         rech = Application.Match(x, Sheets("RefRal").Columns(1), 0)
         If IsError(rech) Then
            Cells(x.Row, "c") = x.Value
         Else
            Cells(x.Row, "c").Interior.Color = Sheets("RefRal").Cells(rech, "b").Interior.Color
         End If
      Next x
   Next xArea
   On Error GoTo 0
   Range("c1").EntireColumn.HorizontalAlignment = xlVAlignCenter
   Range("c1").EntireColumn.AutoFit
   Range("a1").Select
End Sub
 

Pièces jointes

Dernière édition:
Re,

Une version v2 qui n'utilise plus la couleur de fond de la colonne B de la feuille RefRAL.
On utilise directement le code en hexadécimal (colonne C) qu'on convertit en valeur RGB grâce à la fonction HexaRGB (c'est plus sûr)

Le code:
VB:
Sub Test()
Dim xrg, xArea, x, rech
   Application.ScreenUpdating = False
   Columns(3).Clear
   Columns(3).Font.Size = 8
   ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("CD_EMPRISE"). _
      ShowDetail = True
   ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotSelect _
      "lu_couleur[All]", xlLabelOnly + xlFirstRow, True
   Set xrg = Selection
   On Error Resume Next
   For Each xArea In xrg.Areas
      For Each x In xArea
         rech = Application.Match(x, Sheets("RefRal").Columns(1), 0)
         If IsError(rech) Then
            Cells(x.Row, "c") = x.Value
         Else
            Cells(x.Row, "c").Interior.Color = HexaRGB(Sheets("RefRal").Cells(rech, "c"))
         End If
      Next x
   Next xArea
   On Error GoTo 0
   Range("c1").EntireColumn.HorizontalAlignment = xlVAlignCenter
   Range("c1").EntireColumn.AutoFit
   Range("a1").Select
End Sub

Function HexaRGB(ByVal Hex As String)
Dim R, G, B
   Hex = Right$("000000" & Replace(Hex, "#", ""), 6)
   R = Val("&H" & Mid(Hex, 1, 2))
   G = Val("&H" & Mid(Hex, 3, 2))
   B = Val("&H" & Mid(Hex, 5, 2))
   HexaRGB = RGB(R, G, B)
End Function
 

Pièces jointes

Dernière édition:
- 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

Réponses
2
Affichages
62
Réponses
6
Affichages
91
Réponses
3
Affichages
247
Réponses
8
Affichages
92
Réponses
6
Affichages
554
Retour