Somme de cellules dans 2 feuilles différentes

[Résolu/Fermé]
Signaler
Messages postés
20
Date d'inscription
lundi 15 juin 2015
Statut
Membre
Dernière intervention
9 août 2015
-
Messages postés
20
Date d'inscription
lundi 15 juin 2015
Statut
Membre
Dernière intervention
9 août 2015
-
Bonjour à tous !

Je suis toute nouvelle en VBA, et sur le forum...

Je suis face à une problèmatique que je n'arrive pas à résoudre malgré mes recherches.

Voici le contexte : J'ai deux feuilles de calcul dans un même classeur, appelons les Feuil1 et Feuil2.
Dans Feuil1, j'ai un tableau à deux colonnes, l'une qui donne les quantités de produits commandés, une autre qui donne la date à laquelle elles ont été livrées.
Dans ma Feuil2, j'ai un autre tableau dans lequel je dois rentrer la somme des produits qui ont été livrés entre deux dates.

Malheureusement, le code que j'ai fait à l'air de compiler, mais il ne renvoit aucune valeur dans la cellule demandée, et je n'arrive toujours pas à trouver mon erreur...

Voici le code :

Private Sub D1_PromiseDate_Click()
Dim NumLig As Integer

With Worksheets("LG Data")

Dim MaDate As Date
MaDate = Range("J" & NumLig).Value
Dim tempPromDate As Integer

tempPromDate = Range("J" & Rows.Count).End(xlUp).Row

For NumLig = 1 To tempPromDate

If MaDate >= DateSerial(Year(Date), Month(Date) - 6, Day(Date)) And MaDate <= DateSerial(Year(Date), Month(Date), Day(Date)) Then
Application.Worksheets("OTD LG").Range("C3").Formula = Application.WorksheetFunction.Sum(Range("E" & NumLig).Value)
End If

Next NumLig

For NumLig = 1 To tempPromDate

If MaDate >= DateSerial(Year(Date), Month(Date) - 7, Day(Date)) And MaDate <= DateSerial(Year(Date), Month(Date) - 1, Day(Date)) Then
If Application.Worksheets("OTD LG").Range("C4").Value = "" Then
Application.Worksheets("OTD LG").Range("C4").Formula = Application.WorksheetFunction.Sum(Range("E" & NumLig).Value)
End If
End If

Next NumLig

End With

End Sub


Si quelqu'un voit une erreur que je n'aurais pas remarqué dans mon code, ou pense que ce n'est pas comme ça qu'il faut faire, je suis preneuse :$

Je vous remercie de votre aide.

5 réponses

Messages postés
11910
Date d'inscription
mardi 24 mai 2011
Statut
Contributeur
Dernière intervention
12 juin 2018
2 550
Salut,

Tu veux vraiment passer par du VBA ?

Parce qu'il me semble qu'avec SOMME.SI() ce serait diablement plus facile, non?
Messages postés
20
Date d'inscription
lundi 15 juin 2015
Statut
Membre
Dernière intervention
9 août 2015

C'est l'idée que j'avais eu, car j'ai comme condition des dates... Et comme le fichier change toutes les semaines, il faut que Excel actualise tout à chaque fois :/ Je ne suis pas très douée en Excel/VBA, je n'ai donc pas pensé à utiliser des formules dans la cellule même

Est ce possible si les données sont dans une autre feuille ?

Merci!
Messages postés
10114
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
17 septembre 2021
2 204
Bonjour

Sans le fichier, difficile de te répondre
Un exemple à adapter + une solution sans macro
http://www.cjoint.com/c/EFti3pJUwbg

Cdlmnt
Messages postés
20
Date d'inscription
lundi 15 juin 2015
Statut
Membre
Dernière intervention
9 août 2015

Bonjour, je ne peux malheureusement pas envoyer le fichier, car c'est un fichier professionnel. Il est cependant assez similaire à ton exemple, à part que les données sont dans une feuille autre que celle dans laquelle je met le résultat du calcul.

Je vais essayer de comprendre comment tu as fait.

Merci !
Messages postés
10114
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
17 septembre 2021
2 204
Tu as les données correspondantes à ta configuration dans la liste des constantes en début du code, il te suffit de les adapter
Et la solution avec SOMMEPROD (sans macro), ça ne peut pas faire ?

Cdlmnt
Messages postés
20
Date d'inscription
lundi 15 juin 2015
Statut
Membre
Dernière intervention
9 août 2015

C'est un fichier qui va changer toutes les semaines... Du coup, je ne dois pas sélectionner de cellules dans les données, cela risque de fausser le résultat je pense, non ?
Messages postés
10114
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
17 septembre 2021
2 204
Pour la solution sans macro, tu peux utiliser des plages dynamiques
1. plages nommées
listedates=DECALER(Feuil1!$B$1;1;0;NB(Feuil1!$B:$B);1)
listeproduits=DECALER(Feuil1!$A$1;1;0;NB(Feuil1!$A:$A);1)
2. formule de calcul
puis J2=SOMMEPROD((listedates>=G2)*(listedates<=G3)*(listeproduits))
RQ. J2 peut se trouver dans une autre feuille (avec G2,G3 bien sûr)

Cdlmnt
Messages postés
20
Date d'inscription
lundi 15 juin 2015
Statut
Membre
Dernière intervention
9 août 2015

Merci beaucoup ! J'essaye ça tout de suite :)

Merci de ton aide !
Messages postés
20
Date d'inscription
lundi 15 juin 2015
Statut
Membre
Dernière intervention
9 août 2015

Bonjour !

Donc, j'ai mis du temps mais finalement ça fonctionne lorsque je fais ma macro sur un mois roulant(oui, j'ai fait une macro, j'ai besoin d'effacer le tableur excel à chaque fois et j'ai préféré faire un code du coup :$)

Merci beaucoup ccm81, tu as débloqué ce qui n'allait pas dans mon code !

Maintenant je vais tenter de corriger mon problème sur les 6 mois roulants... Merci de votre aide !!