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 -
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.
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:
- Macro pour cumuler des données variables
- Fuite données maif - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Trier des données excel - Guide
- Sauvegarde des données - Guide
- Supprimer les données de navigation - Guide
9 réponses
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.
si tu utilises la fonction somme(ta colonne), comme l'a dit grincheux, ta somme prendra uniquement les cellules avec des valeurs.
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.
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.
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
plus simple :
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.
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.
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
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
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.
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.
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 :
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
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.
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.