Erreur 438 sur liste déroulante

Hello le forum,

J'ai besoin de votre connaissance sur le sujet , je pense pas que ce soit compliqué mais je n'arrive pas à mettre le doigt sur le problème

Pour l'histoire, j'essaye de insérer des listes déroulantes sur un tableau aux lignes et colonnes variables.

Voici le code:

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(5, 4), Cells(lastrow, lastcol))

With rng

        .Add Type:=xlValidateList, AlertStyle:=x1ValidAlertStop, Operator:=xlBetween, _
                Formula1:="=Listes!$D$2:$D$3"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = False

End With

End Sub

Merci d'avance pour votre aide,

Bonne journée[/size][/size]

Slt Skadowche,

essaie comme ca:

Sub test()

Dim lastrow As Long
Dim lastcol As Integer
Dim wsh As Worksheet

Set wsh = ThisWorkbook.Worksheets("Couple fournisseurs_flux")

lastrow = wsh.Range("B" & Rows.Count).End(xlUp).Row
lastcol = wsh.Cells(3, Cells.Columns.Count).End(xlToLeft).Column

With wsh.Range(Cells(5, 4), Cells(lastrow, lastcol)).Validation

        .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

Hello

Merci de te pencher sur le sujet,

J'ai le même soucis avec ton code. Tu veux peut être que je te fasse un template ?

Non pas besoin ca doit fonctionner avec.validation !

Et en modifiant x1ValidAlertStop avec xlValidAlertStop

Ok, ca fonctionne merci bcp !

J'avais déjà essayer la solution .validation mais sans y associer une variable contenant le nom de la feuille..

Tu peux m'expliquer rapidement pourquoi ça ne fonctionnait pas ?

Merci !

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 ....

Rechercher des sujets similaires à "erreur 438 liste deroulante"