Controle sur une liste - Data Validation

Vinvol

XLDnaute Junior
Bonjour,

Je cherche à mettre au point un fichier "formulaire", à remplir par des utilisateurs. Le principe étant une succession de liste de valeurs. La valeur d'une liste déterminant le contenu de la liste suivante.

Sur le principe, j'ai réussi à bricoler un truc, mais j'ai un soucis avec ma fonction de contrôle. Vous me direz que les listes étant dynamiques, apparemment, pas besoin de contrôle ! Et pourtant...
Si la valeur d'une liste est modifiée par l'utilisateur, cela peut impacter les valeurs suivantes. D'où ce contrôle. Le problème, c'est qu'il ne se fait que si on clique sur la cellule à corriger (en tout cas, de la (mauvaise a priori) manière dont je l'ai programmé).

Pour que ce soit plus clair, je vous joins un fichier d'exemple.
Il est composé de 3 colonnes : La première est une liste déroulante fixe; les deux autres sont des listes dynamiques.
Si en première colonne je sélectionne canin, alors je ne peux choisir que Chien ou Loup en colonne 2. Puis un prénom en colonne 3.
Mais si, une fois cette sélection faite, je change canin en félin, les valeurs des colonnes suivantes sont fausses. Si je clique sur la colonne 2, je suis averti. Mais si je passe à la ligne suivante, je ne me rends pas compte de l'erreur.

Y'a-t-il un moyen que ce contrôle se fasse dès que la valeur d'une liste est modifiée, sans avoir à cliquer sur la cellule suivante ?

Désolé si je n'ai pas été suffisamment clair. En tout cas n'hésitez pas si vous avez des questions.

Merci,
Vincent
 

Pièces jointes

  • Fichier Test.xlsm
    20.9 KB · Affichages: 32
  • Fichier Test.xlsm
    20.9 KB · Affichages: 32
  • Fichier Test.xlsm
    20.9 KB · Affichages: 35

Victor21

XLDnaute Barbatruc
Re : Controle sur une liste - Data Validation

Bonjour, Vinvol.

Rajoutez dans le module de feuil1 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a:a")) Is Nothing Then
Target.Offset(0, 1) = ""
End If
If Not Intersect(Target, Range("b:b")) Is Nothing Then
Target.Offset(0, 1) = ""
End If
End Sub
 

Vinvol

XLDnaute Junior
Re : Controle sur une liste - Data Validation

Bonjour Victor,

Merci beaucoup pour cette réponse, qui me semblait parfaite dans un premier temps, mais qui me pose soucis lorsque je rajoute une ligne (en tirant mon tableau vers le bas).
Toutes les données déjà renseignées sont vidées...

Vincent
 
Dernière édition:

Victor21

XLDnaute Barbatruc
Re : Controle sur une liste - Data Validation

Re,

Je n'ai pas ce problème.
Pour rajouter une ligne, et puisque vos données sont en tableau, il suffit de vous placer sur la dernière cellule de la dernière ligne du tableau, et de taper sur Tab ;)
 

Vinvol

XLDnaute Junior
Re : Controle sur une liste - Data Validation

Re,

Je suis bien d'accord, mais l'utilisateur final, s'il préfère tirer le tableau plutôt que de faire tab, il risque de perdre tout son travail.

Je vais repartir de votre code et, au lieu de vider les cellule, afficher un message d'erreur/d'information.

Merci encore pour votre temps
Vincent
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 862
Membres
103 979
dernier inscrit
imed