Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Dans MS excel 2003 je doit faire des cumulatifs pour des paies.A partir d'une cellule (B2 par exemple) j'entre un montant et j'aimerais que ce montant s'inscrive dans une autre cellule (D10 par exemple) et faire en sorte que lorsque je vais écrire un nouveau montant dans "B2" non seulement j'aimerais que celui de "D10" demeure mais qu'il s'additionne l'un a l'autre.
Donc si j'inscris le nombre 5 dans "B2", la premiere fois je vais retrouver dans "D10" la valeur 5 mais, lorsque je vais écrire un nouveau chiffre dans "B2" soit 3 alors la fois suivante je devrai retrouver 8 comme valeur dans "D10"
En F5 tu mets =F5+B5 et dans le menu Outils/Options onglet Calcul tu coches Itérations et tu mets le nombre maximal à 1.
Chaque saisie en B5 sera ainsi additionnée, mais les erreurs de saisie aussi.
Si le total mensuel est intéressant, je pense que l'historique, ou si tu veux le détail, l'est encore plus.
Je favoriserai plutôt 5 cellules avec 1ère semaine du mois (complète ou non), 2ème, 3ème, etc... Ainsi pas de risque d'erreur et une possibilité de contrôle.
Bonsoir et bienvenu,
Ton lien décrit simplement le moyen de faire une somme sur une plage et rien de plus
Le plus simple reste la macro événementielle
Dans le module de la feuille
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
If Not IsNumeric(Target) Then 'vérifie que la donnée saisie est valide
MsgBox "Données non numérique"
Range("B2") = ""
Exit Sub
End If
Range("D10") = Range("D10") + Range("B2")
End If
End Sub
je suis tres impressionné...il n'y a qu'un chose, dans l'exemple que vous avez transmis les sommes ne s'additionne pas si j'ajoute plusieur autre chiffre dans B5...et pardonnez mon ignorance mais le modul de la feuille1 c'est quoi?
Re, bonsoir à tous,
Je n'avais pas vu le lien vers le fichier, donc pour ma part j'en étais resté aux cellules B2 et D5 (alt+F11, pour aller dans l'éditeur VBE)
Je suis néanmoins absolument d'accord avec les propos de jeanpierre.
A+
kjin
Merci infiniment de votre aide, je n'ai aucune notion en macro alors les solution macro étaient plus difficile a comprendre pour moi mais j'ai essayer la solution de Jean-Pierre et ca fonctionne parfaitement.
Mille fois merci de votre aide précieuse...j'apprécie beaucoup
je suis tres impressionné...il n'y a qu'un chose, dans l'exemple que vous avez transmis les sommes ne s'additionne pas si j'ajoute plusieur autre chiffre dans B5...et pardonnez mon ignorance mais le modul de la feuille1 c'est quoi?
Dans le classeur que j'ai joint, effacez d'abord le contenu de B5 et F5.
Ensuite mettez 2 en B5. Validez. 2 est reporté en F5.
Mettez 3 en B5. Validez. 3 est ajouté au contenu de F5. On a alors 5 en F5.
Mettez 1 en B5. Validez. 1 est ajouté au contenu de F5. On a alors 6 en F5.
Et ainsi de suite.
N'est-ce pas ce que vous souhaitiez ?
Ne soyez pas impressionnée. Il n'y a pas de tour de passe-passe, aucune magie là-dedans. Essayons d'expliquer.
Le code
Code:
[COLOR="DarkSlateGray"]Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$5" Then [F5] = [F5] + [B5]
End Sub[/COLOR]
est le code d'une procédure évènementielle. Cela signifie qu'il s'exécute automatiquement lorsqu'un évènement particulier survient. Un évènement est une modification dans la feuille de calcul, modification provoquée par l'utilisateur ou par une procédure.
Ici, le code commence par Private Sub Worksheet_Change(ByVal Target As Range).
C'est le texte écrit en rouge qui indique l'évènement déclencheur : Worksheet_Change veut dire que le code sera exécuté lors d'un changement du contenu de la feuille. Par exemple lorsque vous validez un changement de valeur dans une cellule. _
Supposons d'abord que vous mettez 35 (ou n'importe quelle autre valeur) en A1 et que vous validez. Vous provoquez ainsi une modification de contenu et le déclenchement de la procédure. Alors la ligne
est exécutée. C'est une instruction conditionnelle reconnaissable à la présence de If ... Then ...
Elle signifie Si (If) ce qui suit est VRAI Alors (Then) faire ce qui est écrit à la suite...
Voyons la première partie : If Target.Address = "$B$5" Then ...
Vous trouvez ici Target qui est un nom de variable. On a déjà vu ce nom dans la ligne précédente :
Code:
[COLOR="DarkSlateGray"]Private Sub Worksheet_Change(ByVal [COLOR="Red"]Target[/COLOR] As Range)[/COLOR]
L'explication de cette écriture est simple : lorsque la procédure est déclenchée, elle désigne par Target l'objet qui l'a déclenchée. Dans notre exemple, la cellule A1 qu'on vient de valider. En jargon, on dit que la procédure a pris un argument.
Laissons de côté pour l'instant la signification de ByVal et de As Range et retenons seulement que dans la suite, Target désigne la cellule A1.
On comprend maintenant que Target.Address, qui signifie "adresse de Target" est "$A$1". On peut maintenant traduire If Target.Address = "$B$5" : Si "$A$1" est identique à "$B$5". Comme c'est FAUX la suite de la ligne n'est pas exécutée et l'exécution continue à la ligne suivante :
Code:
[COLOR="DarkSlateGray"]End Sub[/COLOR]
dont le sens est assez évident : fin de la procédure.
En résumé, en validant 35 dans la cellule A1, il ne se passe rien parce que la procédure ne traite que les modifications de la cellule B5. _
Imaginons maintenant que vous validez 40 dans la cellule B5. Vous provoquez le déclenchement de la procédure. Cette fois, Target désigne la cellule B5 et If Target.Address = "$B$5" s'interprète Si "$B$5" est identique à "$B$5" ce qui est VRAI. Alors la fin de la ligne est éxécutée : Then [F5] = [F5] + [B5], autrement dit, Alors la somme des valeurs des cellules F5 et B5 est placée dans la cellule F5. Puis la procédure se termine à la ligne suivante *.
En résumé, la valeur placée en B5 est ajoutée à la valeur de F5.
Voilà...
En espérant que ces quelques lignes vous seront utiles, bon courage !
ROGER2327 #1911 _
* Note pour les "spécialistes" :
Je sais que, dans le deuxième cas (validation d'une valeur nouvelle en B5), la procédure est exécutée deux fois puisqu'elle est déclenchée lors de la modification de F5. Mais s'agissant d'une première approche, je ne veux pas assommer définitivement melania en l'embrouillant d'entrée de jeux avec la récursivité des procédures évènementielles et la gestion de l'autorisation des événements. Les histoires de EnableEvents viendront plus tard...
(«Il faut apprendre à marcher avant de courir» disait avec bon sens un de mes regrettés maîtres...)
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.