XL 2016 erreur 1004 .ignoreBlank =true

cyrikou

XLDnaute Occasionnel
Bonjour j'ai une macro qui créée des listes de validation de données dans des cellules. Tout fonctionnait bien et là j'ai une erreur 1004.
voici le code :

Code:
ActiveSheet.Range(Cells(10, 5), Cells(37, 44)).Select
        With Selection.Validation
        .Delete
        On Error Resume Next
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=L60C4:L71C4"
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$D$60:$D$71"
        On Error GoTo 0
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputMessage = "Veuillez saisir les notes de 1 à 10 !"
        .ErrorMessage = "Mauvaise saisie ! Veuillez recommencer !"
        .ShowInput = True
        .ShowError = True
    End With

L'erreur se situe après "On Error GoTo 0"

Que signifie .IgnoreBlank=true ? et à quoi peut être due cette erreur?
merci
 

job75

XLDnaute Barbatruc
Bonjour cyrikou,

La macro plante après On Error GoTo 0 parce que la liste de validation n'a pas été créée : vous pouvez neutraliser la ligne qui plante c'est la suivante qui plantera.

C'est très bien d'avoir prévu les 2 types de création, pour les styles de références A1 et L1C1.

Mais pour le style L1C1 (celui utilisé sur votre classeur) il faut remplacer Formula1:="=L60C4:L71C4"
par Formula1:="=R60C4:R71C4"

C'est toujours le "R" qui est utilisé en VBA.


A+
 

Patrice33740

XLDnaute Impliqué
Bonjour,

« Que signifie .IgnoreBlank=true ? »
Consultes l'Aide VBA : sélectionnes IgnoreBlank puis appuies sur la touche F1

« et à quoi peut être due cette erreur? »
D'une part au fait que la validation n'a pas été créée à cause de l'erreur de formule signalée par job75
et d'autre par du fait que tu utilises On Resume Next qui empêche l'erreur de se produire sur la ligne en cause.

Plutôt qu'employer On Resume Next est préférable de contrôler le style de référence :
VB:
  ActiveSheet.Range(Cells(10, 5), Cells(37, 44)).Select
  Selection.Interior.ColorIndex = 19
  With Selection.Validation
  .Delete
  If Application.ReferenceStyle = xlR1C1 Then
  .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  xlBetween, Formula1:="=R60C4:R71C4"
  Else
  .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  xlBetween, Formula1:="=$D$60:$D$71"
  End If
  .IgnoreBlank = True
  .InCellDropdown = True
  .InputMessage = "Veuillez saisir les notes de 1 à 10 !"
  .ErrorMessage = "Mauvaise saisie ! Veuillez recommencer !"
  .ShowInput = True
  .ShowError = True
  End With
 

cyrikou

XLDnaute Occasionnel
Merci pour vos conseils. J'ai trouvé l'erreur, il s'agit du fait que la plage où est stockée la liste était protégée. Merci pour les explications supplémentaires, cela m'aide beaucoup pour le futur. Le code à la base avait été modifié par Pierre-Jean.
Merci
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 069
Messages
2 085 038
Membres
102 763
dernier inscrit
NICO26