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 :

compteur de ligne excel avec filtre


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut compteur de ligne excel avec filtre
    bonjour,

    j'ai besoin de compter le nombre de ligne afficher selon les filtres selectionnés.
    j'ai utilisé le code suivant (trouvé dans votre forum - message août 2005)


    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
     
        Worksheets("T2_GTIE_fines_simplifié").Select
        If Worksheets("T2_GTIE_fines_simplifié").FilterMode = False Then
           Sheets("T2_GTIE_fines_simplifié").Range("T2_PDT:T2_PLF").AutoFilter
        End If
        Selection.AutoFilter Field:=1, Criteria1:=W_NU_PDT
        Selection.AutoFilter Field:=3, Criteria1:=W_GTIE_COMM
        Selection.AutoFilter Field:=7, Criteria1:="<>"  ' groupe acte plafond non vide
     
    aa = Worksheets("T2_GTIE_fines_simplifié").Range("A2:A" & _
    Worksheets("T2_GTIE_fines_simplifié").Range("A65536").End(xlUp).Row).SpecialCells(xlVisible).Count - 1
     
        If aa = 0 Then
           W_NB_ERR_PLF = W_NB_ERR_PLF + 1
           W_CPT_ERR_PLF = W_CPT_ERR_PLF + 1
           W_CPT_ERR = W_CPT_ERR + 1
           W_LIBEL = "Garantie sans groupe acte plafond dans T2_GTIE_fines_simplifié"
           Call gest_erreur(W_CPT_ERR, 10, W_LIBEL, W_GTIE_TF, W_NU_PDT, "", W_GTIE_COMM, "", "")
        else
           suite du traitement
        end if
    lors de ma sélection, lorsque je n'ai pas d'enregistrements, j'ai bien 0 (aa =0) mais
    si j'ai 1 enregistrements aa =0 et non 1
    si j'ai 2 enregistrements aa =1 et non 2

    si j'enlève le -1 j'ai bien le nombre exact d'enregistrement trouvé mais
    aa = 1 si 0 enregistrements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    aa = Worksheets("T2_GTIE_fines_simplifié").Range("A2:A" & _
    Worksheets("T2_GTIE_fines_simplifié").Range("A65536").End(xlUp).Row).SpecialCells(xlVisible).Count
    j'espère que j'étais assez clair
    merci d'avance pour votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Points : 417
    Points
    417
    Par défaut
    Bonjour,

    Si j'ai bien compris, tu souhaites obtenir le nombre de lignes que te ressort un filtre ?

    Dans ce cas, utilise la fonction sous.total qui est spécialement prévue pour ça

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    oui c'est ça.
    mais tu l'utilises comment cette fontion sous.total ?

  4. #4
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Menu : Données, Sous-totaux...

    Tu enregistre une macro et tu t'inspires du code obtenu.

    Ensuite tu nous dit où ton code coince, le cas échéant.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Points : 417
    Points
    417
    Par défaut
    Tu mets ta fonction dans une cellule au-dessus du filtre par exemple en A1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOUS.TOTAL(103;A3:A100)
    Le 103 correspond au numéro de la fonction NBVAL
    Lorsque tu mets un filtre cette fontion ne prend en compte que les cellules affichées par le filtre

    Utilise l'aide d'Excel tu comprendras mieux

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    effectivement lorsque j'utilise cette fonction et que je mets le résultat dans une cellule ça fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Range("A1").Value = "=Subtotal(103, A2:A65536)"

    Mais je souhaiterais que le résultat soit dans une variable et non une cellule.
    du coup, ça ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim aa As Integer
    aa = Subtotal(103, range("A2:A65536"))
    il me dit erreur de compilation sub ou fonction non définie.
    merci pour votre aide.

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Je parierais pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim aa As Integer
    aa = WorksheetFunction.Subtotal(103, range("A2:A65536"))
    (non testé)
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  8. #8
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    merci ça fonctionne

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

Discussions similaires

  1. [DATA] Lecture Fichier Excel avec filtres par SAS
    Par Vincetouch dans le forum SAS Base
    Réponses: 2
    Dernier message: 12/11/2014, 17h01
  2. Création Fchier Excel avec Filtre VBA
    Par Oulol dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 29/08/2014, 16h15
  3. [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
  4. Supprimer une ligne excel avec une condition
    Par Quentin006 dans le forum Excel
    Réponses: 4
    Dernier message: 28/05/2009, 11h45
  5. compteur de ligne excel avec filtre
    Par calimero91 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/12/2005, 11h04

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