Validationlist en VBA

Bonjour le forum, j'ai encore besoin de votre aide,

j'essaie de faire une validation pour avoir une liste déroulable dans ma cellule sans utiliser une combobox ( inutilisable dans mon cas, ça serait trop laborieux, sauf si quelqu'un sait comment les positionner à partir des cellules et non des dimensions de la feuille ), je l'ai déjà fait une fois comme ceci:

adrs_src = ThisWorkbook.Worksheets("Feuille1").Range("A1").End(xlDown).Address(False, False, external:=True)

    With Range("B1").validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=" & adrs_src
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With

Cependant, j'en ai refait mais impossible de le faire fonctionner, il me retourne toujours une erreur 1004 sur la ligne du ".Add" . Je pense que c'est en rapport avec Formula1 mais pas sûr, voici mon code:

    Dim adrs_src As String

    Workbooks.Open Filename:=ThisWorkbook.Path & "\Sources.xlsx"

    With Workbooks("Sources.xlsx").Worksheets(ThisWorkbook.Worksheets("Affichage").Range("B36").End(xlUp).Value)
        adrs_src = .Range("A3:" & .Range("A1").End(xlDown).Address(False, False)).Address(False, False, external:=True)
    End With

    With ThisWorkbook.Worksheets("Affichage").Range("G36").End(xlUp).validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=" & adrs_src
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With

    Workbooks("Source.xlsx").Close True

Je précise que adrs_src retourne une adresse correct malgré le bazar dans lequel il est.

Merci d'avance,

Retra

Salut Retranix,

...m'a l'air bien compliqué, tout ça...
Sans fichier (tsss,tsss...) pour bien comprendre le contexte, il me semble que ceci devrait aller...

Workbooks.Open Filename:=ThisWorkbook.Path & "\Sources.xlsx"
'
With Worksheets("Affichage")
    .Range("G36").Validation.Delete
    .Range("G36").Validation.Add Type:=xlValidateList, Formula1:="=A3:A" & .Range("A3").End(xlDown).Row
End With


A+

Salut Curulis,

Oui j'ai tendance à faire un peu trop compliqué, la faute du débutant.

Et pour ce qui est du fichier, je peux t'en faire un avec un tableau en exemple mais le code sera exactement le même avec juste un sub et une boucle en plus en plus...

Pour ce qui est de ta solution en effet, elle simplifie bien la chose! Cependant, les données viennent d'un autre classeur... et je ne peux pas me permettre de les mettre dans le classeur que j'utilise actuellement. Je suis donc friant d'une alternative ^-^

Merci quand même pour le temps que tu as pris!

a++

Salut Retranix,

comme je comprends l'affaire, les données de ta ValidationList proviennent d'un fichier 2 pour s'afficher dans le fichier 1 ?
Décris-nous bien le contexte !


A+

Salut Curulis,

C'est exactement ça, les données de ma Validation sont dans un fichier 2 ( que j'ai appelé "Sources.xlsx" ). Ce fichier se situe dans le même dossier que le fichier 1 ,dans lequel se trouve mon code ainsi que la liste issue de la validation. Je récupère le nom de la feuille du fichier 2 dans lequel je vais cherché mes données dans une cellule du fichier 1 ("d'où le bazar compliqué pour "adrs_src").

Je vais faire des fichiers exemples dans la matinée,

Merci pour l'aide,

a++

Re,

Voilà les fichiers exemples en PJ, j'ai pas eu le temps de les faire hier.

Merci d'avance,

Retra

Rechercher des sujets similaires à "validationlist vba"