Recherche et extraction de résultats sur plusieurs feuilles

Fave

XLDnaute Junior
Bonjour à toutes et tous,

Je rencontre un souci avec un fichier excel 2007.

J'ai un fichier avec 13 onglets; tous les mois de l'année plus une récap où je souhaite extraire mes résulats.

Après quelques recherches sur le forum, je suis tombé sur un code que myDearFriend! avait écrit en 2005 (topic initial).

Le résultat obtenu correspond parfaitement à ce que je souhaite faire.

J'ai essayé de l'adapter à mes besoins mais mes connaissances VBA sont bien en deçà de ce qui a été réalisé...

Je recherche donc une bonne âme qui pourrait m'aider à adapter ce code à mon fichier.

J'en profite pour dire que j'aurai besoin de ce code pour le mettre en place dans d'autres fichiers. Du coup, j'aimerai vraiment comprendre la logique de celui-ci, pour ne pas avoir à vous déranger par la suite... :p

Merci d'avance pour l'aide que vous voudrez bien m'apporter...

+++........................
 

Pièces jointes

  • test.xlsm
    40.9 KB · Affichages: 79
  • test.xlsm
    40.9 KB · Affichages: 80
  • test.xlsm
    40.9 KB · Affichages: 83

MichD

XLDnaute Impliqué
Re : Recherche et extraction de résultats sur plusieurs feuilles

Bonjour,


Copie ce qui suit dans un module STANDARD :
Juste pour faire changement, j'ai utilisé des variables de type personnel!

VB:
Type MyValeur
A As Double
B As Double
C As Double
D As Double
E As Double
F As Double
G As Double
H As Double
End Type

Type MyProduct
A As Double
B As Double
C As Double
D As Double
E As Double
F As Double
G As Double
H As Double
End Type

Sub test()
Dim Arr(), Sh As Worksheet, Trouve As Range
Dim DerLig As Long, C As Range, Arr1()
Dim MyVal As MyValeur, MyProD As MyProduct

Arr = Array("Bon 3%", "BON CADEAU", "BON REDUCTION", "CB MANUELLE", _
    "ESPECES", "FACTURETTE MANUELLE", "OD", "BALANCE")
Arr1 = Array("A16:B16", "D16:E16", "G16:H16", "J16:K16", _
    "A21:B21", "D21:E21", "G21:H21", "J21:K21")
For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name <> "RECAP" Then
    DerLig = Sh.Range("F:F").Find(What:="*", _
                LookIn:=xlFormulas, _
                SearchOrder:=xlByRows, _
                SearchDirection:=xlPrevious).Row
    With Sh.Range("F4:F" & DerLig)
        For Each C In .Cells
            Select Case UCase(C.Value)
                Case Is = Arr(0)
                    MyVal.A = MyVal.A + C.Offset(, -1).Value
                    MyProD.A = MyProD.A + C.Offset(, -3).Value
                Case Is = Arr(1)
                    MyVal.B = MyVal.B + C.Offset(, -1).Value
                    MyProD.B = MyProD.B + C.Offset(, -3).Value
                Case Is = Arr(2)
                    MyVal.C = MyVal.C + C.Offset(, -1).Value
                    MyProD.C = MyProD.C + C.Offset(, -3).Value
                Case Is = Arr(3)
                    MyVal.D = MyVal.D + C.Offset(, -1).Value
                    MyProD.D = MyProD.D + C.Offset(, -3).Value
                Case Is = Arr(4)
                    MyVal.E = MyVal.E + C.Offset(, -1).Value
                    MyProD.E = MyProD.E + C.Offset(, -3).Value
                Case Is = Arr(5)
                    MyVal.F = MyVal.F + C.Offset(, -1).Value
                    MyProD.F = MyProD.F + C.Offset(, -3).Value
                Case Is = Arr(6)
                    MyVal.G = MyVal.G + C.Offset(, -1).Value
                    MyProD.G = MyProD.G + C.Offset(, -3).Value
                Case Is = Arr(7)
                    MyVal.H = MyVal.H + C.Offset(, -1).Value
                    MyProD.H = MyProD.H + C.Offset(, -3).Value
            End Select
        Next
    End With
    End If
Next
Application.EnableEvents = False
With Worksheets("RECAP")
    .Range(Arr1(0))(1, 2) = MyVal.A
    .Range(Arr1(0))(1) = MyProD.A
    .Range(Arr1(1))(1, 2) = MyVal.B
    .Range(Arr1(1))(1) = MyProD.B
    .Range(Arr1(2))(1, 2) = MyVal.C
    .Range(Arr1(2))(1) = MyProD.C
    .Range(Arr1(3))(1, 2) = MyVal.D
    .Range(Arr1(3))(1) = MyProD.D
    .Range(Arr1(4))(1, 2) = MyVal.E
    .Range(Arr1(4))(1) = MyProD.E
    .Range(Arr1(5))(1, 2) = MyVal.F
    .Range(Arr1(5))(1) = MyProD.F
    .Range(Arr1(6))(1, 2) = MyVal.G
    .Range(Arr1(6))(1) = MyProD.G
    .Range(Arr1(7))(1, 2) = MyVal.H
    .Range(Arr1(7))(1) = MyProD.H
End With
Application.EnableEvents = False
End Sub
 

Pièces jointes

  • Compilation.xlsm
    49.3 KB · Affichages: 58
  • Compilation.xlsm
    49.3 KB · Affichages: 54
  • Compilation.xlsm
    49.3 KB · Affichages: 54

Fave

XLDnaute Junior
Re : Recherche et extraction de résultats sur plusieurs feuilles

Pour commencer, merci d'apporter de l'intérêt à mon problème.

Ensuite, désolé mais je viens de me rendre compte que j'ai oublié de préciser quelque chose et, du coup, je t'ai faire perdre du temps.

Je souhaite créer un listing des valeurs trouvées dans les différents onglets "mois", en fonction du numéro de collaborateur que je saisirai en E5.

Ces valeurs devront se mettre en dessous les unes des autres, en fonction des critères remplis lors de la recherche, à partir de la cellule D26, dans l'exemple...

Encore désolé de ne pas avoir apporter ces précisions au départ...
 

MichD

XLDnaute Impliqué
Re : Recherche et extraction de résultats sur plusieurs feuilles

Comme ta question est différente de celle à laquelle j'ai répondu, je t'invite à ouvrir
un nouveau fil avec ta nouvelle question avec toute l'information nécessaire.

Pour moi, ce fil est terminé.

P.S. Avant de poser ta nouvelle question, regarde ce que peuvent faire les tableaux croisés dynamiques
pour toi. Ils sont très performants pour mettre en relief les données d'un tableau!
 

Discussions similaires

Réponses
5
Affichages
168
Réponses
10
Affichages
569

Statistiques des forums

Discussions
312 467
Messages
2 088 671
Membres
103 914
dernier inscrit
VAL965698