XL 2016 Excel VBA : syntaxe insertion de variable dans un filtre avancé

Phillip

XLDnaute Occasionnel
Bonjour,

J'ai toujours du mal avec les syntaxes lorsqu'on veut intégrer une saisie dans une commande...je m'explique : J'ai un fichier d'années d'obtention de diplômes et je voudrais saisir l'année et filtrer sur cette année. Sauf que la colonne année ne contient pas seulement année (ça serait trop simple), mais Diplôme/"année" et d'autre texte à la suite

Si je fais un filtre sur le début de la chaine Diplôme/2021* par exemple, ça marche très bien. mais comment faire pour remplacer ce Diplôme/2021 en dur dans le filtre par Diplôme/'mon année saisie" et * pour le reste de la chaîne ?

Un fichier exemple est joint et voici mon code
VB:
Sub ex()

'Filtre  sur les diplomes de 2022


anneediplome = Application.InputBox(prompt:= _
"Année diplome ?", Type:=2)
'
If anneediplome = "False" Then
Exit Sub

End If

'filtre sur debut de mot specifie macro qui marche

'ActiveSheet.Range("$A$2:$c$18").AutoFilter Field:=1, Criteria1:= _
'        "=Diplôme/2022*", Operator:=xlAnd

'Je voudrais que mon filtre sur le début de mot intègre la saisie de l'annee, mais cela ne marche pas

ActiveSheet.Range("$A$2:$c$18").AutoFilter Field:=1, Criteria1:=
        "=Diplôme/" & anneediplome * ", Operator:=xlAnd"


End Sub

merci beaucoup de votre aide

Cordialement
 

Pièces jointes

  • filtrage.xlsm
    17.2 KB · Affichages: 2

xUpsilon

XLDnaute Accro
Bonjour,

Voir ci-joint.
Plusieurs erreurs :
- les " étaient mal placés, donc le critère était illisible
- il manquait un & avant l'astérisque
- pour utiliser l'astérisque en tant que comparateur de similarité, il faut le placer tel que le string se présente. Ici par exemple, si on met un espace avant l'astérisque, on va chercher un string qui est "Diplôme/ année", alors qu'on cherche en réalité "Diplôme/année" sans espace.

Bonne journée,
 

Pièces jointes

  • filtrage.xlsm
    17.1 KB · Affichages: 2

Phillip

XLDnaute Occasionnel
Super ! merci ! Mais c'est curieux, si je saisis 2022, ça filtre bien sur 2022, mais la première ligne est du 2021 ?

Edit : trouvé, c'est parce qu'il considère que ma première ligne est l'en-tête..Donc c'est bon, encore un grand merci !
 
Dernière édition:

Phillip

XLDnaute Occasionnel
Bonjour,

Encore moi...:-(

De la même manière, je voudrais faire un filtre mais sans caractères joker, juste sur le contenu d'une variable

Code:
Sub comp()
Complex = Application.InputBox(prompt:= _
"complex ?", Type:=2)
'
If Complex = "False" Then
Exit Sub

End If


'Je voudrais que mon filtre sur le début de mot intègre la saisie de l'annee, mais cela ne marche pas

ActiveSheet.Range("$A$1:$c$18").AutoFilter Field:=2, Criteria1:=Complex, Operator:=xlAnd
End Sub

et là, ça ne marche pas, ça plante sur la dernière ligne. Quelle est la syntaxe cette fois ci ?
Complex ?
"Complex" ,
'Complex' ?


Ca m'énerve !

Merci

Cordialement
 

Pièces jointes

  • filtrage.xlsm
    19.5 KB · Affichages: 2

xUpsilon

XLDnaute Accro
Attention que sans caractère joker il faut que la valeur dans ta variable soit exactement celle de ta colonne. Si tu saisis une mauvaise valeur il va planter (car le AutoFilter utilise les valeurs qui sont déjà stockés dans le tableau, donc ça ne veut rien dire pour lui de filtrer sur une valeur qui n'y est pas).
 

Discussions similaires

Réponses
2
Affichages
110

Statistiques des forums

Discussions
312 095
Messages
2 085 249
Membres
102 836
dernier inscrit
Ali Belaachet