rassembler des lignes recherchées

line31

XLDnaute Nouveau
Bonjour forum!
tout d'abord, bonne journée à tous! :D

ensuite voilà ma question du jour:

je reçois régulièrement des listes de prix de mes différents fournisseurs, sous forme de fichier excel.
Je les rassembles tous au sein d'un même fichier.
Et je veux pouvoir comparer les prix. Mais la liste étant longue, c'est assez fastidieux à faire et surtout long!

Je voudrai donc faire des recherches par mots clés qui me copie sur une nouvelle feuille toutes les lignes contenant ce mot clé. J'aurai ainsi réduit considérablement ma liste de produit et la comparaison sera plus rapide!!!

Je ne maîtrise vraiment pas bien le langage VBA, mais je me dis que c'est la seule solution...

Voilà! Si vous avez quelques idées... 8)
 

smotty

XLDnaute Occasionnel
Re : rassembler des lignes recherchées

Bonjour Line, le Forum


Vous pouvez utiliser le Filtre d'Excel, c'est prévu pour ça.

Sinon avec un tableau croisé dynamique ça devrait largement combler vos besoins. Même si vous ne connaissez pas les TCD, essayez, vous verrez que c'est très simple d'utilisation. Il suffit de suivre les instructions et de savoir ce qu'est un tableau.

cdt

smotty
 

line31

XLDnaute Nouveau
Re : rassembler des lignes recherchées

merci smotty!

mais mon problème est que la dénomination de mes produits change selon les fournisseurs...
par exemple: frs1: crayon de papier ; frs2: bruzt1548 crayon.

est-ce que le filtre peut gerer ça, sachant que chaque fournisseur est sur une feuille différente?
 

smotty

XLDnaute Occasionnel
Re : rassembler des lignes recherchées

Re

Si chaque fournisseur est sur un onglet différent, j'imagine que le format de chaque tableau est différent. Tarif en colonne B pour l'un, D pour l'autre etc...

Afin de pouvoir écrire un code VBA, il faudrait savoir pour chaque onglet dans quelle colonne on cherche le produit et dans quelle colonne on trouve le tarif et éventuellement les autres éléments que vous souhaitez faire apparaître.

cdt

smotty
 

line31

XLDnaute Nouveau
Re : rassembler des lignes recherchées

Re

Si chaque fournisseur est sur un onglet différent, j'imagine que le format de chaque tableau est différent. Tarif en colonne B pour l'un, D pour l'autre etc...

En fait ils sont assez similaire; mais c'est vrai que ça peut varier...

je joins un fichier exemple, ce sera peut etre plus simple...
 

Pièces jointes

  • frshelsµ.xls
    22.5 KB · Affichages: 54

smotty

XLDnaute Occasionnel
Re : rassembler des lignes recherchées

Re bonjour,

Voici en fichier joint la solution.

pour le code:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sh As Worksheet
    Dim c As Range
    Dim l As Long
    
    If Target.Column <> 1 Then Exit Sub
    If Target.Cells.Count > 1 Then Exit Sub
    If Target = "" Then Exit Sub
    
    If Not Intersect(Range("A3"), Target) Is Nothing Then
        Application.EnableEvents = False
        
        Application.ScreenUpdating = False
        
        Range("B:E").Clear
        
        l = Target.Row
        For Each sh In ThisWorkbook.Worksheets
            If sh.Name <> ActiveSheet.Name Then
                Set c = sh.Cells.Find(Target, , xlValues, xlPart)
                If Not c Is Nothing Then
                    ActiveSheet.Cells(l, 2) = sh.Name
                    l = l + 1
                    adrdeb = c.Address
                    Do
                        With sh
                            
                            col = .Range("V" & c.Row).End(xlToLeft).Column
                            .Range(.Cells(c.Row, 1), .Cells(c.Row, col)).Copy
                            ActiveSheet.Range("B" & l).PasteSpecial Paste:=xlPasteValues
                        End With
                        l = l + 1
                        Set c = sh.Cells.FindNext(c)
                    Loop While Not c Is Nothing And c.Address <> adrdeb
                End If
            End If
            l = l + 1
        Next sh
        Application.CutCopyMode = False
        
        Application.ScreenUpdating = True
        
        Application.EnableEvents = True
        
        Range("A3").Select
    End If
End Sub

à mettre dans le code de la feuille où est tappée la demande.

Entrer une valeur en A3 de l'onglet "RECHERCHE"

Fait une rechercher sur TOUS les autres onglets.

Si certains onglets ne contiennent pas les données fournisseurs, il faudra faire un petit teste supplémentaire dans le code.

cdt

smotty
 

Pièces jointes

  • Fournisseurs.zip
    15 KB · Affichages: 35
  • Fournisseurs.zip
    15 KB · Affichages: 34
  • Fournisseurs.zip
    15 KB · Affichages: 35

Discussions similaires

Statistiques des forums

Discussions
312 670
Messages
2 090 744
Membres
104 646
dernier inscrit
Mbark Moustanssir