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 :

Parcours d'un range filtré


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut Parcours d'un range filtré
    Bonjour,

    voici ma problématique :
    Je fais un autofilter sur MaFeuille.
    Je dois parcourir le range filtré (avec xlCellTypeVisible) ; pour chaque ligne, je dois récupérer la valeur de la colonne B.

    Problème : comment obtenir le numéro de ligne absolu après filtrage ? Je ne parviens qu'à récupérer le numéro de la ligne filtrée.

    Un extrait de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'Filtrage des lignes
    Selection.AutoFilter Field:=25, Criteria1:="<>"
     
    Set plage = MaFeuille.UsedRange.SpecialCells(xlCellTypeVisible)
    'Parcours du range filtré
    For Each ligne In plage.Cells
         If MaFeuille.Range("B" & ?).Value = "True" Then 'problème
              'traitements divers
         End If
    Next
    Merci de votre aide.

    Etienne J.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    essaies comme ceci (à adapter)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim c As Range, Plage As Range
     
    Set Plage = Sheets("Feuil1").Range("A1:AB100") 'à adapter
    Plage.AutoFilter Field:=25, Criteria1:="<>"
    'Parcours du range filtré
    For Each c In Plage.Range("B:B").SpecialCells(xlCellTypeVisible)
        If c.Value = True Then  'problème
    'traitements divers
        End If
    Next c
    Set Plage = Nothing

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Merci de ta réponse.

    Apparemment, ça ne fonctionne pas. Précision utile : je dois aussi avoir accès aux autres colonnes du range (jusqu'à AA)
    Plus concrètement, j'ai, dans chaque cellule en A une checkbox ; chaque checkbox est liée à la cellule d'à côté (B) qui affiche si la case est cochée ou non (chaine "TRUE"/"FALSE")
    Lorsque je parcours mon range, je dois récupérer certaines valeurs de la ligne seulement si la case en A est cochée.

    D'autres idées ? Merci d'avance.

    Etienne J.

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Apparemment ça fonctionnerait si on arrive à cerner le fonctionnement. Lisez les quelques commentaire au sein du code
    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
    Dim c As Range, Plage As Range
    Dim LastLig As Long, Lig As Long
     
    With Sheets("Feuil1")
       .AutoFilterMode = False
       LastLig = .Cells(.Rows.Count, "B").End(xlUp).Row
       Set Plage = .Range("A1:AA" & LastLig)
       Plage.AutoFilter Field:=25, Criteria1:="<>"
       'Parcours du range filtré
       For Each c In .Range("B2:B" & LastLig).SpecialCells(xlCellTypeVisible)
          If c.Value = True Then   'problème
             Lig = c.Row  '(on parcourt la colonne B des données visibles et on récupère la ligne
             MsgBox .Range("AA" & Lig).Value & vbTab & .Range("C" & Lig).Value
             'ici par exemple on affiche la donnée de AA et C
             'traitements divers
          End If
       Next c
       Set Plage = Nothing
    End With

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Bonjour et merci. Désolé d'avoir tardé à répondre, je n'avais pas accès au net.

    j'ai testé ton code : il fonctionne mais ne prend apparemment pas en compte toutes les lignes... et je ne parviens pas à trouver lesquelles sont zappées.

    Une idée ?

    Merci

    Etienne

Discussions similaires

  1. [XL-2007] Parcours d'un range transposé en array
    Par Dinytro dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/08/2011, 10h27
  2. problème sur parcours de range
    Par boss_gama dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/06/2008, 16h18
  3. Réponses: 1
    Dernier message: 10/01/2008, 16h07
  4. [VBA-E] Récupérer le range filtré
    Par Caroline1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/08/2007, 16h08
  5. 'Range' de l'objet '_global' a échoué pour un filtre avancé
    Par Amiral19 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/06/2007, 18h13

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