Liste de validation VBA

Bonjour,

J'ai crée une macro qui recopie des données sur plusieurs feuilles et qui ensuite insère des formules dans des cellules. Via cette macro, je souhaite insérer une liste de validation via une formule.

Sub Copiedonnées()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Sheets("Récap").Select
Dim fintableau1 As Long
fintableau1 = Range("a65536").End(xlUp).Row

    Range(Cells(7, 2), Cells(fintableau1, 4)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Janvier").Select

    Sheets(Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", _
        "Septembre", "Octobre", "Novembre", "Décembre")).Select
    Sheets("Janvier").Activate
    Range("B7").Select
    ActiveSheet.Paste

    Dim Cel As Range
    Dim Ws As Worksheet
  For Each Ws In ThisWorkbook.Worksheets(Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", _
        "Septembre", "Octobre", "Novembre", "Décembre"))
    Fintableau = Range("a65536").End(xlUp).Row
    For i = 5 To 35
        Ws.Cells(6, i).Formula = "=TestATA(" & Cells(7, i).Address & ")"
    Next i
    For j = 6 To Fintableau
        If Cells(j, 2) Like "EQUIPE" & "*" Then
            For k = 5 To 35
            Set Cel = Cells(j, k)
            Ws.Cells((j + 1), k).Formula = "=TestATA(" & Cells((j + 2), k).Address & ")"
            'SI(E6=VRAI;Sinop;"")
                With Cells(j, k).Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=IF(" & Cells((j + 1), k) & "=TRUE,Sinop,"""")"
                .IgnoreBlank = True
                .InCellDropdown = True
                .InputTitle = ""
                .ErrorTitle = ""
                .InputMessage = ""
                .ErrorMessage = ""
                .ShowInput = True
                .ShowError = True
                End With
            Next k
        End If
        Next j
    Next Ws

       Application.ScreenUpdating = True
       Application.Calculation = xlCalculationAutomatic
End Sub

C'est la ligne Add Type qui me renvoie une erreur 1004. J'ai essayé plein d'écritures ou déclaratifs différents mais toujours et encore la même erreur. En consultant le sujet sur le net, l'erreur revient souvent mais pas pour les mêmes raisons donc je n'arrive pas à trouver ce qui cloche.

Je précise que j'ai bien une plage de cellule avec le nom Sinop définie sur mon classeur.

Merci d'avance à vous.

Bonjour,

Formula1:="=IF(" & Cells((j + 1), k) & "=TRUE,Sinop,"""")"

cette formule ne convient pas pour une liste de validation

pourriez-vous préciser en dur quel est la plage source pour la liste de validation ?

La plage de référence du nom est "Données!$E$52:$E$53"

Bonjour,

If A1 = "VRAI" Then x = Range("Sinop").Address Else x = "A1"
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=" & x
    End With

la variable x ne doit pas être une chaine vide

faite le test en remplacent Else x = "A1" par Else x = ""

Toujours le même problème. Quelque soit la valeur de x au départ (VRAI ou FAUX), le résultat est le même. J'ai testé avec "A1" et avec "".

J'ai même rajouté une ligne Application.calculate pour que le résultat de la fonction TestATA apparaisse.

J'avoue que je pense que je vais finir par le faire manuellement car en étirant ou en faisant un copier collé en manuel cela fonctionne.

Rechercher des sujets similaires à "liste validation vba"