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 :

[VBA-E] Recherche sur plusieurs colonnes ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de Kokito
    Homme Profil pro
    Inscrit en
    Février 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2004
    Messages : 78
    Points : 56
    Points
    56
    Par défaut [VBA-E] Recherche sur plusieurs colonnes ?
    Bonjour tout le monde

    Voilà, j'ai besoin d'aide, je suis un peu coincé

    J'vais d'abord vous montrer un exemple avant d'expliquer mon problème

    Prenons ce tableau en exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     Col A | Col B | Col C |
    -------|-------|-------|
       A   |   BC  |   34  |
       A   |   CD  |   23  |
       A   |   EF  |   12  |
       B   |   BC  |   45  |
    Je souhaiterais récupérer la valeur de la Col C en passant en paramètres une valeur de la Col A et une valeur de la Col B ...

    En sachant que j'ai 6 colonnes au total et près de 12000 lignes ... j'ai essayé de faire des boucles imbriquées mais ca devient vite lourd et ingérable ...

    Je ne sais pas trop vers quelle fonction me diriger pour faire cela ...

    J'espère avoir été assez clair dans mon post

    Merci à tous de votre aide
    Protégeons la couche d'eau jaune

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Tu veux la mettre ou ta valeur ?

    Tu as regardé du coté de la fonction Find ? C'est ce que les gens d'ici utilisent le plus souvent (perso je sais pas l'utiliser ) mais je crois que c'est que pour une valeur cherchée par contre..Faut aller voir dans l'aide

    Sinon tu peux nous montrer le programme avec les boucles imbriquées ? yaurait peut etre moyen de le réduire
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Sinon regarde du coté de la fonction RECHERCHEV

  4. #4
    Membre du Club Avatar de Kokito
    Homme Profil pro
    Inscrit en
    Février 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2004
    Messages : 78
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par illight
    Tu veux la mettre ou ta valeur ?

    Tu as regardé du coté de la fonction Find ? C'est ce que les gens d'ici utilisent le plus souvent (perso je sais pas l'utiliser ) mais je crois que c'est que pour une valeur cherchée par contre..Faut aller voir dans l'aide

    Sinon tu peux nous montrer le programme avec les boucles imbriquées ? yaurait peut etre moyen de le réduire
    Voilà ce que je fais à l'heure actuelle, c'est lourd et ca prend au moins 3 minutes de traitement

    En fait le principe est que je vérifie que dans le tableau tous les cas possibles soient présents sinon j'écris dans le fichier log comme quoi il manque un cas ...

    La Fonction Log, c'est une fonction qui écrit dans un fichier Log ...

    Tiens d'ailleurs petite question à part, comment peut-on sauter une ligne dans un IF, dans une fonction ou une chaine on met un "_" je crois mais dans un IF ?

    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
    42
     
    ' Module principal :
        For a = 0 To 100
            If ((a > 20) And EstPair(Val(a))) Or (a <= 20) Then
                For b = 1 To UBound(DatasColB) ' vaut 23
                    For c = 1 To UBound(DatasColC) ' vaut 3
                        For d = 1 To UBound(DatasColD) ' vaut 3
                            If FindCalcul(DatasColB(b), DatasColC(c), DatasColD(d), a) = False Then                            
                                Log True, "bla bla bla bla"
                            End If
                        Next d
                    Next c
                Next b
            End If
        Next a
     
     
    ' Ma fonction appelée FindCalcul :
    Function FindCalcul(ParamColB As String, ParamColC As String, ParamColD As String, ParamColE As Integer) As Boolean
        Dim RG As Range
        Dim FirstRow As String
     
        FindCalcul = False
     
        With Worksheets(1).Range("E2:E65536")
            Set RG = .Find(What:=ParamColE, LookAt:=xlWhole)
            If Not RG Is Nothing Then
                FirstRow = RG.row
                Do
                    With Workbooks(1).Sheets(1)
                        If (Range("C" & RG.row).value = ParamColC) And (Range("D" & RG.row).value = ParamColD) And (Range("B" & RG.row).value = ParamColB) Then
                            FindCalcul = True
                            Exit Function
                        End If
                    End With
                    Set RG = .FindNext(RG)
                Loop While Not RG Is Nothing And RG.row <> FirstRow
            Else
                Exit Function
            End If
        End With
    End Function
    Bon courage et merci
    Protégeons la couche d'eau jaune

  5. #5
    Membre du Club Avatar de Kokito
    Homme Profil pro
    Inscrit en
    Février 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2004
    Messages : 78
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par marsupilami34
    Sinon regarde du coté de la fonction RECHERCHEV
    J'vais zieuter ca
    Protégeons la couche d'eau jaune

  6. #6
    Membre du Club Avatar de Kokito
    Homme Profil pro
    Inscrit en
    Février 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2004
    Messages : 78
    Points : 56
    Points
    56
    Par défaut
    J'ai regardé du côté de RECHERCHEV, ca m'a conduit jusqu'à VLookUp ...

    Mais pas moyen de faire marcher cette fonction grrrrrrrrrr

    Soit erreur 1004, soit incompatibilité de type ... j'ai la poisse qui me colle on dirait
    Protégeons la couche d'eau jaune

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    tu peux aussi utiliser une fonction de ce type
    (formule matricielle à valider par Ctrl+Shift+Entree)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX(D1:D12000;EQUIV(1;(A1:A12000="A")*(B1:B12000="CD")*(C1:C12000="XX");0))
    L'exemple récupère la valeur de la colonne D en fonction des données contenues dans les colonnes A , B et C


    bonne journée
    michel

  8. #8
    Membre du Club Avatar de Kokito
    Homme Profil pro
    Inscrit en
    Février 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2004
    Messages : 78
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par SilkyRoad
    bonjour

    tu peux aussi utiliser une fonction de ce type
    (formule matricielle à valider par Ctrl+Shift+Entree)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX(D1:D12000;EQUIV(1;(A1:A12000="A")*(B1:B12000="CD")*(C1:C12000="XX");0))
    L'exemple récupère la valeur de la colonne D en fonction des données contenues dans les colonnes A , B et C


    bonne journée
    michel
    Wouaaahhhouuuu merci beaucoup c'est génial ca

    Encore merci, hop résolu
    Protégeons la couche d'eau jaune

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

Discussions similaires

  1. [XL-2007] Formulaire VBA Excel - recherche sur plusieurs critères et affichage des résultats
    Par kl1ft dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/08/2016, 20h44
  2. [WD16] Recherche sur plusieurs colonnes d'une table
    Par WDKyle dans le forum WinDev
    Réponses: 2
    Dernier message: 04/06/2012, 13h17
  3. [XL-2003] Modification d'un code pour rechercher sur plusieurs colonnes au lieu d'une
    Par chipster008 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/05/2011, 14h10
  4. [VBA/Excel]recherche sur 2 colonnes
    Par rodrigue62 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/03/2007, 17h35
  5. [VBA-E] Eclater les valeurs d'une cellue sur plusieurs colonnes
    Par sosophie dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/03/2007, 08h41

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