J'avais déjà essayer la solution .validation mais sans y associer une variable contenant le nom de la feuille..
"Validation" est une propriété de Range.
C'est pas obligatoire d'ajouter une variable contenant le nom de la feuille, mais ca facilite la lisibilité du code et on a pas besoin de taper tout le temps tout le nom de la feuille
Ce qui veux dire que ton code doit fonctionner aussi en ajoutant ".Validation" à rng et en corrigeant AlertStyle:=x1ValidAlertStop (qui doit être AlertStyle:=xlValidAlertStop, c'est un l comme laurent et non pas le chiffre 1).
En plus tu peux aussi ajouter ".Delete" avant le ".Add" si tu veux recréer la liste de validation dans la même céllule/plage.
==> voici ton code qui fonctionne comme un couteau chaud coupant du beurre bien glacée:
Sub test()
Dim lastrow As Long
Dim lastcol As Integer
Dim rng As Range
lastrow = ThisWorkbook.Sheets("Couple fournisseurs_flux").Range("B" & Rows.Count).End(xlUp).Row
lastcol = Cells(3, Cells.Columns.Count).End(xlToLeft).Column
Set rng = Sheets("Couple fournisseurs_flux").Range(Cells(6, 4), Cells(lastrow, lastcol))
With rng.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Listes!$D$2:$D$3"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
End Sub
à la prochaine ....