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 :

Lecture des données lignes visibles suite filtre


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
    Technicien réseaux et télécoms
    Inscrit en
    Mars 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Mars 2017
    Messages : 22
    Par défaut Lecture des données lignes visibles suite filtre
    Bonjour à tous,

    je cherche à accéder à une plage de données filtrées et donc visibles. Mon besoin est de comparer les valeurs de la ligne L avec celle de la ligne L+1.
    Ça fonctionne bien pour la ligne L mais je n'y arrive pas pour la ligne suivante. J'ai essayé avec offset mais il me donne la ligne suivante qui est masquée (et non visible).

    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
    Sub compare_noms()
    Dim nom_ligne As String, nom_ligne_suivante As String
    Dim NLastVisible_Feuil1 As Long
    Dim MaPlage As Range
    Dim Ligne As Range
     
     
    'détermination de la dernière ligne visible de la feuille
    NLastVisible_Feuil1 = ThisWorkbook.Worksheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Row
     
    'on récupère la plage filtrée, (cad les lignes visible) dans un Range
    Set MaPlage = ThisWorkbook.Worksheets("Feuil1").Range("A2:AO" & NLastVisible_Feuil1).SpecialCells(xlCellTypeVisible)
     
    'pour chaque ligne visible, on récupère le nom de la ligne L et L+1
    For Each Ligne In MaPlage.Rows
        nom_ligne = Ligne.Cells(1).Value
    	nom_ligne_suivante = Ligne.Offset(1, 0).Cells(1).Value
    'comparaison des 2 noms...
    '[...]
    Next Ligne
     
    End Sub

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour titi,

    Bienvenue sur ce Forum.

    Tu dois balayer les cellules spéciales visibles de ta plage de données.
    Certes, mais cellule par cellule

    Tu ne peux bien entendu pas utiliser la propriété Offset.

    Reste à savoir ce que tu souhaites voir réalisé.

  3. #3
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Mars 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Mars 2017
    Messages : 22
    Par défaut
    Bonjour MarcelG, merci pour ton retour.
    ok pour scanner les cellules mais du coup comment faire pour accéder à la cellule de la ligne suivante ?

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut

    ok pour scanner les cellules mais du coup comment faire pour accéder à la cellule de la ligne suivante ?
    Je te l'ai indiqué.

    J'insiste.
    Quel est le but précis de ce balayage?
    Je dirais même que cette finalité devrait avoir été exposée avant la problématique.

  5. #5
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Mars 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Mars 2017
    Messages : 22
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    Salut
    Je te l'ai indiqué.
    ok, et bien je n'ai pas compris comment il faut faire alors.
    J'ai utilisé le code que tu m'as donné, ça fonctionne pour la ligne en cours mais je ne comprends pas comment il faut que je fasse pour la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each c In MaPlage
        nom_ligne = c.Value
    	'ligne suivante je fais comment ?
    'comparaison des 2 noms...
    '[...]
    Next Ligne
    Citation Envoyé par MarcelG Voir le message
    J'insiste.
    Quel est le but précis de ce balayage?
    Je dirais même que cette finalité devrait avoir été exposée avant la problématique.
    Le but est de tester si la valeur de la ligne "1" (cad la première ligne visible)/colonne 1 est égale à la valeur de la ligne 2 (colonne1).
    Si elles sont égales, je continue de scanner les lignes suivantes. Du moment où elles ne sont plus égales, alors j'effectue un traitement particulier. J'espère que j'ai été clair, sinon dis-le moi

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Exemple de développement

    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
    Option Explicit
     
    Sub balaie_filtre()
     
    Dim derlign As Long
    Dim laplage As Range, c As Range
    Dim n As Long
    Dim tablo() As Variant
    Dim j As Long
     
    With Feuil1
            derlign = .Cells(.Rows.Count, 1).End(xlUp).Row
            Set laplage = .Range("A2:A" & derlign).SpecialCells(xlCellTypeVisible)
    End With
     
    n = 0
     
    For Each c In laplage
            n = n + 1
            ReDim Preserve tablo(1 To 2, 1 To n)
            tablo(1, n) = c.Row
            tablo(2, n) = c.Value
    Next c
     
    For j = LBound(tablo, 2) To UBound(tablo, 2) - 1
            If tablo(2, j) <> tablo(2, j + 1) Then
                    'Ici Traitement spécial
                    MsgBox Prompt:="Valeur - " & tablo(2, j) & " - différente à la ligne " & tablo(1, j)
            End If
    Next j
     
    Erase tablo
     
    Set laplage = Nothing
     
    End Sub
    Ceci sans savoir la raison du filtre ni connaître la finalité, comme demandé.

Discussions similaires

  1. [XL-2007] retour des numéros des lignes visibles avec filtre
    Par FanClub51 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/09/2010, 17h00
  2. Réponses: 1
    Dernier message: 29/11/2006, 12h00
  3. pb de lecture des données fichier .ini
    Par peppena dans le forum C
    Réponses: 5
    Dernier message: 12/06/2006, 17h45
  4. [C] lecture des n lignes d'un fichier
    Par felicity dans le forum C
    Réponses: 12
    Dernier message: 12/01/2006, 23h12
  5. [JList] Lecture des données sauvegardées dans un fichier
    Par Myogtha dans le forum Composants
    Réponses: 7
    Dernier message: 10/06/2004, 21h05

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