Recherche et extraction de résultats sur plusieurs feuilles

  • Initiateur de la discussion Initiateur de la discussion Fave
  • Date de début Date de début

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 !

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... 😛

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

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

Pièces jointes

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

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...
 
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!
 
- 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

Retour