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

Excel Discussion :

recherche d'un terme sous plusieurs onglets (et/ou) plusieurs classeurs et récupération de la colonne et ligne [XL-2013]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Assistante Service Approvisionnement
    Inscrit en
    Décembre 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistante Service Approvisionnement
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 44
    Points : 20
    Points
    20
    Par défaut recherche d'un terme sous plusieurs onglets (et/ou) plusieurs classeurs et récupération de la colonne et ligne
    Bonjour à tous,
    de nouveau sur une idée épineuse, je sollicite vos neurones en ébullition
    fichier joint
    dans chaque fichier (1 en français et l'autre en anglais - exactement même structure)
    j'ai une série de termes regroupés pour former des familles dans un tableau double entrée
    je souhaite dans un 3° fichier, lancer une recherche d'un terme dans ces 2 fichiers et récupérer la (ou les, normalement pas de doublon mais....)
    donc récupérer la famille qui correspond à "feuille" & 4° digit (ligne)& 5° digit(colonne): exemple CIRE = YK031; POULIE =YK761...
    par macro ou formule, pas de préférence; je penses que l'on peut même avoir des cellules de recherches distinctes pour le fichier français et le fichier anglais
    Merci d'avance pour votre aide
    Prenez bien soin de vous et de vos proches,
    Fleur59
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Voici une proposition, ouvrez les 3 classeurs dans la même session excel.
    Comme je n'ai pas le nom des classeurs ni leur emplacement, allez sur le classeur "Résultats", faites ALT + F11 pour accéder au code et remplacez les noms des classeurs par les vrais noms.
    Allez sur le classeur "Résultats", Cliquez sur le bouton, et saisissez une valeur à rechercher.
    le résultat s'affiche soit dans la colonne "Français" ou" Anglais".

    le classeur "Résultats"
    Pièce jointe 574282

    Le code
    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
    Sub Recherche()
        Dim Message, Titre, ValeurRecherchee
        Application.ScreenUpdating = False
        Dim Col_Fr As Long, Col_An As Long, Lig_Res As Long
        Dim c As Long, Cpt As Long, i As Long
        Dim Lig_v As Long, Col_v As Long
        Dim v As Object
     
        Message = "Quelle est la valeur recherchée"
        Titre = "Valeur recherchée"
        ValeurRecherchee = UCase(InputBox(Message, Titre)) 'Demande quelle est la valeur à rechercher
        Col_Fr = 2 'colonne des résultats pour le fichier français
        Col_An = 3 'colonne des résultats pour le fichier anglais
     
        ReDim Valeur(0) As String
        For c = 1 To 2
            If c = 1 Then Classeur = "Français.xlsx" Else Classeur = "Anglais.xlsx"
            Windows(Classeur).Activate 'on active le classeur
            For i = 1 To Sheets.Count 'on passe toutes les feuilles en revue
                Set v = Sheets(i).Cells.Find(ValeurRecherchee, lookat:=xlWhole) 'on cherche la valeur
                If Not v Is Nothing Then 'si la valeur est trouvée
                    Lig_v = Cells(v.Row, "A").MergeArea.Cells(1, 1).Value 'on récupère la valeur de la cellule fusionnée en colonne A
                    Col_v = Cells(2, v.Column).MergeArea.Cells(1, 1).Value 'on récupère la valeur de la cellule fusionnée en ligne 2
                    Valeur(Cpt) = Sheets(i).Name & Lig_v & Col_v 'on associe le nom de la feuille avec celles de la ligne et de la colonne
                    Cpt = Cpt + 1 'incrémentation du compteur des valeurs trouvées
                    ReDim Preserve Valeur(Cpt)
                End If
            Next i
            Windows("Resultats.xlsm").Activate
            If Cpt <> 0 Then
     
                If c = 1 Then
                    Lig_Res = Sheets("Res").Range("B" & Rows.Count).End(xlUp).Row + 1 'recherche de la première ligne libre colonne "français"
                    Sheets("Res").Cells(Lig_Res, Col_Fr).Resize(Cpt, 1) = Application.WorksheetFunction.Transpose(Valeur) 'restitution des valeurs dans le classeur "Résultats"
                Else
                    Lig_Res = Sheets("Res").Range("C" & Rows.Count).End(xlUp).Row + 1 'recherche de la première ligne libre colonne "anglais"
                    Sheets("Res").Cells(Lig_Res, Col_An).Resize(Cpt, 1) = Application.WorksheetFunction.Transpose(Valeur) 'restitution des valeurs dans le classeur "Résultats"
                End If
                Sheets("Res").Cells(Lig_Res, "A") = ValeurRecherchee
            End If
        Next c
        Set v = Nothing
    End Sub
    Cdlt

  3. #3
    Membre à l'essai
    Femme Profil pro
    Assistante Service Approvisionnement
    Inscrit en
    Décembre 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistante Service Approvisionnement
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 44
    Points : 20
    Points
    20
    Par défaut [XL-2013] recherche d'un terme sous plusieurs onglets (et/ou) plusieurs classeurs et récupération de la colonn
    Bonjour Arturo83;
    Superbe!
    petite amélioration si possible, la recherche se fait sur les champs entiers.
    est-il possible de chercher à l'intérieur des champs? si je cherche "Steel", je ne trouve rien
    Merci de votre aide déjà bien précieuse
    Fleur59

  4. #4
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Assistante Service Approvisionnement
    Inscrit en
    Décembre 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistante Service Approvisionnement
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 44
    Points : 20
    Points
    20
    Par défaut [XL-2013] recherche d'un terme sous plusieurs onglets (et/ou) plusieurs classeurs et récupération de la colonn
    Youhou Merci Menhir
    dans la colonne A s'écrit la valeur recherchée, pourrais-je avoir la valeur trouvée?
    demande la Fleur exigeante
    Merci d'avance
    Fleur59

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonsoir,

    Voici la modification demandée
    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
    46
    47
    48
    Sub Recherche()
        Dim Message, Titre, ValeurRecherchee
        Application.ScreenUpdating = False
        Dim Col_Fr As Long, Col_An As Long, Lig_Res As Long
        Dim c As Long, Cpt As Long, i As Long
        Dim Lig_v As Long, Col_v As Long
        Dim v As Object
     
        Message = "Quelle est la valeur recherchée"
        Titre = "Valeur recherchée"
        ValeurRecherchee = UCase(InputBox(Message, Titre)) 'Demande quelle est la valeur à rechercher
        Col_Fr = 2 'colonne des résultats pour le fichier français
        Col_An = 3 'colonne des résultats pour le fichier anglais
     
        ReDim Valeur(0) As String
        ReDim Trouve(0) As String
        For c = 1 To 2
            If c = 1 Then Classeur = "Français.xlsx" Else Classeur = "Anglais.xlsx"
            Windows(Classeur).Activate 'on active le classeur
            For i = 1 To Sheets.Count 'on passe toutes les feuilles en revue
                'Cpt = ""
                Set v = Sheets(i).Cells.Find(ValeurRecherchee, LookIn:=xlValues, lookat:=xlPart) 'on cherche la valeur
                If Not v Is Nothing Then 'si la valeur est trouvée
                    Lig_v = Sheets(i).Cells(v.Row, "A").MergeArea.Cells(1, 1).Value 'on récupère la valeur de la cellule fusionnée en colonne A
                    Col_v = Sheets(i).Cells(2, v.Column).MergeArea.Cells(1, 1).Value 'on récupère la valeur de la cellule fusionnée en ligne 2
                    Valeur(Cpt) = Sheets(i).Name & Lig_v & Col_v 'on associe le nom de la feuille avec celles de la ligne et de la colonne
                    Trouve(Cpt) = Sheets(i).Cells(v.Row, v.Column) 'on récupère la valeur recherchée
                    Cpt = Cpt + 1 'incrémentation du compteur des valeurs trouvées
                    ReDim Preserve Valeur(Cpt)
                    ReDim Preserve Trouve(Cpt)
                End If
            Next i
            Windows("Resultats.xlsm").Activate
            If Cpt <> 0 Then
                If c = 1 Then
                    Lig_Res = Sheets("Res").Range("A" & Rows.Count).End(xlUp).Row + 1 'recherche de la première ligne libre colonne "français"
                    Sheets("Res").Cells(Lig_Res, Col_Fr).Resize(Cpt, 1) = Application.WorksheetFunction.Transpose(Valeur) 'restitution des valeurs dans le classeur "Résultats"
                Else
                    Lig_Res = Sheets("Res").Range("A" & Rows.Count).End(xlUp).Row + 1 'recherche de la première ligne libre colonne "anglais"
                    Sheets("Res").Cells(Lig_Res, Col_An).Resize(Cpt, 1) = Application.WorksheetFunction.Transpose(Valeur) 'restitution des valeurs dans le classeur "Résultats"
                End If
                'Sheets("Res").Cells(Lig_Res, "A") = ValeurRecherchee
                Sheets("Res").Cells(Lig_Res, 1).Resize(Cpt, 1) = Application.WorksheetFunction.Transpose(Trouve) 'restitution des valeurs dans le classeur "Résultats"
                Cpt = 0
            End If
        Next c
        Set v = Nothing
    End Sub
    Cdlt

  7. #7
    Membre à l'essai
    Femme Profil pro
    Assistante Service Approvisionnement
    Inscrit en
    Décembre 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistante Service Approvisionnement
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 44
    Points : 20
    Points
    20
    Par défaut [XL-2013] recherche d'un terme sous plusieurs onglets (et/ou) plusieurs classeurs et récupération de la colonn
    Bonjour à Tous
    Merci pour cette grande avancée, mais il semble que pour chaque feuille la recherche s'arrête à la première occurrence trouvée
    Merci encore pour votre aide précieuse
    Fleur59

  8. #8
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    mais il semble que pour chaque feuille la recherche s'arrête à la première occurrence trouvée
    Effectivement, j'étais resré sur l'idée de départ qu'il n'y avait pas de doublon.

    Voici le fichier modifié
    Pièce jointe 574553

    le code
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Sub Recherche()
        Dim Message, Titre, ValeurRecherchee
        Application.ScreenUpdating = False
        Dim Col_Fr As Long, Col_An As Long, Lig_Res As Long
        Dim c As Long, Cpt As Long, i As Long
        Dim Lig_v As Long, Col_v As Long
        Dim v As Object
        'Effacement des précédents résultats
        Sheets("Res").Range("A2:C10000").ClearContents
        Message = "Quelle est la valeur recherchée"
        Titre = "Valeur recherchée"
        ValeurRecherchee = UCase(InputBox(Message, Titre)) 'Demande quelle est la valeur à rechercher
        Col_Fr = 2 'colonne des résultats pour le fichier français
        Col_An = 3 'colonne des résultats pour le fichier anglais
     
        ReDim Valeur(0) As String
        ReDim Trouve(0) As String
        For c = 1 To 2
            If c = 1 Then Classeur = "Français.xlsx" Else Classeur = "Anglais.xlsx"
            Windows(Classeur).Activate 'on active le classeur
            For i = 1 To Sheets.Count 'on passe toutes les feuilles en revue
                With Sheets(i).Range("A1:U42")
                    Set v = .Find(ValeurRecherchee, lookat:=xlPart) 'on cherche la valeur
                    If Not v Is Nothing Then 'si la valeur est trouvée
                        Pos_Deb = v.Address
                        Do
                            Lig_v = .Cells(v.Row, "A").MergeArea.Cells(1, 1).Value 'on récupère la valeur de la cellule fusionnée en colonne A
                            Col_v = .Cells(2, v.Column).MergeArea.Cells(1, 1).Value 'on récupère la valeur de la cellule fusionnée en ligne 2
                            Valeur(Cpt) = Sheets(i).Name & Lig_v & Col_v 'on associe le nom de la feuille avec celles de la ligne et de la colonne
                            Trouve(Cpt) = Sheets(i).Cells(v.Row, v.Column) 'on récupère la valeur recherchée
                            Cpt = Cpt + 1 'incrémentation du compteur des valeurs trouvées
                            ReDim Preserve Valeur(Cpt)
                            ReDim Preserve Trouve(Cpt)
                            Set v = .FindNext(v)
                        Loop While Not v Is Nothing And v.Address <> Pos_Deb
                    End If
                End With
            Next i
            Windows("Resultats.xlsm").Activate
            If Cpt <> 0 Then
                If c = 1 Then
                    Lig_Res = Sheets("Res").Range("A" & Rows.Count).End(xlUp).Row + 1 'recherche de la première ligne libre colonne "français"
                    Sheets("Res").Cells(Lig_Res, Col_Fr).Resize(Cpt, 1) = Application.WorksheetFunction.Transpose(Valeur) 'restitution des valeurs dans le classeur "Résultats"
                Else
                    Lig_Res = Sheets("Res").Range("A" & Rows.Count).End(xlUp).Row + 1 'recherche de la première ligne libre colonne "anglais"
                    Sheets("Res").Cells(Lig_Res, Col_An).Resize(Cpt, 1) = Application.WorksheetFunction.Transpose(Valeur) 'restitution des valeurs dans le classeur "Résultats"
                End If
                'Sheets("Res").Cells(Lig_Res, "A") = ValeurRecherchee
                Sheets("Res").Cells(Lig_Res, 1).Resize(Cpt, 1) = Application.WorksheetFunction.Transpose(Trouve) 'restitution des valeurs dans le classeur "Résultats"
                Cpt = 0
            End If
        Next c
        Set v = Nothing
    End Sub
    Cdlt

  9. #9
    Membre à l'essai
    Femme Profil pro
    Assistante Service Approvisionnement
    Inscrit en
    Décembre 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistante Service Approvisionnement
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 44
    Points : 20
    Points
    20
    Par défaut [XL-2013] recherche d'un terme sous plusieurs onglets (et/ou) plusieurs classeurs et récupération de la colonn
    Bonjour,
    Fond et forme correspondent tout à fait à mon besoin.
    Merci à tous deux pour votre aide précieuse. Arturo83 et Menhir.
    Vos légendaires connaissances et disponibilités ne m'ont pas fait défaut.
    Je clôture le sujet.
    @ Bientôt pour d'autres enigmes
    Fleur59

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

Discussions similaires

  1. [OL-2016] Recherche code afin de répondre à un mail sous plusieurs conditions
    Par manumu dans le forum VBA Outlook
    Réponses: 13
    Dernier message: 25/04/2019, 17h05
  2. [XL-2013] Recherche de valeur sous plusieurs conditions
    Par Alpaco dans le forum Excel
    Réponses: 8
    Dernier message: 18/01/2018, 14h27
  3. [XL-2002] Rechercher/Remplacer chaîne dans onglet macro de plusieurs classeurs
    Par cdlabal dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/11/2010, 00h25
  4. VBA-Recherche d'une feuille dans plusieurs classeurs
    Par derf3183 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/07/2006, 14h50
  5. Recherche définition de termes informatiques
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 06/05/2005, 17h03

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