crotalette
Messages postés1Date d'inscriptionlundi 29 décembre 2008StatutMembreDernière intervention29 décembre 2008
-
29 déc. 2008 à 16:01
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 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 !
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)