Somme de plusieurs cellules avec recherchev VBA

Bonjour à tous,

Voici mon problème. J'ai une facture dans une feuille et j'ai reporter certaines données en fonction d'un critère dans plusieurs autre feuilles.

Ce que je souhaite c'est de faire la somme de plusieurs cellules de ma facture (onglet "Facture" de la colonne AO à DA), en fonction du n° d'expédition. Sachant que dans chaque onglet ce n'est pas dans l'ordre car j'ai fait une macro qui classe la facture dans différents onglet. (cf. fichier Excel joint)

Auriez-vous une idée.

Je pourrais faire rechercher la valeur de chaque cellule puis faire la somme, mais vu que j'ai une cinquantaine de cellule cela me paraît aberrant.

Bonjour,

Par formule en H2 de la feuille AFFRET à tirer vers le bas

=SOMMEPROD((Facture!$A$2:$A$57=AFFRET!$A2)*(Facture!$AO$2:$DA$57))

Je vais regarder pour une macro par bouton.

Bonjour FRD35,

je te remercie, mais effectivement il me faut absolument faire une macro, car tous les mois je vais faire injecter une nouvelle facture dans le fichier, qui n'auront jamais la même taille et utilisé par plusieurs personnes.

Penses-tu trouver une solution?

Pour l'instant je suis arrivé ici mais avec une petite erreur pour mon NbLg

Sub calcul()
Dim Nblg As Long

Nblg = Sheets("Facture").Range("A" & Rows.Count).End(xlUp).Row

    With Sheets("AFFRET").Range("H2:H" & Sheets("AFFRET").Range("A" & Rows.Count).End(xlUp).Row)
     [barrer].Formula = "=SUMPRODUCT((Facture!$A$2:$A$" & Nblg & "=$A2)*(Facture!$AO$2:$DA$ & Nblg))"[/barrer]
      .Value = .Value
    End With

End Sub

Voilà qui devrait convenir

Edit : rajout du .clearcontents et screenupdating = False

Sub calcul()
Dim NbLg As Long, NbLg2 As Long

NbLg = Sheets("Facture").Range("A" & Rows.Count).End(xlUp).Row
NbLg2 = Sheets("AFFRET").Range("A" & Rows.Count).End(xlUp).Row

ScreenUpdating = False

    With Sheets("AFFRET").Range("H2:H" & NbLg2)
      .ClearContents
      .Formula = "=SUMPRODUCT((Facture!$A$2:$A$" & NbLg & "=$A2)*(Facture!$AO$2:$DA$" & NbLg & "))"
      .Value = .Value
    End With

End Sub

Bonsoir FRED35,

Je te remercie pour ce code, il marche parfaitement.

Par contre, je ne l'avais pas spécifier je pensais pouvoir m'en sortir seul. En fait je souhaiterais faire la somme de cellules qui ne se suivent pas :

Somme(AO:BF;BH:BM;BO:DA)

Pourrais-tu m'éclairer car ça fait 2heures que je cherche.

Normalement ça doit coller mais ça devient barbare

Sub calcul()
Dim NbLg As Long, NbLg2 As Long

NbLg = Sheets("Facture").Range("A" & Rows.Count).End(xlUp).Row
NbLg2 = Sheets("AFFRET").Range("A" & Rows.Count).End(xlUp).Row

  ScreenUpdating = False

    With Sheets("AFFRET").Range("H2:H" & NbLg2)
      .ClearContents
      .Formula = "=SUMPRODUCT((Facture!$A$2:$A$" & NbLg & "=$A2)*(Facture!$AO$2:$BF$" & NbLg & "))+SUMPRODUCT((Facture!$A$2:$A$" & NbLg & "=$A2)*(Facture!$BH$2:$BM$" & NbLg & "))+SUMPRODUCT((Facture!$A$2:$A$" & NbLg & "=$A2)*(Facture!$BO$2:$DA$" & NbLg & "))"
      .Value = .Value
    End With

End Sub

En somme je suis partit de cette formule que j'ai adapté à la macro pour quelle compte le nombre de lignes.

=SOMMEPROD((Facture!$A$2:$A$57=$A2)*(Facture!$AO$2:$BF$57))+SOMMEPROD((Facture!$A$2:$A$57=$A2)*(Facture!$BH$2:$BM$57))+SOMMEPROD((Facture!$A$2:$A$57=$A2)*(Facture!$BO$2:$DA$57))

Les pro auront peut être une formule simplifiée ou un codage plus light mais là comme ça, il n'y a rien qui me vient en tête.

Rechercher des sujets similaires à "somme recherchev vba"