[VBA] Validation dynamique sous Excel

Résolu/Fermé
Praetorian - 20 août 2009 à 17:23
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 20 août 2009 à 19:39
Bonjour,

Petit souci en VBA.

Je suis en train de créer un formulaire de commande qui sera utilisé en 2 étapes.
Etape 1 - L'utilisateur #1 personnalise le formulaire. Il entre les quantités commandables: Exemple: minimum 10, Maximum 20.
Etape 2 - L'utilisateur #2 ouvre le formulaire personnalisé par l'utilisateur 1 et entre dans une cellule (G29) la quantité qu'il aimerait recevoir.

J'aimerais que l'utilisateur 1 puisse dynamiquement définir les conditions de validation (via minimum/maximum) de la cellule G29 sans devoir aller dans "données>validation". Le top serait qu'il entre le minimum et maximum dans des cellules (respectivement O29 et P29) et que cela modifie les critères de validation dynamiquement.

Puis j'aimerais que si l'utilisateur 2 entre une valeur fausse (par exemple 32 dans notre exemple) cela lui affiche un message genre: "Erreur, vous devez entrer une quantité entre 10 et 20."

Auriez vous une idée comment faire? J'ai déjà essayé 2-3 trucs mais ça ne marche pas...


Merci mille fosi d'avance!!!!!!
A voir également:

3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
20 août 2009 à 19:39
Ci joint proposition (là il faut VBA !!!) ;-)

macro événementielle à copier coller dans le module feuille concerné
a adapter avec tes adresses de celulles: G29 au lieu de D3 etc.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union(Range("A1"), Range("B2"))) Is Nothing Then: Exit Sub

mini = Range("A1")
maxi = Range("B2")

Range("D3").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _
        Operator:=xlBetween, Formula1:=mini, Formula2:=maxi
        .InputMessage = "saisir une valeur entre " & mini & " et " & maxi
        .ErrorMessage = "valeur incorrecte: saisir une valeur entre " & mini & " et " & maxi
    End With
End Sub


Bonne soirée
2
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
20 août 2009 à 17:53
Bonjour,

Quel est l'intérêt d'utiliser VBA ?

tout simplement:
dans données validation:
autoriser: personnalisé
et dans formule
=(G29>=O29)*(G29<=P29)

ou alors, je n'ai rien compris à ta demande...
1
Merci Michel... je vois que je cherchais beaucoup trop loin... dès fois la simplicité....

Par contre saurais tu comment mettre un message d'erreur personnalisé du genre: "ERREUR la quantité doit être comprise entre XXX et YYY", XXX et YYY étant dynamiques.

Merci!
0