VBA - recherche verticale avec cumule des données

Ludo_R

XLDnaute Nouveau
Bonsoir,

Je souhaite réalisé en VBA une recherche dans un tableau (feuille DPGF), la valeur cherchée se trouve sur la feuille 1 (cellule A1), et dans la cellule A2, je dois au final avoir le cumul de la colonne B (feuille DPGF) de toutes les lignes ayant pour référence (dans la colonne A) la valeur A1 (feuille 1)

Aah c'est pas clair.
Je vous joint le fichier alors :)

Merci pour votre aide, car la je suis sec et débutant (Novice --) et j'ai écris un morceau de code mais qui visiblement n’amène à rien.

Regarde la pièce jointe rechercheVcumulée.xlsm
 

frangy

XLDnaute Occasionnel
Re : VBA - recherche verticale avec cumule des données

Bonsoir,

Voici une solution avec la méthode Find.
Code:
Sub recherche_quantité()
Dim Plage As Range, C As Range
Dim firstAddress As String
Dim Cumul As Double
    With Worksheets("DPGF")
        Set Plage = .Range("A4:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
        Set C = Plage.Find(Worksheets("1").Range("A1"), LookIn:=xlValues)
        If Not C Is Nothing Then
        firstAddress = C.Address
        Do
            Cumul = Cumul + C.Offset(0, 1)
            Set C = Plage.FindNext(C)
        Loop While Not C Is Nothing And C.Address <> firstAddress
        Set C = Nothing
    End If
    End With
    Set Plage = Nothing
    Worksheets("1").Range("B1") = Cumul
End Sub

A+
 

Fred0o

XLDnaute Barbatruc
Re : VBA - recherche verticale avec cumule des données

Bonsoir à tous,

Ludo_R, une solution par formule :
Code:
=SOMME.SI(DPGF!$A$4:$A$10000;$A$1;DPGF!$B$4:$B$10000)

et une solution par macro :
VB:
Sub Cumul()
    Dim i As Integer, Cum As Double
    Cum = 0
    For i = 1 To Sheets("DPGF").Range("A65536").End(xlUp).Row
        If Cells(i, 1) = Sheets("1").Range("A1") Then Cum = Cum + Cells(i, 2)
    Next
    Sheets("1").Range("B1") = Cum
End Sub

Voir fichier en pièce jointe.

A+
 

Pièces jointes

  • Ludo_R_V1.xlsm
    24.4 KB · Affichages: 93
  • Ludo_R_V1.xlsm
    24.4 KB · Affichages: 97
  • Ludo_R_V1.xlsm
    24.4 KB · Affichages: 95

Ludo_R

XLDnaute Nouveau
Re : VBA - recherche verticale avec cumule des données

Juste une petite question.
Au final le fichier dans lequel j'aurais cette Macro (et bien d'autres) risque d'être très gros (plus de 200 feuilles, avec formules et macros), comment puis-je savoir quelle code sera plus rapide qu'un autre pour faire la même chose, le cas ci-dessus par exemple.

Pourriez-vous m'éclairer ?
Merci.
 

Ludo_R

XLDnaute Nouveau
Re : VBA - recherche verticale avec cumul des données

avec un peu de retard, je me replonge dans mon fichier.
Fred0o je te remercie pour ton aide, j'ai légèrement modifié ta proposition pour l'adapter à mon besoin.

Code:
Sub Cumul_qté()
    Dim cpt_lig As Integer
    Dim Cum_qté As Double
    Dim act_sht As Worksheet
    cpt_lig = 0
    Cum_qté = 0
    Set act_sht = ActiveSheet
    Range("art") = act_sht
    For cpt_lig = 1 To Sheets("DPGF").Range("A65536").End(xlUp).Row
        If Cells(cpt_lig, 1) = act_sht.Range("art") Then Cum_qté = Cum_qté + Cells(cpt_lig, 4)
    Next
    Sheets(act_sht).Range("qt") = Cum_qté
End Sub

J'ai changé les variables (c'est pas sorcié), j'en ai juste ajouté une act_sht (définie comme feuille), je lui donne le nom de la feuille dans laquelle je travail (car j'ai beaucoup de feuilles dans lesquelles je vais lancer cette macro).
et là je suis bloqué, car ça ne fonctionne pas. si je peux encore avoir un petit coup de main ;)
 

andrekn13

XLDnaute Occasionnel
Re : VBA - recherche verticale avec cumule des données

bonjour
J' ai essayer la macro en changeant sur la colonne 1 les chiffres en lettre et ça marche
Par contre, j' ai essayé de mettre des mots et en n'en choisissant qu'un dans A1 et évidemment en adaptant le code, mais je n'y parviens pas. le but étant de faire un cumul de plusieurs lignes suivant des mots clés répétitifs , étant donnée que dans chaque ligne il y a des désignations différentes mais contenant ces mots clés;
voilà, j' espere que c' est plus clair. Merci d' avance.
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 026
Membres
104 008
dernier inscrit
jojo1966