Problème Somme si

Fermé
Fitz_Chev - 22 sept. 2015 à 14:29
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 23 sept. 2015 à 07:51
Bonjour,

Je suis débutant en VBA donc veuillez excusez si mes questions vous paraissent idiotes.
J'ai un soucis dans un bout de ma macro dans laquelle je veut introduire une somme.si. J'ai en B1 un numéro de commercial que je change manuellement. Dans mon tableau (c'est un tableau recap des contrats de tous les commerciaux), en colonne S, j'ai le numéro du commercial et en colonne T, j'ai le volume des contrats en euros.
J'aimerais introduire une somme si en bas de ma colonne T (qui a un nombre de ligne variable) pour lequel lorsque mon numero de commercial de la colonne S est égal au numéro de commercial en B1, il me fasse la somme des volumes de contrat.

J'ai mis ça mais ça ne marche

Dim derlign As Long
derlign = Range("A65536").End(xlUp).Row
Cells(derlign + 1, 20) = Application.WorksheetFunction _
.SumIf(Range("S4:S" & derlign), "B1", Range("T4:T" & derlign))


Merci pour vos réponses

2 réponses

PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
22 sept. 2015 à 18:18
Bonjour Fitz_Chev,

Première remarque,
La variable derlign va trouver la dernière ligne de la colonne A.
Je ne sais pas si ton tableau a des données de la colonne A jusqu'a T, mais un
derlign = Range("T65536").End(xlUp).Row
Serait peut-être mieux.

Deuxième remarque.
Disons que tu as le contrat # 12345 dans la cellule B1.
Tu veux additionner les valeurs de la colonne T si la cellule correspondante en S est égale a 12345 et non pas "B1".
Donc
SumIf(Range("S4:S" & derlign), Range("B1").value, Range("T4:T" & derlign))

Cette modification compare avec la valeur de la cellule B1 au lieu de chercher le texte "B1"
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
Modifié par michel_m le 23/09/2015 à 08:16
Bonjour

En VBA , On peut se passer de formule car dans ce cas pourquoi utiliser VBA ?
tu écris dans la cellule ton somme.si et c'est gagné ! (toujours penser Excel avant de penser VBA)

Avec un tableau croisé dynamique, tu pourrais avoir un panorama complet des ventes des commerciaux de ta boutique
un exemple
http://www.cjoint.com/c/EIxgmECN0Hh

exemple de code VBA
Option Explicit
'-------
Sub ca_realisé()
Dim Coco As Long, Nbre As Integer, Cptr As Integer, Lig As Integer, Somme As Double

'fige l'écran: confort & rapidité
Application.ScreenUpdating = False
'commercial recherché
Coco = Range("B1")
'nombre de ventes par Coco
Nbre = Application.CountIf(Columns("S"), Coco)
'si nbre=0 ---> gestionnaire erreur
If Nbre = 0 Then GoTo Erreur
'recherche les lignes des ventes de coco et calcule le cumul des chiffres d'affaires (somme)
Lig = 1
For Cptr = 1 To Nbre
Lig = Columns("S").Find(what:=Coco, after:=Cells(Lig, "S"), lookat:=xlWhole).Row
Somme = Somme + Cells(Lig, "T")
Next
Range("B2") = Somme
Exit Sub

Erreur:
MsgBox Coco & "Aucune vente ou inconnu", vbCritical
End Sub


Michel
0