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 SubC'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 Withla 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.