Sub ne fait pas le travail

Bonjour tous le monde,

Je cherche à faire la somme de temps en fonction de date dans un tableau. En l'occurrence, pour l'année 2018 par exemple.

Tous ce qui correspond à cette date, est sommé pour être envoyé dans une case. Malheureusement même en cherchant bien sur les cours cela ne donne strictement rien, ma case de total reste désespérément vide. Voici mon code (que j'ai bien mis dans un module) :

Public Sub Calcul2018()

Application.Volatile

Dim ligne As Long

Dim Somme_SE As Long

Worksheets("LOG").Activate

ligne = 347

Somme_SE = 0

While ligne <= 862

If Year(Cells(ligne, 3).Value) = 2018 Then Somme_SE = Somme_SE + Cells(ligne, 11).Value

ligne = ligne + 1

Wend

Worksheets("TOTAUX").Range("S6").Value = Somme_SE

End Sub

Merci pour l'aide

Ludovic

bonjouir

en admettant que ton tableau soit propre, un simple TCD tee donne les synthèses

autre possibilité SOMMEPROD pour extraire une somme unique selon des conditions

pour plus, joins un fichier de 3 colonnes et 5 lignes et le résultat attendu

amitiés

Bonjour,

qu'est-ce qui ne fonctionne pas ?

il faut lancer la macro manuellement (du reste, je ne comprends pas ce que vient faire ici application.volatile car ce n'est pas une fonction mais une sub)

sinon, je rejoins tout à fait ce que dit jmd que je salue au passage

3ppboyington.xlsm (28.04 Ko)

Salut,

Bonjour,

qu'est-ce qui ne fonctionne pas ?

il faut lancer la macro manuellement (du reste, je ne comprends pas ce que vient faire ici application.volatile car ce n'est pas une fonction mais une sub)

sinon, je rejoins tout à fait ce que dit jmd que je salue au passage

Je n'ai pas le même résultat avec :

=SOMMEPROD((LOG!K:K)*(ANNEE(LOG!C:C)=2018)*1)

Voici un exemple du tableau. J'aimerais en fonction de la date, additionner les temps de la colonne K par exemple, afin de faire une courbe d'évolution.

Merci à vous

3sample.xlsx (20.19 Ko)

Je n'ai pas le même résultat avec :

=SOMMEPROD((LOG!K:K)*(ANNEE(LOG!C:C)=2018)*1)

avec quelles données ? dans mon fichier elles sont aléatoires ....


@ppboyington :

un peu compliqué comme structure de données

=SOMME(SI(ESTNUM(Feuil1!C:C);(Feuil1!C:C>=A2)*(Feuil1!C:C<=FIN.MOIS(A2;0));0)*SI(ESTNUM(Feuil1!K:K);(Feuil1!K:K);0))

en matriciel

N'hésite pas la prochaine fois à poster d'emblée un fichier ...

2sample.xlsx (20.42 Ko)

Merci Steelson, Cela marche bien, c'est exactement ce que je veux faire et en plus je vais pouvoir faire ça par mois.

En revanche quand je modifie ta formule pour faire la somme sur une autre colonne, le résultat est toujours "0",

Alors que j'ai bien mis des données dans L:L, ou alors même si je recopie l'exact même formule, je trouve toujours "0"...

Merci pour l'aide

C'est une formule matricielle ... as-tu bien validé par Ctrl+Maj+Entrée près modification ?

Wow super merci pour l'astuce ! d'où les accolades dans la barre de formule !

MErci encore

Et une autre question, car je découvre également la formule FIN.MOIS.

On est d'accord si je veux la somme sur l'année, je peux écrire : FIN.MOIS("déc 2019", -12) ?

Ludovic

C'est un poil différent ...

D'abord, tu parlais de courbe d'évolution, j'ai donc pris le parti de faire le total par mois. Pour cela, j'ai mis la date du 1er de chaque mois en paramètre (même si je n'affiche que mai 2019 par exemple c'est bien le 01/05/2019 qui est enregistré dans la cellule). Il faut donc tester que la date de la colonne C est supérieure au 1er du mois mais inférieure au dernier du mois - d'où l'emploi de FIN.MOIS(________;0) -

Si tu veux la somme annuelle :

  • soit tu sommes les valeurs menseulles
  • soit tu reprends la formule en la simplifiant en ne mettant non plus une date mais seulement l'année en paramètre
=SOMME(SI(ESTNUM(Feuil1!C:C);(ANNEE(Feuil1!C:C)=A5);0)*SI(ESTNUM(Feuil1!K:K);(Feuil1!K:K);0))
0sample.xlsx (20.49 Ko)
Rechercher des sujets similaires à "sub fait pas travail"