Bonjour
je tourne en rond sur un problème tout simple

j'avais définit dans mon code VBA la validation de certaines cellules avec un formule
comme ceci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
       Worksheets(feuille).Cells(i, colnom).Select
       With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:= _
        "SI($B4=GRP_HUILE;LISTE_GRP_HUILE;SI($B4=GRP_HY;LISTE_GRP_HY;SI($B4=GRP_HE;LISTE_GRP_HE;LISTE_GRP_AUTRE)))"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
ce qui marche très bien.

Mais je dois revoir ma formule et elle devient dynamique (le référentiel des Noms à utiliser dans la formule étant lui même généré dynamiquement)
ce qui veut dire que je voudrais tout simplement remplacé dans mon code la formule par une variable

comme ceci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
       Worksheets(feuille).Cells(i, colnom).Select
       With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=Libformule
 
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With

mon champ (string) Libformule est définit "à part" , pour l'instant j'ai juste remis exactement la même formule comme suit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 libformule = "SI($B4=GRP_HUILE;LISTE_GRP_HUILE;SI($B4=GRP_HY;LISTE_GRP_HY;SI($B4=GRP_HE;LISTE_GRP_HE;LISTE_GRP_AUTRE)))"
mais ça ne marche pas !!

Merci d'avance pour votre aide