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 :

Methodologie de Filtre Excel


Sujet :

Macros et VBA Excel

  1. #21
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Tes ALM à trier sont sur quelle colonne ?
    Tu dois indiquer à ton Field Le bon numero de colonne.
    Dans ton code tu as mis 7, mais est ce que tes ALM se trouve dans la colonne 7 ??
    En faisant les bonnes manip avec l'enregistreur de macro, tu arrives au résultat …
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  2. #22
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Octobre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Octobre 2018
    Messages : 15
    Par défaut
    voici un screenshot su fichier:

    Nom : Excel1.jpg
Affichages : 154
Taille : 464,7 Ko


    voici ma macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub FilterALM1()
    Dim Chaine
    Chaine = "ALM*"
    With ActiveSheet.Range("BH1:P37")
        .AutoFilter Field:=10, Criteria1:="=" & Chaine
        Debug.Print .SpecialCells(xlVisible).Address
        '.autofilter
    End With
    End Sub
    Ça enlève toutes les lignes

  3. #23
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Re

    Pourquoi il n'y a pas d'en-tête en ligne 1 et pourquoi je vois un filtre commençant à la colonne P ?

    Donc le tri se ferai sur la 10e colonne (J) ? On est d'accord ?
    Quel est la logique avec la colonne J pour le tri et un filtre commençant à la colonne P ???

    Pour la solution avec les filtres avancés il te faut absolument des en-têtes, si tu n'en a pas, ce n'est pas cette solution qu'il te faut …

    Tes données contiennent des formules ?? Attention car si c'est le cas et que tes formules ne sont pas faites en conséquence pour un tri tu risques de te retrouver avec des surprises au niveau des résultats …
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  4. #24
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Octobre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Octobre 2018
    Messages : 15
    Par défaut
    Meme avec les entetes, ca ne fontionne pas
    la regle est qu'on Filtre sur la colonne 10 sur les valeur qui commence par ALM

  5. #25
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Envoi moi un fichier au format xlsx en exactitude avec la réalité en remplaçant les données confidentielles avec les en-têtes, une trentaine de lignes suffisent …
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  6. #26
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    pour quoi coquin de sort !!!! tu persiste a vouloir filtrer une plage (x colonne), filtre en qu'une non de dieu !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub FilterALM1()
    Dim Chaine
    Chaine = "ALM*"
    With ActiveSheet.Range("H1:H37")'.Range("H1",ActiveSheet.cells(rows.count,"H").end(xlup))
    
        .AutoFilter Field:=1, Criteria1:="=" & Chaine
        Debug.Print .SpecialCells(xlVisible).Address
        '.autofilter
    End With
    End Sub
    et sert toi de entirerow pour chopper les lignes entieres ou resize de "A" jusqu'a "P"


    d'autant plus que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ActiveSheet.Range("BH1:P37")
    tu es sur de n'avoir pas fait d'erreur chez moi TA!!! colonne de fin("P") est avant celle du debut("BH") on avance a reculons la ???
    ca serait pas plutot ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ActiveSheet.Range("P1:BH37")
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #27
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Octobre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Octobre 2018
    Messages : 15
    Par défaut
    c'est bon
    Fichiers attachés Fichiers attachés

  8. #28
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    re
    bon ben la chose est claire maintenant ta plage n'est pas "BH1:P37" d'ailleurs ton usedrange s'arrete a la colonne "M" dans ton fichiers "books"

    re
    et en plus ton fichier est corrompu 8 seconde pour filtrer 37 lignes sur une colonne
    en tout cas il y a quelque chose qui deraille dans ce fichier "books" ca devrait mettre moins d'un dixieme de seconde
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #29
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Re,

    Via l'enregistreur de Macro :

    voilà ce cela donne avec un filtre avancé sur ton fichier (faire le code en pas à pas)
    PS : bien sur ce code doit être nettoyé par la suite afin d'être fait correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
        Range("J1").Select
        Selection.Copy
        Range("P1").Select
        ActiveSheet.Paste
        Range("P2").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "<>ALM*"
        Application.CutCopyMode = False
        Range("A1:M67").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
            Range("P1:P2"), Unique:=False
        Range("A2:M61").Select
        Selection.SpecialCells(xlCellTypeVisible).Select
        Selection.EntireRow.Delete
        ActiveSheet.ShowAllData
    End Sub
    et voilà le code fait directement par filtre (code à nettoyer/arranger aussi) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Macro2()
    '
    ' Macro2 Macro
    '
     
    '
        ActiveSheet.Range("$A$1:$M$67").AutoFilter Field:=10, Criteria1:="<>ALM*"
        Range("A2:M61").Select
        Selection.SpecialCells(xlCellTypeVisible).Select
        Selection.EntireRow.Delete
        ActiveSheet.ShowAllData
    End Sub
    si tu ne voyais plus tes données c'est peut être par ce que tu as oublier de faire afficher tout => ActiveSheet.ShowAllData

    tout marche sans problème et qui dit enregistreur de macro dit l'avoir fait manuellement (ca prends pas plus de 10 seconde en manuel)
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  10. #30
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    coucou Patrick ,

    Étant sur Mac, j'ai pas eu le souci que tu décris
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  11. #31
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour ryu
    se sont des liens qui sont déactivés et ses resultat "N/A" qui foutent le boxon

    malgré tout je te propose 3 resultat que le demandeur pourrais eventuellement souhaiter

    1. les address de cellule en "H" qui sont valables
    2. la plage valable de "B" a "M"
    3. les ligne entieres valables


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub FilterALM2()
        Dim Chaine
        Chaine = "ALM*"
        With ActiveSheet
     
            .Range("H1", Cells(Rows.Count, "h").End(xlUp)).AutoFilter Field:=1, Criteria1:="=" & Chaine
     
            MsgBox "les cellules valables en colonne""H""" & vbCrLf & .Range("H1", .Cells(.Rows.Count, "h").End(xlUp)).SpecialCells(xlVisible).Address
     
            MsgBox "la plage valable  de ""B"" a ""M""" & vbCrLf & .Range("B1", .Cells(.Rows.Count, "M").End(xlUp)).SpecialCells(xlVisible).Address
     
            MsgBox "les lignes  valables  de la plage sont " & vbCrLf & .Range("B1", .Cells(.Rows.Count, "H").End(xlUp)).SpecialCells(xlVisible).EntireRow.Address
     
          .Range("H1", Cells(Rows.Count, "h").End(xlUp)).AutoFilter
        End With
    End Sub
    que cherche t il enfin
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #32
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Octobre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Octobre 2018
    Messages : 15
    Par défaut
    Merci, ca marche maintenant

    j'ai un autre soucis, j'essaye de Filtrer sur un sheet dans un Workbook colonne11 et mettre le résultat dans un autre workbook/sheet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub CopyWorkbookData()
        Dim wb As Workbook, wsfromittocopy As Worksheet
        Dim strDate0 As String, strDate1 As String
        Dim wbReport1 As Workbook, wsReport1 As Worksheet
        Dim filepath As String
        Dim lngRows As Long, intCols As Integer
        Dim rngToCopy As Range, rngOutput As Range
     
        strDate0 = Format(Date - 3, "yyyy.mm.dd")
        strDate1 = Format(Date, "yyyy.mm.dd")
     
        Application.ScreenUpdating = False
     
        Set wbReport1 = ActiveWorkbook
        Set wsReport1 = wbReport1.Worksheets("Sheet1")
        Set rngOutput = wsReport1.Range("$B$2:$CF$2407")
     
        Workbooks.Open Filename:="C:\*****\**** -12102018.xlsm"
        'Workbooks.Open "**** -12102018.xlsm"
        Set wbFailed = ActiveWorkbook
        Set wsFailed = wbFailed.Worksheets("Effects Location")
     
        ' Filter the data
        With wsFailed
            lngRows = .Range("B489").End(xlUp).Row
            intCols = .Range("W1").End(xlToLeft).Column
            ActiveSheet.Range("$B$2:$CF$2407").AutoFilter Field:=10, Criteria1:="=ALM*" _
            , Operator:=xlAnd
            '.Range(.Cells(1, 1), .Cells(lngRows, intCols)).AutoFilter _
            'Field:=11, Criteria:="=ALM*"
            Set rngToCopy = .Range(.Cells(1, 1), .Cells(lngRows, intCols)).SpecialCells(xlCellTypeVisible
            'Set rngToCopy = .Range("B2:CF" & .Cells(Rows.Count - 1, "").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
            rngToCopy.Copy
            rngOutput.PasteSpecial xlPasteValues
        End With
     
        ' Close the input workbook and set the output range for the next one
        wbFailed.Close SaveChanges:=False
        Set rngOutput = wsReport1.Range("B489").End(xlUp).Offset(1, 0)
     
        Application.ScreenUpdating = True
    End Sub
    Le résultat est que le code met uniquement le contenue de la cellule 1 dans "Sheet1"

  13. #33
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Re,

    Il faut voir et t'entrainer sur les filtres avancés dont le lien a déjà été donné sur ce Post

    Lien direct
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  14. #34
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    Tu trouvera un exemple de filtre avancé copiant sur un autre classeur ICI
    A lire attentivement …
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

Discussions similaires

  1. afficher dans annonce des filtres excel
    Par neuneu1 dans le forum Configuration
    Réponses: 4
    Dernier message: 17/01/2010, 14h54
  2. utilisation des filtres excel avec une macro access
    Par alexlkds dans le forum VBA Access
    Réponses: 3
    Dernier message: 10/11/2009, 19h35
  3. Un Filtre Excel
    Par kikim78 dans le forum Excel
    Réponses: 4
    Dernier message: 14/10/2009, 12h23
  4. filtres excel et formule vba
    Par phiphi_j dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 24/09/2009, 13h00
  5. [VBA-E] debutant Filtre excel
    Par mick_ban dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/02/2007, 19h00

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