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 :

recherche dans une plage de données 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 recherche dans une plage de données avec filtre
    bonjour,

    j'ai une feuille Excel où j'utilise un filtre sur la colonne A.
    je souhaite ensuite vérifier que les infos de la colonne C existe dans une autre feuille Excel

    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
     Worksheets("CIT_grpactplf").Select
             If Worksheets("CIT_grpactplf").FilterMode = False Then
                Sheets("CIT_grpactplf").Rows(1).AutoFilter
             End If
             Selection.AutoFilter Field:=1, Criteria1:=W_GRPACTPLF
             W_TROUVE_PLF = False
             For Each W_CEL_CIT In Worksheets("CIT_grpactplf").Range("C2:C" & _
                 Worksheets("CIT_grpactplf").Range("C65536").End(xlUp)).SpecialCells(xlVisible)
                  For a = 2 To aa
                       If W_CEL_CIT = Worksheets("W_TAB").cells(a, 1) Then
                          {traitement...
                       else
                          {erreur
                       end if
                  next a
             next
    or le programme bug lorsqu'il arrive au for each. En fait, je ne sais pas trop comment traduire la plage de recherche (qui correspont à une plage filtrée)

    je ne sais pas si c'est très clair.
    merci d'avance pour votre aide.

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Dans ton instruction For Each... tu traites un Range comme une collection et je ne sais pas si c'est possible. Si ça l'est, quel est le type de ta variable W_CEL_CIT ?

    Si tu tiens à travailler sur des données filtrées, je te conseillerais d'ouvrir un recordset sur tes données, le filtrage sera assuré par l'instruction SQL. Tu trouveras la méthode ici en FAQ ou dans les tutos.

    Plus simple : tu scrutes toutes les lignes de ton tableau de données. Pour chaque ligne tu testes d'abord le contenu de A et suivant le résultat tu fais ensuite ton test sur C.

    En espérant que cela t'aide,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  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
    en fait, je débute en Vb, je ne fais que des macros dans Excel et il me semblait que pour utiliser du SQL il fallait passer par Access.

    j'ai déclaré ma variable W_CEL_CIT de cette manière
    j'ai effectivement pensé à ta solution
    Plus simple : tu scrutes toutes les lignes de ton tableau de données. Pour chaque ligne tu testes d'abord le contenu de A et suivant le résultat tu fais ensuite ton test sur C.
    mais j'ai plus de 10000 lignes pour le moment, et au fil du temps ça va augmenter.
    actuellement ma petite "appli" est une usine à gaz pas forcément super performante (elle tourne pendant 5 minutes). du coup, je pensais (peut-être à tort) que l'utilisation des filtres seraient rapide.

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Si tu débutes, j'imagine que tu souhaites progresser...
    Si tu veux utiliser les filtres, tu trouveras des infos ici
    Si tu veux apprendre à ouvrir un recordset tu as ce tuto très complet en ADO. Tu en trouveras d'autres en DAO.
    Pour la méthode simple, si c'est le temps d'exécution qui pose problème, n'oublie pas que tu peux travailler avec une variable tableau dans laquelle tu charges en une fois toutes les données de la feuille. Le traitement est ensuite assez rapide.

    En espérant que cela t'aide,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  5. #5
    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 pour toutes tes réponses,

    je vais essayer d'étudier tout ça.

Discussions similaires

  1. EXCEL recherche dans une plage de données
    Par anniie dans le forum Excel
    Réponses: 11
    Dernier message: 06/05/2015, 09h16
  2. Réponses: 13
    Dernier message: 04/05/2015, 13h43
  3. [XL-2010] Recherche dans une plage de données
    Par pimpmyride dans le forum Excel
    Réponses: 6
    Dernier message: 18/02/2013, 16h17
  4. [XL-2003] Rechercher une variable dans une plage de données
    Par gandalf20000000 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/11/2009, 11h56
  5. Pb de lecture données dans une plage de cellule avec itération
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/07/2006, 13h33

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