mis en forme conditionnel d'une liste déroulante dynamique

roisabri

XLDnaute Nouveau
Bonjour les amis,

J'ai besoin d'une mis en forme conditionnel d'une liste déroulante dynamique.

Je ne vois pas où elle est l'erreur.

Code:
Set Cell_Color = Worksheets(Data).Range("P2")
    While Not Cell_Color.Interior.Color = Gray Or Cell_Color.Interior.Color = White
        i = i + 1
        Set Cell_Color = Cell_Color.offset(1, 0)
    Wend
    
    
    With Worksheets(Plans).Range(Cells(3, 15).Address & ":" & Cells(Rows.Count, 15).End(xlUp).Address).Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=Data!$B$2:$B$" & i
            .ErrorMessage = "You don't have the persmissison to write"
        End With
        With .FormatConditions
                .Delete
                For j = 2 To i
                .Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""Data!$B"" & i & """""
                Next
            End With
            
        For j = 1 To i - 1
        .FormatConditions(j).Interior.Color = Sheets(Data).Cells(j, 16).Interior.Color
        Next
        
    End With

Merci pour votre aide
 

kjin

XLDnaute Barbatruc
Re : mis en forme conditionnel d'une liste déroulante dynamique

Bonjour,
Pour plus d'efficacité, un fichier exemple est souhaitable
Néanmoins, je constate que tu fais appel à une plage de données situées sur une autre feuille pour alimenter tes listes et ça n'est possible que s'il s'agit d'une plage nommée
A+
kjin
 

roisabri

XLDnaute Nouveau
Re : mis en forme conditionnel d'une liste déroulante dynamique

Bonjour, Ci joint le fichier exmple de mon problème, je pense le problème arrive dee Formula1=".....


Merci d'avance pour votre aide
 

Pièces jointes

  • Probleme_Format_Condition.xlsm
    19.5 KB · Affichages: 42

kjin

XLDnaute Barbatruc
Re : mis en forme conditionnel d'une liste déroulante dynamique

bonjour,
Comme je te l'ai déjà précisé, tu ne peux pas faire référence à une autre feuille dans tes formules !
Donc une solution à adapter
Code:
Sub test()
Dim i As Byte, j As Byte
Dim t()
i = 2

With Worksheets("Feuil1")
    While .Cells(i, 3).Interior.ColorIndex <> xlNone
        ReDim Preserve t(1 To 2, 1 To i - 1)
        'creation d'un tableau avec les noms et la couleur de la cellule contigues
        t(1, i - 1) = .Cells(i, 2)
        t(2, i - 1) = .Cells(i, 3).Interior.ColorIndex
        i = i + 1
    Wend
End With

If i < 3 Then Exit Sub

'insertion d'ue plage nommée pour la liste
ActiveWorkbook.Names.Add Name:="noms", RefersToR1C1:="=Feuil1!R2C2:R" & i - 1 & "C2"

With Worksheets("Feuil2").Range("C3:C5")
    With .Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=noms"
        .ErrorMessage = "You don't have the persmissison to write"
    End With
    .FormatConditions.Delete
    For j = 2 To i - 2
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""" & t(1, j - 1) & """"
        .FormatConditions(j - 1).Interior.ColorIndex = t(2, j - 1)
    Next
End With

End Sub
A+
kjin
 

Discussions similaires

Réponses
2
Affichages
716
Réponses
8
Affichages
708

Statistiques des forums

Discussions
312 791
Messages
2 092 137
Membres
105 233
dernier inscrit
deepwebe