Macro pour cumuler des données variables

Résolu
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   -  
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaite effectuer une macro pour cumuler les données d'une colonne et afficher le résultat dans une cellule (par exemple E5).

Les données de la colonne à cumuler ne sont pas fixes, par exemple aujorud'hui j'ai 5 lignes à additionner, demain 6, ensuite 7 et ainsi de suite.

Le but étant d'appliquer une macro qui me permet de faire la somme au fur et à mesure, j'aurais juste à appuyer sur un bouton tout les matins^^


Je ne sais pas comment l'écrire mais j'ai un scénario :

J'utiliserai une condition qui dit de faire la somme de toutes les cellules non vide de la colonne X.
Comme une nouvelle donnée viendrait s'ajouter tout les jours, je relancerai la procédure pour qu'elle rajouter la nouvelle données.

Petite précision, je débute en VBA, je commence à comprendre le fonctionnement, les scénarios que l'on peu faire, mais je ne sais pas encore écrire le code.

Merci d'avance.


A voir également:

9 réponses

.Grincheux. Messages postés 211 Date d'inscription   Statut Membre Dernière intervention   84
 
Bonjour,
As-tu réellement besoin d'une macro ? Pourquoi la formule SOMME( ) ne te suffit-elle pas ?
0
rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   28
 
Pourquoi faire simple quand on peut faire compliqué ? ;-)

si tu utilises la fonction somme(ta colonne), comme l'a dit grincheux, ta somme prendra uniquement les cellules avec des valeurs.
0
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   9
 
Car j'incrémente la colonne au fur et à mesure.
Jour J = j'ai 5 lignes de remplies
J+1 = Je rempli la 6e
J+2 = Peut etre 10 lignes de plus.

Je n'ai pas envie de modifier la formule tout les jours, avec 5 lignes c'est simple, mais dans quelques mois je serais à plusieurs milliers.
C'est pour ça que je souhaiterai écrire une macro me permettant de prendre en compte l'ajout de ligne automatiquement lorsque je lance la procédure.

Et comme j'essaye d'apprendre le vba, c'est une bonne occasion de faire manipuler quelque chose simple (encore compliquée pour moi).

PS : Le résultat cumulé ne se situe pas en base de la colonne concernée. Par exemple j'aimerai que le cumul de la colonne A s'affiche sur une cellule en F7.
0
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   9
 
J'ai peut être plus simple :

Quand je lance la procédure, elle effectue une boucle sur toutes les cellules non vides de la colonne A.
Ensuite, la procédure effectue la somme de ces cellules.

Le lendemain, je saisie de nouvelles données dans cette colonne, et lorsque je lance la procédure, elle refaire une boucle tout en faisant la somme des cellules non vides et donc devrait prendre en compte les nouvelles données.

Mais je n'ai aucune idée de l'écriture du code.
0

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

Posez votre question
Heikro Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   8
 
Salut,

plus simple :

Sub Comptage()
Dim I As Integer
I = Range("A1").End(xlDown).Row
cumul = 0
For k = 2 To I
 cumul = cumul + Cells(k, 1)
Next
Cells(1, 3).Value = cumul
End Sub


Cela cumulera les valeurs de la colonne A. Vu comment le code est écrit, faut que dans A1 il y ait le titre de la colonne par exemple, et les valeurs à partir de A2.
Le résultat sera affiché cellule C1.
Tu peux modifier le code si tu veux changer la colonne à prendre, et la cellule de résultat à sélectionner.
0
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   9
 
Merci :)

Est ce que tu pourrais mettre des commentaires sur les lignes de code pour que je puisse bien comprendre chaque partie.
Je te remercie
0
Heikro Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   8
 
Salut,

Sub Comptage()
Dim I As Integer
'Définition de I : compte le nombre de celules non vides d'une colonne à partir de A1 compris jusqu'à la dernière ligne non vide comprise
I = Range("A1").End(xlDown).Row
'Initialise ton cumul
cumul = 0
'Boucle qui va permettre d'additionner la valeur de la cellule active avec la somme des cellules précédentes
For k = 2 To I
cumul = cumul + Cells(k, 1)
Next
'Donne la valeur du cumul total à la cellule de la 1ère ligne et de la 3ème colonne (donc C1)
Cells(1, 3).Value = cumul
End Sub
0
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   9
 
cumul = cumul + Cells(k, 1)

La procédure indique une erreur à cette ligne (incompatibilité de type).
0
Heikro Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   8
 
Ca marche pour moi. A quoi ressemble ton tableau ?
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Ecam,
Pourquoi as tu recopié le code que t'as fourni gentiment et bénévolement Heikro dans le forum du site du zéro ???

C'est très sympa pour Heikro !
0
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   9
 
Comme je dois la finir pour aujourd'hui j'avais espéré avoir une réponse ce matin en la postant hier soir.
Je n'ai pas relu mon post mais j'ai du le citer normalement.
0
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   9
 
Après relecture non, j'ai modifé.
Autant pour moi :(
0
Heikro Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   8
 
Et comme le disaient .Grincheux. et rEVOLV3r, tu peux le faire avec la fonction SOMME sans utiliser de macro.
T'écris : =SOMME(A:A) dans la cellule où tu veux ton résultat. Ca fera la somme de toutes les valeurs de ta colonne A.
0
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   9
 
Mon tableau n'a rien de special, j'ai juste changé la cellule de resultat et la colonne de cumul.

Pour la formule je devrais la modifier au fur et à mesure que je vais remplir la colonne de cumuls.
Et cette macro est un bon exercice, même si je rame comme pas possible.
0
Heikro Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   8
 
La formule fait tout normalement.
Si tu choisis les valeurs dans la colonne C par exemple, en C1 tu marques "Résultats" (par exemple) et en C2 tu commences tes valeurs (donc 45 en C2, 6 en C3 etc....)
Dans la macro tu mets alors : I = Range("C1").End(xlDown).Row au lieu de A1, et tu mets cumul = cumul + Cells(k, 3) au lieu de Cells(k,1).
Si tu veux que le résultat soit cellule F3, tu mets Range("F3")=cumul.
Au final :

Sub Comptagetest()
Dim I As Integer
I = Range("C1").End(xlDown).Row
cumul = 0
For k = 2 To I
 cumul = cumul + Cells(k, 3)
Next
Range("F3") = cumul
End Sub
0
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   9
 
La colonne que je veux cumulée est la H sans prendre en comtpe l'en-tête, le cmul commence en H4.
Je souhaite afficher le résultat en J6 donc (6,10).

J'ai juste modifié ces 2 données.
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

avec somme() et decaler() tu dois pouvoir te passer de macro.
Mais sans fichier exemple...

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   9
 
J'ai trouvé :

Dans la ligne :

For k = 2 To I

K=2 veut dire démarrer le cumul à partir de la ligne 2 et moi je démarre en ligne 4 (en tête en ligne 3), j'ai modifié la valeur et ça fonctionne.

Merci beaucoup pour ton aide :)
0