liste Validation avec critere

  • Initiateur de la discussion Initiateur de la discussion gibtoul
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

gibtoul

Guest
Bonjour,
j'ai un tableau avec une liste de validation avec critère.
Mon probleme est que je souhaite qu'a chaque fois que, le choix de la liste se
positionne sur le premiere critere ( comme sur la ligne 2 de mon tableau)
Cela ne fonctionne pas sur la ligne 4
De plus au final les données seront positionnés sur un autre onglet que les cellules avec validation
J'ai récupére le code VBA sur un autre fichier excel mais n'étant pas un expert , je me permets de vous soliciter pour l'ameliorer

vous remeciant par avance de l'aide apportée
bon week end
 

Pièces jointes

Re : liste Validation avec critere

Bonjour
Comme ça:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Me.[A2].Address Or Target.Address = Me.[A4].Address Then
   Target(1, 2).Value = Me.Range(Target.Value).Rows(1).Value
   End If
End Sub
À+
 
Re : liste Validation avec critere

Re
Deux problèmes:
1 - La Workseet_Change ne s'exécute pas car elle est restée programmée dans le module de l'autre feuille que celle où elle doit réagir.
2 - Les plages nommées comme les contenus ne sont plus dans la même feuille donc plus dans Me. Pour ne pas avoir à s'occuper de leur emplacement, vu que ce sont bien des noms au niveau classeur, utilisez Application à la place. (à défaut de spécification il assumerait Me quand même ce qui ne marcherait pas). Je suis décidément de plus en plus content d'avoir à tout jamais banni l'emploi de Range ou Cells sans qualificateur. Si je ne peux indiquer de feuille je précise Application même dans les modules ordinaire où ça ne s'impose pas. Ce préfixe inutile et donc pénible à taper veux dire "Attention c'est potentiellement casse gueule !".
Comme par exemple quand c'est exécuté dans une WorkBook_BeforeClose induite par une demande de quitter Excel alors qu'un autre classeur est actif ! (celle là je l'ai eu en travers de la gorge !... Et les utilisateur vivent avec ça pendant des années sans rien dire... Ils ont juste l'impression globale que tout ça ne marche pas très bien...)

Trève de digression, en résumé dans Feuil9 (saisie):
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Me.[A2].Address Or Target.Address = Me.[A4].Address Then
   Target(1, 2).Value = Application.Range(Target.Value).Rows(1).Value
   End If
End Sub
À+
 
Re : liste Validation avec critere

Dranreb

Je t'avoue humblement que je ne maitrise pas du tout le WorkBook_BeforeClose et autre code 😕

J'ai mis ton code , il fonction ... sauf pour alsace ou la liste reprend des éléments des autre liste

a+
 

Pièces jointes

Re : liste Validation avec critere

Chez moi ça prend la bonne.
Mais je ne sais pas trop pourquoi, ça semble être un hasard.
Parce que la référence du nom Alsace est mal définie: elle couvre à la fois les colonnes titrées "Alsace" et "Aquitaine".
Cordialement.
 
Re : liste Validation avec critere

Bonjour Dranreb

Ton code fonctionne parfaitement.
En fait j'ai fait une bourde en saisissant la reference Alsace , elle prennait en compte les valeurs de la colonne Aquitaine

Par contre j'ai une derniere chose a voir, je vais utiliser les cellules de A2 à A50. J'ai rajouté à ton code les cellules :

"If Target.Address = Me.[A2].Address Or Target.Address = Me.[A3].Address Or Target.Address = Me.[A4].Address Or Target.Address = Me.[A5] ....

mais cela fait un code à rallonge

j'ai modifié le code avec cela : If Target.Address = Me.["A2:A20"].Address Then

mais cela ne fonctionne pas 😡😡


a+
 
Re : liste Validation avec critere

Bonjour,

Peut-être comme cela

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A2:A50]) Is Nothing Then
'If Target.Address = Me.[A2].Address Or Target.Address = Me.[A4].Address Then
   Target(1, 2).Value = Application.Range(Target.Value).Rows(1).Value
   End If
End Sub

Bonne Journée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
22
Affichages
1 K
Retour