VBA / Excel / Contrainte de validation d'une cellule

Terrien -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
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   Statut Modérateur Dernière intervention   2 761
 
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   Statut Membre Dernière intervention  
 
@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   Statut Modérateur Dernière intervention   2 761
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   2 761
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   2 761
 
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