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 :

[VBA-E] Autofilter : lecture ligne par ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2002
    Messages : 27
    Par défaut [VBA-E] Autofilter : lecture ligne par ligne
    Bonjour,

    Besoin d'un coup de pouce sur le sujet suivant :

    J'ai trois zones de filtre dont les critères se trouvent dans les cellules A1 (pays) et B1 (ville) :

    - comment filtrer mon onglet en spécifiant les critères de A1 et B1
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Sheets("feuil1").AutoFilter field:=1, Criteria1:="France"
    Sheets("feuil1").AutoFilter field:=2, Criteria1:="Pau"
    - après avoir filtrer sur les deux colonnes, comment parcourir la plage resultat ligne par ligne afin d'en extraire les donnees de la cellule C

    Merci par avance

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    je pense qu'il va te falloir effectuer un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim c
      For Each c In Sheets("feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible).Rows
         Debug.Print c.Cells(3).Address
     Next
    PS : Attention je n'ai pas vérifier les effets de bords si rien n'est sélectionné...

  3. #3
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2002
    Messages : 27
    Par défaut
    Merci !

  4. #4
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2002
    Messages : 27
    Par défaut
    Mais je remarque un point :

    si les cellules de filtre ne se situe pas sur la 1er ligne et la 1e colonne (des infos sont notés au dessus) alors le code renvoie des adresses fausses (du moins ne correspondant pas au résultats attendus) :

    exemple : les deux cellules de filtre sont sur C4 (pays) et D4 (ville)

    Ci-dessous le code testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub test()
    Dim c
        Sheets("Feuil1").Range("C4:E45").AutoFilter field:=1, Criteria1:="France"
        Sheets("Feuil1").Range("C4:E45").AutoFilter field:=2, Criteria1:="Pau"
        For Each c In Sheets("feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible).Rows
            MsgBox c.Cells(5).Address
        Next
    End Sub
    - est-il possible de connaître le nombre de ligne renvoyer sans faire toute la boucle
    - comment récupérer la valeur de la cellule plutôt que l'adresse

    Merci

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    le nombre de ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible).Rows.count
    la valeur de la cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      MsgBox c.Cells(5).value

  6. #6
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2002
    Messages : 27
    Par défaut
    Merci bbil pour les infos mais je pense mal comprendre l'importance du range dans cette méthode.

    En effet, je n'obtiens ni le nombre de lignes correct ni les bonnes valeurs!

    Dans la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Feuil1").Range("C4:E45").AutoFilter field:=1, Criteria1:="France"
    A quoi doit correspondre la valeur du range ?
    Je rappelle (sur un exemple simple) :
    - Trois colonnes Pays / Villes / Valeurs
    - Deux critères de sélection : Pays et Villes

    Valeurs à récupérer :
    - le nombre de lignes résultats
    - chaque valeur d'une ligne (colonne Valeurs)

    Merci

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par bbil
    le nombre de ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible).Rows.count
    la valeur de la cellule
    désolé je me suis laissé emporté.. .ce code ne marche pas
    -----------------------------------------------------------------
    bon je ne vois pas d'autre solution que de "compter" les lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Dim iNbLigne As Integer
     For Each r In Sheets("feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible).Rows
       iNbLigne = iNbLigne + 1
     Next

Discussions similaires

  1. Lecture fichier texte ligne par ligne
    Par LinuxUser dans le forum C++
    Réponses: 7
    Dernier message: 14/01/2013, 15h27
  2. Lecture 2 fichiers ligne par ligne
    Par tourby dans le forum Fortran
    Réponses: 5
    Dernier message: 06/09/2010, 09h08
  3. Réponses: 8
    Dernier message: 18/07/2010, 21h16
  4. Lecture de fichier ligne par ligne
    Par chreks dans le forum Fortran
    Réponses: 4
    Dernier message: 19/05/2008, 18h09
  5. Lecture de fichier ligne par ligne avec caractères spéciaux
    Par Australia dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 28/11/2007, 15h30

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