problème avec fonction SOMME.SI ...

penelope

XLDnaute Nouveau
Bonjour le forum,
Je reviens avec mon petit programme de gestion des résultats de chevaux de courses, pour ceux qui m'ont déjà aidé ou vu ma discussion précédente...
Je rencontre actuellement un problème avec la fonction SOMME.SI. En effet, j'ai créé une feuille qui résume les données d'une autre feuille. J'ai plusieurs fonctions à enregistrer, suivant ce que je veux savoir. Mais dès la première, je n'y arrive pas!!:(
Pour la première, j'ai besoins que la fonction me calcule la somme des gains dans un intervale de date. (somme des gains entre le 01.01.10 et le 30.06.11). Donc j'ai opté pour la fonction SOMME.SI qui me semble la plus appropriée. Ma fonction ne semble pas contenir d'erreur à première vue, car il y a un résultat, mais le résultat est 0, donc il y a forcément une erreur!
J'ai essayé plusieurs formulations concernant le critère de date, mais le résultat reste toujours 0.
Dans une autre case, je dois insérer une fonction qui calcule la somme des gains acquis uniquement en 1ere place, dans le même intervalle de date que précédemment... Donc, ça fait 2 critères... Pour celle ci, faut-il utiliser une fonction matricielle?
Je mets mes feuilles en fichiers joint pour que ce soit plus clair...
Merci pour votre aide!
penelope
 

Pièces jointes

  • exemple.xls
    41 KB · Affichages: 113
  • exemple.xls
    41 KB · Affichages: 132
  • exemple.xls
    41 KB · Affichages: 126

Modeste

XLDnaute Barbatruc
Re : problème avec fonction SOMME.SI ...

Bonsoir,

Mais ça ne semble pas lui convenir (REF!)
Le message que tu obtiens indique un problème de référence ... à vue de nez ta feuille se nomme "détails blue etc..." qu'y a-t-il donc entre le mot "détails" et le nom du canasson?? une petite espace ... que tu ne dois donc pas oublier d'indiquer (entre "détails et le guillemet qui suit ... et ce aux trois endroits concernés dans ta formule)
D'autre part, cette seule correction ne fera que supprimer ce message d'erreur: il te manque aussi des parenthèses pour "isoler" chaque partie de formule que tu vas multiplier. Essaye donc:
Code:
=SOMMEPROD((INDIRECT("'détails "&A1&"'!$A$4:$A$100")>=DATE(ANNEE(AUJOURDHUI())-1;1;1))*(INDIRECT("'détails "&A1&"'!$A$4:$A$100")<=DATE(ANNEE(AUJOURDHUI())-1;6;30))*(INDIRECT("'détails "&A1&"'!$K$4:$K$100")))

à bientôt, sans doute :)
 

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

Bonjour Modeste et le forum...
Bon, après plusieurs heures de travail et quelques médicament anti-migraine, je croyais être enfin parvenue à mes fins...
MAIS!!! :mad:
Tout d'abord, en fichier joint, ma feuille "résumé" qui contient mes formules... Est-il possible d'y jeter un coup d'oeil pour vérifier???
Ensuite, j'ai créé 2 boutons avec macro sur ma feuille saisie, pour créer mes onglets pour chaque cheval, mais... ça a fonctionné 3 fois de suite (je devais recommencer pour paufiner ma page modèle) quand je pensais être arrivée à la perfection, mes maccros ne fonctionnent plus! :mad::mad: Alors que je n'ai pas modifier les macros mais les feuilles (cellules, couluers etc...)
Que se passe-t-il???
Je joint aussi ma feuille "saisie" du coup, mais voici les 2 macros:
Code:
Private Sub CommandButton2_Click()

Dim Cheval As Range
Dim A As Range

Application.ScreenUpdating = False
Set Cheval = Sheets("saisie").Range("A3:A23")
For Each A In Cheval
If A = "" Then Sheets("saisie").Select: Exit Sub
Sheets("détails").Copy after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = A
Next A
Application.ScreenUpdating = True

End Sub


Private Sub CommandButton3_Click()
Dim Cheval As Range
Dim A As Range

Application.ScreenUpdating = False
Set Cheval = Sheets("saisie").Range("A3:A23")
For Each A In Cheval
If A = "" Then Sheets("saisie").Select: Exit Sub
Sheets("résumé").Copy after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "résumé" & " " & A
Next A
Application.ScreenUpdating = True

End Sub
Merci de m'aider!!!
A+ je vais me changer les idées...:cool:
 

Pièces jointes

  • Saisie.xls
    38.5 KB · Affichages: 36
  • Classeur1.xls
    28 KB · Affichages: 39
  • Saisie.xls
    38.5 KB · Affichages: 37
  • Classeur1.xls
    28 KB · Affichages: 42
  • Saisie.xls
    38.5 KB · Affichages: 35
  • Classeur1.xls
    28 KB · Affichages: 46

Modeste

XLDnaute Barbatruc
Re : problème avec fonction SOMME.SI ...

Bonjour-bonsoir,

Si les médicaments ont fait leur effet ;) peux-tu jeter un oeil à ton instruction dans CommandButton2_Click:
Code:
Sheets("détails").Copy after:=Worksheets(Worksheets.Count)
... et, dans les fichiers que tu as transmis, vérifier si une feuille ne manquerait pas!? ... Pour ma part, je cherche désespérément une feuille nommée "détails" :confused:

