Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 formule de validation de données

  • Initiateur de la discussion Initiateur de la discussion Jojo973
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Jojo973

XLDnaute Occasionnel
Supporter XLD
Bonjour,

j'ai créé une macro qui s'active selon un choix dans une combobox placée sur la feuille.
Cette macro permet de créer une liste de choix dans chacune des cellules de la sélection (validation de données).
Voici le code :
VB:
Range(Cells(10, 5), Cells(37, 44)).Select
        With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$D$60:$D$71"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputMessage = "Veuillez saisir les notes de 1 à 10 !"
        .ErrorMessage = "Mauvaise saisie ! Veuillez recommencer !"
        .ShowInput = True
        .ShowError = True
    End With

Il fonctionne très bien sauf si je me mets dans le menu option "style de référence L1C1".
J'ai un message d'erreur qui apparait : "erreur d'execution 1004, erreur définie par l'application ou par l'objet"

L'erreur est là :

Code:
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$D$60:$D$71"

J'aimerai que quelque soit l'utilisateur, le code fonctionne et là je bloque car je n'arrive pas à écrire
Formula1:="=$D$60:$D$71" en référence L1C1.

Si vous avez une idée, un conseil, je vous remercie !
🙂
 
Bonjour,

As-tu essayé avec l'enregistreur de macro en référence L1C1?
L1C1 ----> L comme Ligne et C comme Colonne.
Creuse du côté de Cells. Présentement, je n'ai pas excel sous la main.

edit: Pierrejean bonjour🙂
 
Merci Pierre Jean et cathodique, maintenant le problème est inverse, ça fonctionne plus quand je décoche la référence L1C1. Il est vrai que la majorité des excel ne sont pas activés en L1C1. Mon problème est d'avoir un code qui fonctionne dans tous les cas.

Compliqué....
 
Re

A tester:
Range(Cells(10, 5), Cells(37, 44)).Select
With Selection.Validation
.Delete
On Error Resume Next
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=R60C4:R71C4"
.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
 
Bonjour,

ou bien en testant et en se servant de .address pour convertir :
VB:
f = "$D$60:$D$71"
f = "=" & IIf(Application.ReferenceStyle = xlA1, f, Range(f).Address(, , xlR1C1))
puis ... .Formula1:=f
eric
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
1 K
Réponses
3
Affichages
920
Réponses
16
Affichages
3 K
Réponses
1
Affichages
1 K
Réponses
2
Affichages
886
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…