VBA / Excel / Contrainte de validation d'une cellule

Fermé
Terrien - Modifié par Terrien le 10/12/2013 à 09:21
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 11 déc. 2013 à 14:37
Bonjour,

Je cherche une solution au problème suivant :
J'ai une feuille Excel 2003 avec en A1 une contrainte de validation qui limite la saisie à une valeur comprise entre 1 et 10.

Si quelqu'un effectue un "copier" de la cellule B1 qui contient la valeur 50, puis utilise la commande *coller valeur uniquement* sur la cellule A1, la contrainte de validation n'est pas vérifiée et le contenu de la cellule A1 est erroné.

Comment forcer en VBA le déclenchement de la vérification de contrainte de validation ?
(ou toute autre solution permettant d'aboutir au résultat souhaité).

Il est à noter que des évènements se déclenchent en fonction de la valeur saisie en A1 et que j'ai le même type de souci pour A2, A3, A4, etc avec à chaque fois des contraintes de validations potientiellement différentes (qu'elles soient de type numérique ou non).

Si quelqu'un (e) à la clé du mystère...

Merci
A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
10 déc. 2013 à 16:09
Bonjour,

Plutôt que d'utiliser la validation de données, tu peux utiliser un code VBA pour réaliser ce que tu souhaites.
Si tu es intéressé... dis le nous
0
Terri1 Messages postés 3 Date d'inscription mardi 10 décembre 2013 Statut Membre Dernière intervention 11 décembre 2013
11 déc. 2013 à 11:10
@pikaju
Merci mais mon code est dèjà bien 'compliqué'. Je cherche à m'appuyer sur les fonctions 'de base' d'Excel.

L alternative, si on ne peut déclencher le contrainte de validation serait de simuler (?) un double clic dans la cellule après un coller suiver d'un 'Enter'. Excel reprendrait alors la main pour dire si quelque chose cloche.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 déc. 2013 à 11:52
Bonjour,

Le code n'est pas très compliqué.
L alternative serait de simuler (?) un double clic dans la cellule après un coller suivi d'un 'Enter'
ça, ce serait compliqué...
0
Terri1 Messages postés 3 Date d'inscription mardi 10 décembre 2013 Statut Membre Dernière intervention 11 décembre 2013
Modifié par Terri1 le 11/12/2013 à 14:25
Alors je suis preneur de la solution "double clic" stp :-)
Pour la simulation de Enter, un 'SendKeys "{ENTER}"' devrait faire l'affaire.

Au pire si mon idée est KO et s'il n'y a que le Enter à réaliser, l'utilisateur peut le faire.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 déc. 2013 à 14:27
Pour la simulation du double clic, un SendKeys "{F2}" devra faire l'affaire également...

Ne reste qu'à "choper" l'événement "coller"...
Mais bon ça, ça n'existe pas.
Il faut donc travailler avec l'événement de feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
0
Terri1 Messages postés 3 Date d'inscription mardi 10 décembre 2013 Statut Membre Dernière intervention 11 décembre 2013
11 déc. 2013 à 14:35
Super.
Merci beaucoup pijaku.
Oui pour choper le 'coller' il y a des trucs. C'est aussi indispensable pour faire un coller 'texte seulement' afin de ne pas perdre ces fameuses contraintes de validation.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 11/12/2013 à 14:37
Tu t'en sors donc avec quelque chose comme :

Private Sub Worksheet_Change(ByVal Target As Range)
'si plusieurs cellules sélectionnées et si la colonne n'est pas A, on sort
If Target.Count > 1 And Target.Column > 1 Then Exit Sub
SendKeys "{F2}"
SendKeys "{ENTER}"
End Sub
0