Dans CommandButton3_Click, tu fais référence à deux feuilles: "Saisie" et "Résumé" ... qui sont dans 2 classeurs différents !? Ne faudrait-il pas faire référence aux classeurs en question, dans ton code?? D'autre part, tu pars du principe que les deux classeurs sont ouverts, avant de lancer ta macro?
 

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

Merci de prendre de mes nouvelles...:p
Bon je crois que je me suis mal exprimée, et surtout que j'ai pas mis exactement ce qu'il fallait. Donc je remets mon fichier joint complet cette fois-ci - sans bien sûr les feuilles censées être créées par mes boutons... (ils sont dans la feuille "saisie")
PS: j'ai aussi fas une petite formule en A1 dans les feuilles "détails" et "résumé", pour que mes formules entrées dans la feuille "résumé" fonctionnent bien par la suite - si on arrive un jour à dupliquer ces feuilles selon les macros!!!!!!!!!:rolleyes:
A+
juste un détail: mon fichier fait 141 Ko... comment arriver à le mettre?
Je crois que c'est bon, j'ai bidouillé un peu...
 

Pièces jointes

  • penelope exemple.zip
    43.7 KB · Affichages: 24
  • penelope exemple.zip
    43.7 KB · Affichages: 23
  • penelope exemple.zip
    43.7 KB · Affichages: 24
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : problème avec fonction SOMME.SI ...

re-bonsoir,

Chez moi (xl2000) les macros de ton dernier envoi fonctionnent sans souci!

Par contre, tu peux envoyer une boîte de tes médicaments par ici!!
surtout que j'ai pas mis exactement ce qu'il fallait
C'était le cas aussi pour les formules :eek:
- La macro associée au bouton "créer feuilles résumé" crée les feuilles, en les nommant "résumé " ... suivi du nom du cheval. La formule en A1 doit donc être modifiée, pour ne renvoyer que le nom du cheval! La même formule, dans les feuilles des différents chevaux est OK!
- Une fois cette modif réalisée, la suite des formules affiche toujours des messages d'erreurs ... Eh quoi, on renacle face aux obstacles, on regimbe plutôt que de franchir la rivière ;) Bref, entre les guillemets mal placés, les apostrophes absentes, les parenthèses manquantes, etc, j'ai préféré te remettre les formules (que je suppose correctes) dans une feuille jointe en annexe. Les messages d'erreurs devraient disparaître, dès que les feuilles "résumé" seront créées sur base de ce modèle.

Teste et dis-nous
 

Pièces jointes

  • penelope.xls
    30 KB · Affichages: 38

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

Merci pour la réponse, mais vu que j'ai plus de médicaments, (même pas pour toi!) je préfère dormir dessus et voir ça demain à tête reposée... Car à voir, y a encore quelques ruisseaux à franchir!
Je redonne des nouvelles... si je survis!
A+
 

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

Bonjour Modeste et le forum...
Après récupération, je me suis attaquée fraichement à mes problèmes.
Merci Modeste, ton exemple avec les formules m'a mise sur le bon chemin. Je n'ai pas tourné longtemps avant de comprendre où se trouvaient les erreurs... un petit espace par ci, par là, ainsi que corriger la maccro de création des feuilles et...;)
Hourra!!!!!!!!!!!! CA MARCHE!:D

Bien, sauf que...:eek:
Il y a encore du travail... et des questions...

Il y a mon idée d'archivage... et aussi une question que je me pose déjà pour l'avenir:
Et si je dois rajouter, ou supprimer un cheval??? :confused:
Rien qu'en imaginant le scenario, ma boîte de mouchoir pour sécher mes sanglots, ni la boîte de médicaments ne sont assez grand!:(
Parceque mes macros sont faites pour qu'il y ait la liste de chevaux actuelle, (A3:A23), la saisie des résultats en ligne 24 et que mes macro de création de feuille n'ont l'air de fonctionner qu'une fois... j'ai en effet remarqué que si je réutilise le bouton de création de feuille, il y a un message d'erreur me disant qu'il ne peut pas créer deux fois les mêmes feuilles!
Bref, en résumé, j'ai l'impression de faire un pas en avant et deux pas en arrière...
Je vais méditer.
A+
 

