Microsoft 365 Effectué une recherche dans plusieurs fichiers

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

largo41270

XLDnaute Nouveau
Bonjour a tous

J’ai besoin de votre aide

Je dois effectue une recherche dans plusieurs fichiers excel (environ 20 fichiers) comportant 15 colonnes.

Imaginons que dans tous les fichiers source que la colonne M soit les n° de palettes et en R les n° de pièce

Je voudrais pouvoir effectuer la recherche soit par une partie du n° de palette ou du n° de la pièce et Afficher la ligne complète du fichier dans le cadre résultat et si je clic sur le résultat ca ouvre le fichier

En bas de la feuille j’ai mis des modèles de N° de pièce on constate qu’il y a des parties identique

Pour éviter que ça ram de trop dans le fichier j’ai fait une liste des dossiers ou je dois chercher

Et cellule G4 j’indique dans quel dossier chercher

Je reste a votre disposition et vous remercie d’avance
 

Pièces jointes

bonjour job75,
j'ai un petit problème avec le code
quand ca effectue une recherche dans la colonne "s/n" ca ne donne pas dans quelle palette elle ce trouve
et pareille quand rentre une ref Pallet no ca ne nous donne pas les ref S/N qui sont associé

merci d'avance
 

Pièces jointes

Bonjour largo41270,
quand ca effectue une recherche dans la colonne "s/n" ca ne donne pas dans quelle palette elle ce trouve
La macro du post #31 restitue ce qui est recherché.

Si vous voulez voir toutes les valeurs de la ligne cliquez sur le lien en colonne A, il est fait pour ça.

Maintenant si vous voulez que les 2 colonnes S/N et Pallet No. soient renseignées utilisez :
VB:
            For j = 0 To 1
                If plage(i, col(j)) <> "" Then
                    If plage(i, col(j)).Text Like cible Then
                        .Hyperlinks.Add .Cells(lig, 1), sf & f.Name, TextToDisplay:=f.Name 'lien hypertecte
                        .Cells(lig, 2) = plage(i, col(0))
                        .Cells(lig, 3) = plage(i, col(1))
                        If plage(i, dercol) <> "" Then .Cells(lig, 2).Resize(, 2).Interior.ColorIndex = 6 'jaune
                        Exit For
                    End If
                End If
            Next j
A+
 

Pièces jointes

bonjour job75 et merci

est-ce que c'est possible si on fait une recherche avec cette "K012203110010" dans le dossier "doss1"
il trouves 36 résultats, que sur 10 des résultats je passe les cellules en jaune dans "S/N" et "Pallet no." et que je les attributs au client toto dans la colonne "affaire/client" j'ai un bouton pour enregistrer les modifications dans les fichiers de la colonne "A"
encore merci pour ton boulot
 

Pièces jointes

Vous pouvez toujours :

- cliquer sur un lien en colonne A pour ouvrir le fichier source

- modifier ce fichier, l'enregistrer et le refermer.
c'est une solution mais qui me fait perdre beaucoup de temp puisque je traite environ 50 a 100 palettes par jour en tapent une partie de la ref palette ca peut donner des résultats qui vont êtres sur plusieurs fichiers
donc je suis obligé ouvrir tous les fichier pour les modifier
c'est pour ca que j'aimerai avoir un bouton pour que l'enregistrement ce face directement
 
donc je suis obligé ouvrir tous les fichier pour les modifier

D'accord, alors vous pouvez utiliser cette macro, affectée au 2ème bouton :
VB:
Sub Modifier_client()
Dim w As Worksheet, c As Range, i&, client$, lig&, fichier$, cc As Range, n&
Set w = Sheets("Feuil1")
If Application.CountIf(w.[F:F], "X") = 0 Then Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each c In w.[F:F].SpecialCells(xlCellTypeConstants)
    If UCase(c) = "X" Then
        i = c.Row
        client = w.Cells(i, 4)
        lig = Val(w.Cells(i, 5))
        If lig <= 0 Then
            w.Cells(i, 6) = ""
        Else
            fichier = w.Cells(i, 1).Hyperlinks(1).Address
            If Dir(fichier) = "" Then fichier = ThisWorkbook.Path & "\" & fichier
            With Workbooks.Open(fichier).Sheets(1) 'ouvre le fichier
                Set cc = .Cells.Find("AFFAIRE/CLIENT")
                If cc Is Nothing Then
                    w.Cells(i, 6) = ""
                Else
                    n = n + 1
                .Cells(lig, cc.Column) = client
                End If
            .Parent.Close Not cc Is Nothing    'enregistre et ferme le fichier
            End With
        End If
    End If
Next
MsgBox n & " cellule(s) modifiée(s) dans les fichiers sources"
End Sub
Bonne nuit.
 

Pièces jointes

Dernière édition:
Bonjour largo41270, le forum,

Chez moi au post #41 il fallait cette ligne de code :
VB:
fichier = ThisWorkbook.Path & "\" & w.Cells(i, 1).Hyperlinks(1).Address
Pour que ça fonctionne dans tous les cas je viens de la remplacer par ces 2 lignes :
VB:
fichier = w.Cells(i, 1).Hyperlinks(1).Address
If Dir(fichier) = "" Then fichier = ThisWorkbook.Path & "\" & fichier
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 recherche idée
Réponses
6
Affichages
671
Retour