Règle de validation complexe avec macro...
Le
Domi
Bonsoir,
Je suis en train d'essayer de réaliser un planning de Charge de production.
Après moult recherches, J'ai mis en place manuellement une règle de
validation assez biscornue mais qui me donne enfin satisfaction.
Je voudrais par macro insérer cette règle dans une plage.
J'ai utilisé l'enregistreur et obtenu le code suivant :
Sub Macro4()
'
Range("M13:M1000").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop,
Operator:= _
xlBetween, Formula1:= _
"=ET((SOMME(M13)+SOMME(N13))<=M$8;SOMME($G13:$G13)<=SOMME($F13:$F13))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "Iznogoud"
.InputMessage = ""
.ErrorMessage = "Iznogoud"
.ShowInput = True
.ShowError = True
End With
End Sub
Problème : si en manuel ça marche, la mise en place par macro plante
systématiquement avec le message : La Méthode "Range" de l'Objet "_Global" a
échoué
Plantage sur la formule .Add Type.
Le problème semble bien lié à la syntaxe de la formule car si je mets autre
chose de plus simple ça marche.
Quelques explications :
Dans la colonne F j'ai une valeur numérique en dur.
Dans la colonne G, une formule qui fait la somme des valeurs de M et de N
multipliées par des coefs.
Mon but c'est d'empêcher lorsque je saisis une valeur dans M, que la somme
M+N dépasse une constante (M$8) ET que la valeur saisie ne fasse pas monter
trop G de façon à ce que G reste <= à F
La seule solution que j'ai trouvé pour que cela marche bien c'est d'ajouter
des "SOMME" dans la formule de la règle de validation, ne me demandez pas
pourquoi !
Cette règle de validation est très importante car c'est vraiment elle qui
bride et contrôle toute l'application.
Merci par avance pour votre aide.
Domi
Je suis en train d'essayer de réaliser un planning de Charge de production.
Après moult recherches, J'ai mis en place manuellement une règle de
validation assez biscornue mais qui me donne enfin satisfaction.
Je voudrais par macro insérer cette règle dans une plage.
J'ai utilisé l'enregistreur et obtenu le code suivant :
Sub Macro4()
'
Range("M13:M1000").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop,
Operator:= _
xlBetween, Formula1:= _
"=ET((SOMME(M13)+SOMME(N13))<=M$8;SOMME($G13:$G13)<=SOMME($F13:$F13))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "Iznogoud"
.InputMessage = ""
.ErrorMessage = "Iznogoud"
.ShowInput = True
.ShowError = True
End With
End Sub
Problème : si en manuel ça marche, la mise en place par macro plante
systématiquement avec le message : La Méthode "Range" de l'Objet "_Global" a
échoué
Plantage sur la formule .Add Type.
Le problème semble bien lié à la syntaxe de la formule car si je mets autre
chose de plus simple ça marche.
Quelques explications :
Dans la colonne F j'ai une valeur numérique en dur.
Dans la colonne G, une formule qui fait la somme des valeurs de M et de N
multipliées par des coefs.
Mon but c'est d'empêcher lorsque je saisis une valeur dans M, que la somme
M+N dépasse une constante (M$8) ET que la valeur saisie ne fasse pas monter
trop G de façon à ce que G reste <= à F
La seule solution que j'ai trouvé pour que cela marche bien c'est d'ajouter
des "SOMME" dans la formule de la règle de validation, ne me demandez pas
pourquoi !
Cette règle de validation est très importante car c'est vraiment elle qui
bride et contrôle toute l'application.
Merci par avance pour votre aide.
Domi

Poser une question


Je n'ai pas vérifié, mais essaie ceci :
Formula1:="=and((sum(M13)+sum(N13))<=M$8,Sum($G13:$G13)<=sum($F13:$F13))"
Serge
"Domi"
voir là peut-être
http://groups.google.fr/group/micro...c3b1c02679
A+
A priori, un premier essai rapide me laisse croire que ta solution est la
bonne.
Un très grand merci.
Domi
"garnote"
j'avais essayé la solution du copier/coller et elle fonctionnait, je la
réservais en dernier recours...
Salut
Domi
"anonymousA" 45c78f61$0$21144$