Somme de cellules dans 2 feuilles différentes

Résolu
Pompom974 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
Pompom974 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

5 réponses

Bruce Willix Messages postés 11966 Date d'inscription   Statut Contributeur Dernière intervention   2 594
 
Salut,

Tu veux vraiment passer par du VBA ?

Parce qu'il me semble qu'avec SOMME.SI() ce serait diablement plus facile, non?
0
Pompom974 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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!
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

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

Cdlmnt
0
Pompom974 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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 !
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
0
Pompom974 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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 ?
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
0
Pompom974 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup ! J'essaye ça tout de suite :)

Merci de ton aide !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pompom974 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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 !!
0