Problème Somme si

Fitz_Chev -  
michel_m Messages postés 18903 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

  1. PlacageGranby Messages postés 402 Statut Membre 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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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