Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Règle de validation complexe avec macro...

4 réponses
Avatar
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

4 réponses

Avatar
garnote
Salut Domi,

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" a écrit dans le message de news:
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



Avatar
anonymousA
Bonjour,

voir là peut-être

http://groups.google.fr/group/microsoft.public.fr.excel/browse_frm/thread/61efcb3f9c33410b/f142cac3b1c02679?lnk=st&q=&rnum=1&hl=fr#f142cac3b1c02679

A+

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




Avatar
Domi
Bingo ! ;o)
A priori, un premier essai rapide me laisse croire que ta solution est la
bonne.
Un très grand merci.
Domi

"garnote" a écrit dans le message de news:

Salut Domi,

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" a écrit dans le message de news:

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







Avatar
Domi
Merci beaucoup,
j'avais essayé la solution du copier/coller et elle fonctionnait, je la
réservais en dernier recours...
Salut
Domi

"anonymousA" a écrit dans le message de news:
45c78f61$0$21144$
Bonjour,

voir là peut-être

http://groups.google.fr/group/microsoft.public.fr.excel/browse_frm/thread/61efcb3f9c33410b/f142cac3b1c02679?lnk=st&q=&rnum=1&hl=fr#f142cac3b1c02679

A+

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