macro validation personnalisée : syntaxe

dmc

XLDnaute Occasionnel
Bonjour à tous.
serait-ce un bug d'excel ? je crée un classeur vierge, je crée la macro suivante :
Sub Macrotest()With Range("g1:g30").Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=(OU(G1=""OUI"";G1=""NON""))"
End With
end sub
j'obtiens au lancement une erreur : définie par l'application.
Si je modifie la ligne .add en supprimant le signe = suivant le premier guillemet, le code fonctionne MAIS
les lignes g1 à g30 reçoivent toutes la même référence à G1, et non pas une référence à G1, puis G2 etc jusqu'à G30.
Si c'est un bug, ma macro devra construire chaque ligne une par une.
Si ce n'est pas un bug, quelle est mon erreur ? (sachant qu'à ce jour, je n'ai jamais rencontré de vrai bug d'excel, et toujours des erreurs de ma part).
Très cordialement
DMC
 

dmc

XLDnaute Occasionnel
Re : macro validation personnalisée : syntaxe

Re bonjour.
Manifestement, ma question n'a pas de succès. Néanmoins, je tente de la compléter, peut-être qu'elle deviendra plus intéressante.
Je précise donc que le "=" résulte de l'enregistreur de macros. Si la macro tente d'écrire la validation avec ce signe "=", on obtient une erreur, alors qu'à la main, cela fonctionne et incrémente correctement, à la manière des MFC, les numéros de ligne de références.
Si la macro n'utilise pas ce signe "=", il n'y a pas de plantage.
Mais son écriture est plus complexe ( décomposer le range en autant de cellules individuelles) et son exécution plus lente.
De plus, lorsque l'utilisateur fera "copier la ligne-insérer cellules copiées", la formule qui sera réinsérée sera incorrecte et bloquera de façon injustifiée sa saisie.
Auriez-vous une solution à me proposer, au pire une réponse m'informant de l'impossibilité de résoudre ce problème?
L'auriez-vous déjà rencontré ?
Merci d'avance
DMC
 

dmc

XLDnaute Occasionnel
macro validation personnalisée : bug Excel ou erreur de syntaxe ?

:confused:Bonjour à tous.
Je tente de faire remonter ma question, car je n'ai aucun retour, ce qui ne m'est jamais arrivé en 24 heures.
Pour compléter ma question, ce problème empêche de généraliser l'usage de l'outil "validation" qui pourrait être très puissant et éviter d'écrire des macros de contrôle de ce qui a été saisi.
Le lancement de la macro bute sur l'insertion du signe "=" dans la formule, alors même que l'enregistreur de macro a lui-même positionné, à juste titre d'ailleurs, ce signe "="
Dans l'exemple que j'ai soumis, pour rester simple, j'ai limité les saisies possibles à oui ou non.
J'aurais pu me contenter d'une liste pour cela.
Mais dans la "vraie vie", je veux limiter la saisie à :
- zone vide
- numérique avec pou sans décimales
- "offert"
quelles solutions auriez-vous ?
Amitiés à tous.:)
 

tototiti2008

XLDnaute Barbatruc
Re : macro validation personnalisée : syntaxe

Bonjour dmc,

essaye de traduire la formule en anglais et de remplacer les ";" par des ","

genre
Code:
Sub Macrotest()
With Range("g1:g30").Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _ 
xlBetween, Formula1:="=OR(G1=""OUI"",G1=""NON"")"
End With
end sub
 

dmc

XLDnaute Occasionnel
Re : macro validation personnalisée : syntaxe

Bonsoir tototiti2008
ET MERCI
Je ne m'attendais pas à çà, mais ça marche et c'est tant mieux.
A classer néanmoins dans les "demi-bugs" d'Excel.
A titre d'info, la bonne formule est devenue :
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=(OR(isnumber(g2),G2=""offert""))"
à placer en G2:Gxxx
la recopie de la formule se fera correctement (enfin !)
Merci mille fois et bonne soirée.
PS : comment déclarer ce fil "résolu" ?
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 083
Membres
103 458
dernier inscrit
Vulgaris workshop