Bonjour,

Comme dit le titre, je suis actuellement en train de créer une liste déroulante grâce à une macro. Pour ce faire, j'ai suivi les indications sur un tutoriel, qui permet de créer une liste avec entrée semi-automatique.
Cependant, ce tuto permet d'en créer une de manière "manuelle", voulant transposer cette méthode en VBA, je me heurte à quelques problèmes avec mon code :

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Sub Creation_Acceuil_Liste()
 
    Dim Last_Row_Z As Long
    Dim Last_Row_New_Z As Long
 
    Dim Adresse1 As String
 
    Sheets("Rapport 1").Range("A:A").Copy Sheets("Rapport 1").Range("Z:Z")
 
    Last_Row_Z = Sheets("Rapport 1").Cells(Sheets("Rapport 1").Rows.Count, "Z").End(xlUp).Row
 
    Sheets("Rapport 1").Range("Z2:Z" & Last_Row_Z).RemoveDuplicates Columns:=1, Header:=xlNo
 
    Last_Row_New_Z = Sheets("Rapport 1").Cells(Sheets("Rapport 1").Rows.Count, "Z").End(xlUp).Row
 
    ActiveWorkbook.Names.Add _
    Name:="ListeD1", _
    RefersTo:="='Rapport 1'!$Z$2" 'ListeD1 existe
 
    ActiveWorkbook.Names.Add _
        Name:="ListeDZ", _
        RefersTo:="='Rapport 1'!$Z$2: $Z$" & Last_Row_New_Z 'ListeDZ existe
 
    ActiveWorkbook.Names.Add _
    Name:="ListeD", _
    RefersToR1C1:="=OFFSET(ListeD1,0,0,COUNTA(ListeDZ)-1,1)" 'ListeD n'existe pas 
 
    With Sheets("Accueil").Range("C3:D4").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=SI(C3<>"""";DECALER(ListeD1;EQUIV(C3&"" * "";ListeD;0)-1;;SOMMEPROD((STXT(ListeD;1;NBCAR(C3))=TEXTE(C3;""0""))*1));ListeD)" 'L'erreur vient d'ici
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = False
    End With
 
End Sub
Lors de l'exécution du code, mes 2 premiers noms, "ListeD1" et "ListeDZ" sont instanciés, cependant, "ListeD" ne se crée pas . Du coup sans "ListeD", je ne peux pas réaliser la formule permettant de créer la liste déroulante.

J'ai beau essayer de changer la formulation de la création de "ListeD", rien n'y change :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
"=OFFSET(ListeD1,0,0,COUNTA(ListeDZ)-1,1)"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
"=DECALER(ListeD1;0;0;NBVAL(ListeDZ)-1;1)"
Est-ce que quelqu'un voit une solution ? Cela fait près d'une heure que je me creuse la tête à essayer de comprendre d'où vient le problème.