Somme de cellules dans 2 feuilles différentes
Résolu
Pompom974
Messages postés
20
Statut
Membre
-
Pompom974 Messages postés 20 Statut Membre -
Pompom974 Messages postés 20 Statut Membre -
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 :
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.
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:
- Somme de cellules dans 2 feuilles différentes
- Somme de plusieurs cellules excel - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Comment faire un livret avec des feuilles a4 - Guide
- Somme si couleur - Guide
- Fusionner 2 cellules excel - Guide
5 réponses
Salut,
Tu veux vraiment passer par du VBA ?
Parce qu'il me semble qu'avec SOMME.SI() ce serait diablement plus facile, non?
Tu veux vraiment passer par du VBA ?
Parce qu'il me semble qu'avec SOMME.SI() ce serait diablement plus facile, non?
Bonjour
Sans le fichier, difficile de te répondre
Un exemple à adapter + une solution sans macro
http://www.cjoint.com/c/EFti3pJUwbg
Cdlmnt
Sans le fichier, difficile de te répondre
Un exemple à adapter + une solution sans macro
http://www.cjoint.com/c/EFti3pJUwbg
Cdlmnt
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 !
Je vais essayer de comprendre comment tu as fait.
Merci !
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
Et la solution avec SOMMEPROD (sans macro), ça ne peut pas faire ?
Cdlmnt
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !!
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 !!
Est ce possible si les données sont dans une autre feuille ?
Merci!