Critère : référence à une valeur

crotalette Messages postés 1 Date d'inscription lundi 29 décembre 2008 Statut Membre Dernière intervention 29 décembre 2008 - 29 déc. 2008 à 16:01
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 29 déc. 2008 à 18:30
Bonjour,
Je cherche à filtrer les lignes d'un tableau selon un critère qui fait référence à une valeur dans un autre onglet du tableau.
Concrètement :
Définition du critère d'après une valeur dans l'onglet "travail"



Dim crit_post_radiation As Variant



Dim date_radiation As Date



Sheets("travail").Select



date_radiation = CDate(Range("C2").Value)



crit_post_radiation = ">=" & date_radiation





Filtre dans l'onglet "liste", sur la colonne 2, qui contient des dates





Sheets("liste").Select



Selection.AutoFilter



Selection.AutoFilter _



field:=2, _



Criteria1:=crit_post_radiation






Le résultat : aucune ligne n'est sélectionnée. Quand, à la main, je vais dans le filtre "personnalisé", il a bien pris en compte la bonne date, il suffit que je clique sur "OK" pour que la sélection fonctionne.
J'en déduis qu'excel n'arrive pas à lire le critère que je lui donne jusqu'au bout...
Quelqu'un aurait-il une solution ? J'ai bien cherché sur plusieurs forums et dans des bouquins, mais je n'ai pas encore trouvé. Merci pour votre aide !

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
29 déc. 2008 à 18:30
Salut
Je n'ai pas essayé, mais essaye ceci :
- Dimensionne Crit_post_radiation en String au lieu de Variant
- Ajoute un espace devant et derrière ton signe ">=" comme ceci " >= "
- Après la concaténation de >= et de la date, ajoute une MsgBox crit_post_radiation pour vérifier que l'ensemble est correct
- Si les deux ensembles de lignes de codes que tu nous présentés ne se trouvent pas dans la même fonction ou sub :
Ta variable crit_post_radiation est définie comme une chaine locale dans le premier groupe de lignes de codes.
Cette variable n'existe plus lorsque tu sors de ta sub/fonction puisqu'elle est définie à l'intérieur de cette sub/fonction.
Vérifie le en ajoutant le même MsgBox crit_post_radiation avant le Sheets("liste")... du 2ème groupe de lignes de codes.
Si ta variable doit avoir une étendue plus importante, il faut la placer dans la partie "Déclarations" :
- de ta feuille si la variable doit être visible des lignes de codes de cette unique feuille
- d'un module (en Public au lieu de Dim) si la variable doit être visible depuis toutes les feuilles.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous