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 :

Probleme avec auto filter


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 60
    Par défaut Probleme avec auto filter
    Bonjour,

    Dans mon programme Vba, j'utilise autofilter pour filtrer mon fichier.

    mon problème est que je n'arrive pas à savoir si mon filtre ne remonte aucune ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
         'WS_PC est un objet worksheet qui pointe sur ma feuille ou je filtre
         'LAstlig_PC est le numero de la dernière ligne active de ma base de données
     
           WS_PC.Range("A1:AV" & Lastlig_PC).AutoFilter Field:=13, Criteria1:="12"
            WS_PC.Range("A1:AV" & Lastlig_PC).AutoFilter Field:=17, Criteria1:="Type_sejour"
     
            If WS_PC.Range("A1:AV" & Lastlig_PC).SpecialCells(xlCellTypeVisible).Rows.Count > 1 Then
               WS_devis.Range("A18") = WS_PC.Range("A2:AV" & Lastlig_PC).SpecialCells(xlCellTypeVisible).Cells(1, 23)
            Else
              msgbox ("probleme : le filtre ne remonte aucune ligne")
          End if
    mon problème est que mon filtre remonte 1 ligne ou ne remonte aucune ligne : la ligne de commande WS_PC.Range("A1:AV" & Lastlig_PC).SpecialCells(xlCellTypeVisible).Rows.Count remonte toujours 1 donc il rentre toujours dans ma boucle avec mon message d'erreur

    je ne comprends pas ce qui ne marche pas.

    Merci de votre aide :-)

    Elodie

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Comment est calculé Lastlig_PC ? Vérifie sa valeur avant le test.
    Vérifie ce que renvoie WS_PC.Range("A1:AV" & Lastlig_PC).Rows.Count.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 60
    Par défaut
    Je le calcule à l'ouverture de mon fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     Call Workbooks.Open(Filename:=monFICHIER, UpdateLinks:=0)
        Set WB_PC = ActiveWorkbook
        Set WS_PC = Worksheets("MS")
     
      'apres avoir ouvert le fichier, on recupere la derniere ligne du fichier
      WS_PC.AutoFilterMode = False
      LastLig_PC = WS_PC.Cells(WS_PC.Rows.Count, "A").End(xlUp).Row

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Par défaut
    Bonjour,
    Le problème c'est que ton SpecialCells te renvoie une plage discontinue (Areas) et que la propriété Rows ne renvoie que le nombre de lignes de la première Area qui correspond généralement uniquement à la ligne d'entête (sauf si la première ligne de données est affichée).
    Essaie donc comme ça (compter les cellules visibles sur une seule colonne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If WS_PC.Range("A1:A" & Lastlig_PC).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 60
    Par défaut
    ouiiii ca marche !!

    merci beaucoup !! ca fait des heures que j'essaie peins de trucs qui ne marchent pas !!

    je vais relire ton explication par contre, car je n'ai pas trop compris pourquoi ça marche mieux que ce que j'avais tapé.


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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/02/2012, 18h50
  2. probleme avec auto incrémente
    Par delaredo dans le forum C#
    Réponses: 3
    Dernier message: 13/05/2011, 11h21
  3. probleme avec auto incremental id
    Par riadhhwajdii dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 30/10/2009, 14h23
  4. [JDK1.5]probleme avec l'auto-unboxing
    Par Grimaud dans le forum NetBeans
    Réponses: 4
    Dernier message: 11/04/2007, 10h10
  5. Réponses: 1
    Dernier message: 25/09/2006, 10h18

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