Problème Somme si

Fitz_Chev -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Membre Dernière intervention   26
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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