Modeste

XLDnaute Barbatruc
Re : problème avec fonction SOMME.SI ...

Bonjour,

j'ai en effet remarqué que si je réutilise le bouton de création de feuille, il y a un message d'erreur me disant qu'il ne peut pas créer deux fois les mêmes feuilles!
Ma foi, ce me semble assez sensé :rolleyes: Soit les 2 feuilles concernant un cheval existent ... et il est inutile de les re-créer, soit elles n'existent pas ... et la suite est tout aussi logique!? Je ne comprends pas ce qui te perturbe à ce point. Il suffirait, me semble-t-il, dans la macro de création, de vérifier parmi les feuilles existantes, si la feuille qu'on souhaite créer existe déjà.

Etablis la liste des choses qui restent à faire, dresse la liste des priorités et sérions les problèmes ;)
 

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

Bonsoir Modeste et le forum...

Modeste, merci pour ta philosophie! :rolleyes:
Il suffirait, me semble-t-il, dans la macro de création, de vérifier parmi les feuilles existantes, si la feuille qu'on souhaite créer existe déjà.
Mouais... ben je sais pas comment faire... il faudrait que je rajoute quelque chose dans ma macro pour que quand je clique sur le bouton, il voit en fonction des nom dans la liste les feuilles déjà créées ou pas et crée celles qui ne le sont pas (si je rajoute des nom de chevaux dans ma liste). Je pense supprimer moi-même manuellement les feuilles des chevaux qui ne sont plus là... ainsi que dans la liste bien sûr.
Ce problème arrive en tête des priorités.

