XL 2019 rechercher un nom dans plusieurs fichiers

Akafal50

XLDnaute Nouveau
Bonsoir les amis

je souhaite rechercher un nom dans plusieurs fichiers ouverts
mon problème est que je ne voudrais pas rechercher un à un
cela est il possible?
ci-joint 3 fichiers dans lesquels je recherche le nom Dossi avec une seule opération
Merci pour votre assistance
 

Pièces jointes

  • rechercher un nom dans plusieurs fichiers D.xlsx
    11.4 KB · Affichages: 4
  • rechercher un nom dans plusieurs fichiers C.xlsx
    8.6 KB · Affichages: 3
  • rechercher un nom dans plusieurs fichiers A.xlsx
    9.1 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Akafal,
Un essai en PJ avec :
VB:
Sub ChercherPartout()
Dim Nom$, Ligne%, i%, L%, Feuille$, Fichier$
Nom = [B1]: Ligne = 2: [E2:G1000].ClearContents
For i = 1 To Workbooks.Count
    Fichier = Workbooks(i).Name
    With Workbooks(Fichier)
        For Each F In Workbooks(Fichier).Sheets
            Feuille = F.Name
            If Application.CountIf(.Sheets(Feuille).Range("A:A"), Nom) > 0 Then
                L = Application.Match(Nom, .Sheets(F.Name).Range("A:A"), 0)
                Cells(Ligne, "E") = Fichier
                Cells(Ligne, "F") = Feuille
                Cells(Ligne, "G") = L
                Ligne = Ligne + 1
            End If
        Next F
    End With
Next i
End Sub
Le nom en B1 est recherché dans tous les fichiers ouverts et dans toutes les feuilles. Résultat en colonnes EFG.
 

Pièces jointes

  • Classeur1.xlsm
    16.1 KB · Affichages: 0

sylvanu

XLDnaute Barbatruc
Supporter XLD
Et si le nom peut apparaitre plusieurs fois en colonne A alors utilisez cette PJ modifiée avec :
VB:
            If Application.CountIf(.Sheets(Feuille).Range("A:A"), Nom) > 0 Then
                Lig = 1
                While .Sheets(F.Name).Cells(Lig, "A") <> ""
                    If .Sheets(F.Name).Cells(Lig, "A") = Nom Then
                        Cells(Ligne, "E") = Fichier
                        Cells(Ligne, "F") = Feuille
                        Cells(Ligne, "G") = Lig
                        Ligne = Ligne + 1
                    End If
                    Lig = Lig + 1
                Wend
            End If
 

Pièces jointes

  • Classeur1(v2).xlsm
    16.4 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Akafal
Essyez ainsi :
1- Vous ouvrez la PJ du post #3 et votre fichier
2- Vous faites ALT+F11 ( ou onglet Développeur puis Visual Basic ) ce qui ouvre l'éditeur basic.
3- Vous cliquez sur Module1 et sans relâcher le clic vous faites glisser dans votre fichier.

Test2.gif

Dans votre fichier vous créez une forme via Insertion Forme, puis clic droit sur cette forme et Affecter une macro.
Dans "Macros dans" vous choisissez Ce classeur puis cliquez sur "ChercherPartout" puis OK

Test3.gif


Enregistrez votre fichier en xlsm pour accepter les macros.
Normalement quand vous cliquez sur votre forme la macro s'exécute.
Et vous devriez obtenir :
Test4.gif
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki