Problème Somme si
Fitz_Chev
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
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
Merci pour vos réponses
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
A voir également:
- Problème Somme si
- Somme si couleur - Guide
- Formule somme excel colonne - Guide
- Somme en anglais excel - Guide
- Somme excel ne fonctionne pas ✓ - Forum Excel
- Problème somme excel 0 - Forum Excel
2 réponses
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"
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"
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
Michel
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