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 interfeuilles


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut Recherche interfeuilles
    Bonjour à tous,

    J'ai un gros problème je ne sais pas par où commencer...
    Voila mon souci :
    j'ai une feuille 1 avec une liste de paramètre en colonne A et d'autre en B avec environ 20 000 lignes
    j'ai une feuille 2 avec une liste de paramètre les même que ma colonne A de l'autre feuille mais qu'une partie

    Je voudrai avoir en feuille 3, une recherche dans ma feuille 1 de tous mes paramètre de ma feuille 2...
    Sachant que je peux avoir plusieurs lignes par paramétres

    Je sais pas si j'arrive à me faire comprendre....

    Merci d'avance

  2. #2
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    Bonjour,

    voila un exemple qui devrai t'aider
    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
    y = 1
    y2 = 1
    while sheets("feuil2").cells(y,1) <> ""
     
        a = sheets("feuil1").cells(y,1)
        b = sheets("feuil2").cells(y,1)
     
        if a = b then 
            sheets("feuil3").cells(y2,1) = b
            y2 = y2 + 1
        end if
     
        y = y + 1
     
    wend
    N'oublier pas de cliquer sur quand vous avez trouvé une solution qui vous convient.
    Si mon intervention vous a été utile un petit serait sympatique.
    Et si vous avez du temps à consacrer, pensez a venir aider sur le forum.
    C'est en aidant que l'on découvre certaines choses

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut
    Déjà merci pour la réponse, a et b sont quoi en fait ?

  4. #4
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    Des variables lambda, tu peut ne pas les mettre aussi je les ai mis uniquement pour prendre moins de place dans le "If".
    après tu fais se que tu veux avec tu peut même changer le nom.
    N'oublier pas de cliquer sur quand vous avez trouvé une solution qui vous convient.
    Si mon intervention vous a été utile un petit serait sympatique.
    Et si vous avez du temps à consacrer, pensez a venir aider sur le forum.
    C'est en aidant que l'on découvre certaines choses

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut
    Ah d'accord merci je vais essayer de voir cela...

    En fait je ne sais pas si je me suis fait comprendre (moi même j'ai du mal )

    J'ai un peu évolué, dans ma feuille 1 j'ai 2 colonnes A et B du genre
    A B
    ZAD1H0 ADCQ
    ZAD1H1 ADCQ
    ZAD1H2 ADCQ

    Dans ma feuille 2 j'ai
    A B C D E
    ZAXWJK 01/10/2015 00:02:03 R U0999
    ZSS1HI 11/10/2015 08:00:01 R U0999
    ZN1MD8 12/10/2015 10:03:19 R U0999
    ZAXWJK 13/10/2015 00:02:05 R U0999
    ZRCPHE 12/10/2015 14:25:12 R U0999

    Je voudrais (j'y arrive vraiment pas ça m’énerve) (filtrer/comparer/extraire) rechercher toutes mes valeurs dans ma feuille 1 colonne A dans ma feuille 2 colonne A et s'il la trouve copier la ligne entière (colonnes A B C D E) dans ma feuille 3...

  6. #6
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    Ahhh ok, faire un genre de rechercheV.

    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
    y = 1
    y2 = 1
    while sheets("feuil1").cells(y2,1) <> "" 'tant que les cellule sont pas vide on boucle
     
        a = sheets("feuil1").cells(y2,1)
     
    while sheets("feuil2").cells(y,1) <> ""
     
        b = sheets("feuil2").cells(y,1)
     
        if a = b then 'si la cellule feuil1 correspont a la feuille 2 alors on copi et on passe a la suivante
            sheets("feuil3").cells(y2,1) = b 'on copi la premiere cellule trouvée
            sheets("feuil3").cells(y2,2) = sheets("feuil2").cells(y2,2) 'la deuxieme
            sheets("feuil3").cells(y2,3) = sheets("feuil2").cells(y2,3) 'troisieme ect ...
            sheets("feuil3").cells(y2,4) = sheets("feuil2").cells(y2,4)
            sheets("feuil3").cells(y2,5) = sheets("feuil2").cells(y2,5)
            y2 = y2 + 1
            y = 1
            goto d
        end if
     y = y + 1
    wend 
    d:
    wend
    N'oublier pas de cliquer sur quand vous avez trouvé une solution qui vous convient.
    Si mon intervention vous a été utile un petit serait sympatique.
    Et si vous avez du temps à consacrer, pensez a venir aider sur le forum.
    C'est en aidant que l'on découvre certaines choses

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut
    Ahh merci pour cette réponse !

    Je ne comprend pas cela ne marche pas cela ne fait rien.....

    Est ce que avec ce code, s'il ne trouve pas ce qu'il cherche il passe au suivant quand même ?

    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
    43
    44
    45
    Sub test()
     
     
    Dim y2 As Integer
    Dim y As Integer
    'Dim a As Sheet
    'Dim b As Sheet
     
    x = 1
    y = 1
     
        ActiveWorkbook.Worksheets("list").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("list").Sort.SortFields.Add Key:=Range("A:A") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("list").Sort
            .SetRange Range("A:D")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
     
     
    While Sheets("list").Cells(x, 1) <> ""
     
        a = Sheets("list").Cells(x, 1)
        b = Sheets("appli").Cells(y, 1)
     
        If a = b Then
            Sheets("result").Cells(y, 1) = a
            Sheets("result").Cells(y, 2) = Sheets("list").Cells(y, 2)
            Sheets("result").Cells(y, 3) = Sheets("list").Cells(y, 3)
            Sheets("result").Cells(y, 4) = Sheets("list").Cells(y, 4)
            Sheets("result").Cells(y, 5) = Sheets("list").Cells(y, 5)
            y = y + 1
        End If
     
        x = x + 1
     
    Wend
     
     
     
    End Sub

  8. #8
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    normale, je te remet le code que j'ai fait en haut et remit en forme relit le bien tu verras l'erreur toi même ^^


    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
        y = 1
        y2 = 1
        While Sheets("feuil1").Cells(y2, 1) <> "" 'tant que les cellule sont pas vide on boucle
     
        A = Sheets("feuil1").Cells(y2, 1)
     
            While Sheets("feuil2").Cells(y, 1) <> ""
     
                B = Sheets("feuil2").Cells(y, 1)
     
                If A = B Then 'si la cellule feuil1 correspont a la feuille 2 alors on copi et on passe a la suivante
                    Sheets("feuil3").Cells(y2, 1) = B 'on copi la premiere cellule trouvée
                    Sheets("feuil3").Cells(y2, 2) = Sheets("feuil2").Cells(y2, 2) 'la deuxieme
                    Sheets("feuil3").Cells(y2, 3) = Sheets("feuil2").Cells(y2, 3) 'troisieme ect ...
                    Sheets("feuil3").Cells(y2, 4) = Sheets("feuil2").Cells(y2, 4)
                    Sheets("feuil3").Cells(y2, 5) = Sheets("feuil2").Cells(y2, 5)
                    y2 = y2 + 1
                    y = 1
                    GoTo d
                End If
                y = y + 1
            Wend
    d:
        Wend
    N'oublier pas de cliquer sur quand vous avez trouvé une solution qui vous convient.
    Si mon intervention vous a été utile un petit serait sympatique.
    Et si vous avez du temps à consacrer, pensez a venir aider sur le forum.
    C'est en aidant que l'on découvre certaines choses

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut
    Et est ce qu'il serai possible de faire cela via un For Each ?

  10. #10
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    et si on l’intègre a ton code sa donne un truc du genre :


    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
    43
     
    Dim y2 As Integer
    Dim y As Integer
    Dim a As variant
    Dim b As variant
     
     
        ActiveWorkbook.Worksheets("list").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("list").Sort.SortFields.Add Key:=Range("A:A") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("list").Sort
            .SetRange Range("A:D")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
     
        y = 1
        y2 = 1
        While Sheets("list").Cells(y2, 1) <> "" 'tant que les cellule sont pas vide on boucle
     
        a = Sheets("list").Cells(y2, 1)
     
            While Sheets("appli").Cells(y, 1) <> ""
     
                b = Sheets("appli").Cells(y, 1)
     
                If a = b Then
                    Sheets("result").Cells(y2, 1) = b
                    Sheets("result").Cells(y2, 2) = Sheets("appli").Cells(y2, 2)
                    Sheets("result").Cells(y2, 3) = Sheets("appli").Cells(y2, 3)
                    Sheets("result").Cells(y2, 4) = Sheets("appli").Cells(y2, 4)
                    Sheets("result").Cells(y2, 5) = Sheets("appli").Cells(y2, 5)
                    y2 = y2 + 1
                    y = 1
                    GoTo d
                End If
                y = y + 1
            Wend
    d:
        Wend
    et voila
    N'oublier pas de cliquer sur quand vous avez trouvé une solution qui vous convient.
    Si mon intervention vous a été utile un petit serait sympatique.
    Et si vous avez du temps à consacrer, pensez a venir aider sur le forum.
    C'est en aidant que l'on découvre certaines choses

  11. #11
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    Citation Envoyé par guillaume74960 Voir le message
    Et est ce qu'il serai possible de faire cela via un For Each ?
    sa revien au même c'est juste la façon d'enoncer la solution qui change, au lieu de dire "tant que les cellule sont pas vide tu continue", on dit "pour chaque cellule tu fait".

    c'est une boucle quoi,
    dans les deux cas tu doit boucle une fois sur la colonne feuil1 et dans cette boucle, tu doit contrôler chaque cellule de la colonne feuil2, pour vérifier si il y a correspondance.

    du coup tu a un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while
        while
            instruction
        wend
        instruction
    wend
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for
        for
            instruction
        next
        instruction
    next
    N'oublier pas de cliquer sur quand vous avez trouvé une solution qui vous convient.
    Si mon intervention vous a été utile un petit serait sympatique.
    Et si vous avez du temps à consacrer, pensez a venir aider sur le forum.
    C'est en aidant que l'on découvre certaines choses

Discussions similaires

  1. [XL-2010] Recherche multicritères d'après un planning
    Par Systémicien dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/07/2012, 12h26
  2. Réponses: 23
    Dernier message: 11/01/2012, 15h38
  3. Réponses: 3
    Dernier message: 10/01/2012, 10h04
  4. [SP-2010]Recherche fichier par métadata
    Par Yassoubxl dans le forum Développement Sharepoint
    Réponses: 2
    Dernier message: 16/08/2011, 10h57
  5. Réponses: 6
    Dernier message: 27/06/2011, 11h57

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