IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

AutoFilter et array [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut AutoFilter et array
    Bonjour à tous,

    Mon classeur excel se compose d'un tableau. Une colonne de ce tableau comprend des données sous forme de nombres séparés par une virgule (tout est en format texte) :
    '1
    '41,1,50
    '10,1
    '1,15

    Je voudrais filtrer par vba cette colonne sur une valeur. Dans l'exemple ci-dessus, je veux filtrer sur la valeur 1. J'ai donc écrit ce bout de code mais impossible de le faire marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            A.Range(A.Cells(1,1), A.Cells(T1, T2)).AutoFilter _
            Field:=3, _
            Criteria1:=Array("*," & "1","*," & "1" & ",*","1" & ",*","1"), Operator:=xlFilterValues
    Il ne me retourne que les lignes pour lesquelles il n'y a que la valeur 1 seule (et non par exemple une ligne du type 1,41). Avez-vous une idée ?

    Merci !

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    une idée, en adaptant ce code à ta situation et en l'intégrant dans un bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub cacher()
    Dim x As Integer, texte, y, mes As String
    Range("A1").CurrentRegion.EntireRow.Hidden = False
    mes = InputBox("valeur a chercher")
    For x = 1 To Range("a" & Rows.Count).End(xlUp).Row
      texte = Range("A" & x)
      For y = 0 To UBound(Split(texte, ","))
        If Split(texte, ",")(y) = mes Then
          Rows(x).EntireRow.Hidden = True
        End If
      Next y
    Next x
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    dans la même veine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Demo()
            F$ = InputBox(vbLf & " Filtrer sur ?")
            If F = "" Then Exit Sub
        With Feuil1
            For R& = 1 To .Cells(1).CurrentRegion.Rows.Count
                .Rows(R).Hidden = IsError(Application.Match(F, Split(.Cells(R, 1).Value, ","), 0))
            Next
        End With
    End Sub
    ______________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    ______________________________________________________________________________________________________
    Je suis Paris, Charlie, …

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    en mettant de côté le fait que les valeurs de ton array sont assez étranges (des valeurs disposent de plusieurs virgules par exemple) .... tu veux filtrer les valeurs "contenant" le caractère "1" c'est ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").AutoFilter 3, "*1*"
    le range est à adapter bien sûr.
    testé avec une colonne complète de chiffres au format texte (ajout de caractère ' devant chaque valeur)


    si c'est un autre critère que tu veux, je t'invite à mieux le détailler

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut
    Merci pour vos réponses !

    Marc. L, Casefayere, j'avais fait précédemment une procédure de ce type mais c'est tout de même plus long qu'un autofilter (j'ai beaucoup de lignes !)

    Joe.levrai, ce n'ai pas exactement ce que je veux sinon ca serait trop simple ! Dans cette colonne, je recense des numéros des lignes : 1, 2, 4, 10. Si je "*1*", cela me sortira uniquement aussi bien le numéro 1 que le numéro 11 ou 212, ce qui ne fonctionne pas...

    Au final, j'ai opté pour un double autofilter qui m'ont donné 2 ranges que j'ai concaténé avec une fonction union.

    Merci encore pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment utiliser <> avec array sur autofilter
    Par Nono Sto dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/10/2013, 11h14
  2. Liste de critere autofilter et Array
    Par Nono Sto dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/10/2013, 06h21
  3. Pbl alimentation/récupération dans Array pour autofilter
    Par Antoine D dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/02/2009, 19h16
  4. Réponses: 2
    Dernier message: 23/02/2003, 00h49
  5. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo