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 :

Question sur recherche multi critères dans un array [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2018
    Messages : 18
    Par défaut Question sur recherche multi critères dans un array
    Bonsoir à tous,

    Voici un nouveau sujet sur lequel je me pose des questions.

    Dans la fonction ci-dessous (filtre multi-critères dans un tableau), pourquoi je n'arrive pas à filtrer mes 2 recherches dans la même colonne?

    Par exemple, je voudrais rechercher tous les éléments qui contiennent "113-01" et tous les éléments qui contiennent "118-01" dans la colonne A.
    Ma fonction ne fonctionne que si les filtres se font dans des colonnes différentes. Donc cela fonctionnerait si la recherche des "113-01" se fait dans la colonne A et la recherche des "118-01" se fait dans la colonne B.

    Merci par avance pour vos éclaircissements.


    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
    37
    38
    39
    40
    41
     
    Function FiltreMultiCrit2(Tbl, colCle1, Cle1, ColResult, Optional colCle2, Optional Cle2, Optional ColTri)
     
      Dim b()
     
            ligne = 1
            If IsMissing(colCle2) Then colCle2 = colCle1: Cle2 = Cle1
            For i = LBound(Tbl) To UBound(Tbl)
               ' If Tbl(i, colClé1) = Clé1 And Tbl(i, colClé2) = Clé2 Then n = n + 1
                If InStr(1, Tbl(i, colCle1), Cle1, vbTextCompare) > 0 And InStr(1, Tbl(i, colCle2), Cle2, vbTextCompare) > 0 Then n = n + 1 ' Instr pour dire que Clé1 et Clé2 COMPREND la chaîne de caractère
            Next i
     
            If n > 0 Then
     
              If IsArray(ColResult) Then
                ReDim b(LBound(Tbl) To n, LBound(ColResult) + 1 To UBound(ColResult) - LBound(ColResult) + 1)
              Else
                ReDim b(LBound(Tbl) To n, 1 To 1)
              End If
     
              For i = LBound(Tbl, 1) To UBound(Tbl, 1)
     
                 ' If Tbl(i, colClé1) = Clé1 And Tbl(i, colClé2) = Clé2 Then
                  If InStr(1, Tbl(i, colCle1), Cle1, vbTextCompare) > 0 And InStr(1, Tbl(i, colCle2), Cle2, vbTextCompare) > 0 Then
                     If IsArray(ColResult) Then
                        For c = LBound(ColResult) To UBound(ColResult)
                            col = ColResult(c)
                            b(ligne, c + 1) = Tbl(i, col)
                        Next c
                     Else
                        b(ligne, ColResult) = Tbl(i, ColResult)
                     End If
                     ligne = ligne + 1
                  End If
             Next i
     
             If Not IsMissing(ColTri) Then Call TriCol(b, LBound(b), UBound(b), ColTri)
                FiltreMultiCol2 = b
             End If
     
    End Function

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(1, Tbl(i, colCle1), Cle1, vbTextCompare) > 0 or InStr(1, Tbl(i, colCle2), Cle2, vbTextCompare) > 0 Then n = n + 1 ' Instr pour dire que Clé1 et Clé2 COMPREND la chaîne de caractère
    j'explique
    comme tu a mis un des test en optional et meme sans je supose que c'est l'un OU!!! l'autre et dans ce cas le "ou" c'est OR en vba
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2018
    Messages : 18
    Par défaut
    Super. Merci pour l'explication.
    Ca fonctionne à merveille.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    de rien
    mais en supposant que la source de ton tableau provient d'un range ,auserais-je dire qu' avec un filtre directement sur ta plage tu fait cela en 1 ligne
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2018
    Messages : 18
    Par défaut
    Oui bien sûr. Tous les conseils sont bons à prendre.
    J'ai essayé de faire un filtre plus simple et plus court mais ils ne fonctionnait pas (peut-être parce que je travaille avec des tableaux et que j'ai plusieurs critères ou alors je m'y suis mal prise).

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    pour un tableau (range) c'est autofilter field1 contient "blabla", fild2 contient "balabla" ( recheche autofilter)

    bien sur ca peut etre commence par a la place de contient si l'argument recherché doit etre au debut du texte dans les cellules

    pour une variable tableau c'est filter 'blabla",(true/false pour l'inclusion ou l'exclusion) mais ca ne fonctionne que sur un tableau a 1 seule dimention (un array quoi )
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2018
    Messages : 18
    Par défaut
    Merci pour les tuyaux
    Je vais garder dans ma mémoire cette fonction Filter qui me sera très utile pour les prochaines étapes de mon travail pour mes tableaux array

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

Discussions similaires

  1. Recherche multi-critères dans un userform
    Par DRH01 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/05/2010, 14h28
  2. [AC-2003] Recherche multi-critère dans une même table
    Par Tadao dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 09/03/2010, 19h01
  3. recherche multi-critères dans un formulaire de recherche
    Par sam1975 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/08/2009, 18h12
  4. Tutoriel sur recherche multi-critère
    Par Skootman dans le forum IHM
    Réponses: 3
    Dernier message: 09/04/2009, 15h01
  5. Réponses: 7
    Dernier message: 26/10/2006, 15h13

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