Ensuite, mon idée d'archivage...
Donc voici ce que j'ai imaginé, mais qu'il faut encore encoder en VBA...
-créer un nouveau classeur "archive"
-dans ce classeur, chaque cheval a son onglet (via petite maccro qui prend les noms dans l'autre classeur, ça doit être faisable...)
-reprendre le classeur initial
-créer une procédure dans la feuille "détails". (puisque c'est celle-ci qui sert de modèle lors de la création des feuilles pour chaque cheva, donc la macro devrait se copier aussi...)l

Ce que j'ai imaginé pour la procédure:
Si l'année de la date dans la colonne A = l'année d'aujourd'hui -2
(ex: 12.08.2009 --> on est en 2011 aujourd'hui... 2011-2=2009)
Alors la ligne de donnée (A-K) est coupée, puis collée dans le classeur "archive", dans la feuille du cheval, à la suite des lignes déjà collées.
Enregistrement des modifications dans les deux classeurs...

Bien sûr, cette maccro ne devrait se mettre en route (toute seule!) que le 1er janvier de chaque nouvelle année...

Du coup, ça me fait encore penser à ma petite macro dans le nouveau classeur "archive"...: En fait, elle ressemblerait vachement à celle de recopiage des feuille dans le classeur initial... On pourrait même imaginer un bouton lui servant de support dans le classeur initial. Comme ça, quand je clique sur le bouton, la maccro crée les onglets dans le classeur "archive" en fonction de la liste des chevaux, mais bien sûr, crée seulement si ça n'a pas déjà été fait une fois précédant = seulement s'il y a de nouveau nom dans la liste!!!
Le top serait que cette macro range les onglets dans le classeur "archive" par ordre alphabétique... et non pas à la suite de ceux qui y sont déjà... (question de facilité pour les éventuelles recherches.)
Bon voilà...
Je vous laisse bosser et je reviens dans une semaine?????:cool:
Je plaisante, je suis pas comme ça:eek:
Mais moi j'ai toujours pleins d'idée, mais sais pas toujours comment faire...:confused:
Bon si vous m'aidez, c'est promis, je vous file des tuyaux pour faire vos choix dans le Quinté;)
A+
 

Modeste

XLDnaute Barbatruc
Re : problème avec fonction SOMME.SI ...

Bonsoir,

merci pour ta philosophie!
Ben quoi, ça dispense des médicaments contre la migraine ;)

Ci-dessous, une proposition pour le bouton "Créer feuilles détail" de la feuille "saisie"
VB:
Private Sub CommandButton2_Click() 'btn créer feuilles détails

Dim Cheval As Range
Dim A As Range
Dim existe As Boolean

Application.ScreenUpdating = False
Set Cheval = Sheets("saisie").Range("A3:A23")
For Each A In Cheval
    existe = False
    If A = "" Then
        Sheets("saisie").Select
        Exit Sub
    Else
        For Each sh In ThisWorkbook.Worksheets
            If sh.Name = A.Value Then existe = True: Exit For
        Next sh
    End If
    If Not existe Then
        Sheets("détails").Copy after:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = A
    End If
Next A
Application.ScreenUpdating = True

End Sub

Questions subsidiaires:
- tu ajoutes des chevaux à quelle fréquence? Si c'est souvent ou très souvent, il faudrait peut-être créer une macro événementielle, plutôt qu'utiliser des boutons?
- pourquoi un bouton pour créer les feuilles "détail" et un autre pour les feuilles "résumé"?
- quel est le but du bouton "enregistrer" que tu as créé?
 

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

Re,
Je réponds vite fait à tes questions avant de "tester" ton code...
Non, je ne rajoute pas des chevaux très souvent... (malheureusement pour la bonne marche de mon entreprise, mais c'est un autre sujet...) Donc, le bouton va.
J'ai créé 2 boutons (un pour "détail" et un pour "résumé", car comme il s'agissait de créer 2 feuilles distinctes pour chaque cheval à partir de 2 modèles, j'ai pensé que c'était LA solution... Maintenant, si tu me dis qu'on peut tout mettre sous le même bouton... Pourquoi pas?! Mais sinon, je fairai l'effort de cliquer sur 2 bouton au lieu d'un seul... (quoique ça augmente le risque d'erreur, càd, d'oublier de cliquer sur un des deux...!
Le bouton enregistrer sert à envoyer les résultats que je saisi au fur et à mesure et directement dans la feuille "détails" du cheval correspondant. (Je le fais après chaque journée de course, pour être à jour, car les futurs engagements des chevaux en course dépendent de leur résultats antérieurs - mais ça, c'est une infos qui ne t'apporte pas grand chose, à part augmenter tes connaissances générales dans le domaine des courses hippiques...!)
A+
 

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

Bonjour Modeste et le forum...
Le code semble fonctionné, MAIS...
J'ai l'impression qu'il n'accepte plus de créer des onglets supplémentaire, comme si j'étais arrivée à la limite pour ce classeur... Car j'ai testé le code en rajoutant un cheval et il a marché seulement pour 1 bouton, mais pas le deuxième... (j'ai mis le même code dans les deux boutons, en modifiant la feuille à copier et le nom attribué à l'onglet pour la feuille "détails".En résumé, il m'a créé la feuille "résumé" pour le nouveau cheval, mais pas la feuille "détails". Je n'ai aucun message d'erreur.
:confused::confused:
 

Modeste

XLDnaute Barbatruc
Re : problème avec fonction SOMME.SI ...

Bonjour penelope, le forum,

Sans le code, difficile de dire où ça coince ... Ceci dit, je serais étonné que tu aies atteint la limite du nombre de feuilles pour un classeur, avec les 20 chevaux encodés en A3:A23 (si je compte bien, ça fait 40 feuilles!?)
 

penelope

XLDnaute Nouveau
Re : problème avec fonction SOMME.SI ...

Re,
code pour bouton "créer feuille détail"
Code:
Private Sub CommandButton2_Click()

Dim Cheval As Range
Dim A As Range

Application.ScreenUpdating = False
Set Cheval = Sheets("saisie").Range("A4:A100")
For Each A In Cheval
If A = "" Then Sheets("saisie").Select: Exit Sub
Sheets("détails").Copy after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "détails" & " " & A
Next A
Application.ScreenUpdating = True

End Sub
code pour créer feuille résumé:
Code:
Private Sub CommandButton3_Click()
Dim Cheval As Range
Dim A As Range

Application.ScreenUpdating = False
Set Cheval = Sheets("saisie").Range("A4:A100")
For Each A In Cheval
If A = "" Then Sheets("saisie").Select: Exit Sub
Sheets("résumé").Copy after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = A
Next A
Application.ScreenUpdating = True

End Sub
 

Modeste

XLDnaute Barbatruc
Re : problème avec fonction SOMME.SI ...

re-bonjour,

Euh ... je ne vois pas bien le lien entre le code que tu viens de déposer et celui que j'ai proposé hier :confused: Non pas que je sois horriblement vexé, mais nous avions évoqué la nécessité de vérifier l'existence de certaines feuilles avant de les re-créer ... et je n'en trouve nulle trace!?

Par contre tu as "étendu" la plage de A4 à A100 ... ce qui veut dire que tu as modifié la présentation de la feuille???
Et puis, le système pour les noms des feuilles a changé également: juste le nom du cheval pour les feuilles "résumé" et "détails "+nom_du_cheval pour les autres!?
 

Discussions similaires

Réponses
8
Affichages
262

Statistiques des forums

Discussions
312 202
Messages
2 086 177
Membres
103 152
dernier inscrit
Karibu