Problème Somme si

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

  • Votes
  • Date
  • Date décroissante
  1. 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"
    1. Contributeur
      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