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

  • Initiateur de la discussion Initiateur de la discussion Phillip
  • 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 !

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

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

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:
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

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).
 
- 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

Discussions similaires

Réponses
3
Affichages
303
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
387
Réponses
7
Affichages
3 K
Compte Supprimé 979
C
Retour