OVH Cloud OVH Cloud

Code VBA pour Somme automatique

10 réponses
Avatar
News pour elie
Bonjour, et encore moi,

Dans la macro utilisée, je copie d'un tableau existant 2 lignes comportant
somme d'une colonne que je colle sur le nouveau tableau. La somme du 1er
tableau s'exprime en "Somme (E1O:E19O). C'est cette formule qui est collée.
Cependant le nouveau tableau comporte maintenant moins de lignes et cette
formule entraîne une erreur référence de cellules non valides, car la
ligne(180 par ex.) est maintenant incluse dans la somme. Et ce résultat
étant repris en de nombreuses autres cellules, tout est faussé. Je voudrais
secondairement remplacer cette somme par le code "Somme-au-dessus" comme
affiché dans la barre des menus. Sur l'aide je n'ai rien trouvé.
Connaissez-vous le code à inclure dans la macro??
Question idiote.. puisque vous connaissez sûrement !! Merci de l'écrire
Amitiés

10 réponses

Avatar
Gaenonius
Trouvé sur le net (et légèrement adapté pour la colonne E de la feuille "Feuil1") :

Sub AddItUp() ' Tom Ogilvy
Dim rng As Range
Dim dblSum As Double

With Worksheets("Feuil1")
Set rng = Range(.Cells(1, "E"), _
.Cells(Rows.Count, "E").End(xlUp))
End With

dblSum = Application.Sum(rng.Resize(, 1))
rng.Offset(rng.Rows.Count + 1, 0) _
.Resize(1, 1).Value = dblSum
End Sub

--
Gaenonius

Bonjour, et encore moi,

Dans la macro utilisée, je copie d'un tableau existant 2 lignes comportant
somme d'une colonne que je colle sur le nouveau tableau. La somme du 1er
tableau s'exprime en "Somme (E1O:E19O). C'est cette formule qui est collée.
Cependant le nouveau tableau comporte maintenant moins de lignes et cette
formule entraîne une erreur référence de cellules non valides, car la
ligne(180 par ex.) est maintenant incluse dans la somme. Et ce résultat
étant repris en de nombreuses autres cellules, tout est faussé. Je voudrais
secondairement remplacer cette somme par le code "Somme-au-dessus" comme
affiché dans la barre des menus. Sur l'aide je n'ai rien trouvé.
Connaissez-vous le code à inclure dans la macro??
Question idiote.. puisque vous connaissez sûrement !! Merci de l'écrire
Amitiés




Avatar
News pour elie
Merci,
Je vais essayer, mais tant de lignes m'inquiètent un peu. cela va-t-il me
permettre d'avoir le total de la colonne au-dessus, là où j'obtiens
maintenant "erreur référence". J'essaies et vous réponds. Les semaines
précédentes, je n'avais pas cette erreur. Depuis, j'ai fait migrer ma
feuille...
"Gaenonius" a écrit dans le message de
news:
Trouvé sur le net (et légèrement adapté pour la colonne E de la feuille
"Feuil1") :


Sub AddItUp() ' Tom Ogilvy
Dim rng As Range
Dim dblSum As Double

With Worksheets("Feuil1")
Set rng = Range(.Cells(1, "E"), _
.Cells(Rows.Count, "E").End(xlUp))
End With

dblSum = Application.Sum(rng.Resize(, 1))
rng.Offset(rng.Rows.Count + 1, 0) _
.Resize(1, 1).Value = dblSum
End Sub

--
Gaenonius

Bonjour, et encore moi,

Dans la macro utilisée, je copie d'un tableau existant 2 lignes
comportant


somme d'une colonne que je colle sur le nouveau tableau. La somme du 1er
tableau s'exprime en "Somme (E1O:E19O). C'est cette formule qui est
collée.


Cependant le nouveau tableau comporte maintenant moins de lignes et
cette


formule entraîne une erreur référence de cellules non valides, car la
ligne(180 par ex.) est maintenant incluse dans la somme. Et ce résultat
étant repris en de nombreuses autres cellules, tout est faussé. Je
voudrais


secondairement remplacer cette somme par le code "Somme-au-dessus" comme
affiché dans la barre des menus. Sur l'aide je n'ai rien trouvé.
Connaissez-vous le code à inclure dans la macro??
Question idiote.. puisque vous connaissez sûrement !! Merci de l'écrire
Amitiés






Avatar
News pour elie
En complément,
il me semble qu'il doit bien y avoir un code pour la macro "Somme
automatique" que nous avons dans le menu???

"Gaenonius" a écrit dans le message de
news:
Trouvé sur le net (et légèrement adapté pour la colonne E de la feuille
"Feuil1") :


Sub AddItUp() ' Tom Ogilvy
Dim rng As Range
Dim dblSum As Double

With Worksheets("Feuil1")
Set rng = Range(.Cells(1, "E"), _
.Cells(Rows.Count, "E").End(xlUp))
End With

dblSum = Application.Sum(rng.Resize(, 1))
rng.Offset(rng.Rows.Count + 1, 0) _
.Resize(1, 1).Value = dblSum
End Sub

--
Gaenonius

Bonjour, et encore moi,

Dans la macro utilisée, je copie d'un tableau existant 2 lignes
comportant


somme d'une colonne que je colle sur le nouveau tableau. La somme du 1er
tableau s'exprime en "Somme (E1O:E19O). C'est cette formule qui est
collée.


Cependant le nouveau tableau comporte maintenant moins de lignes et
cette


formule entraîne une erreur référence de cellules non valides, car la
ligne(180 par ex.) est maintenant incluse dans la somme. Et ce résultat
étant repris en de nombreuses autres cellules, tout est faussé. Je
voudrais


secondairement remplacer cette somme par le code "Somme-au-dessus" comme
affiché dans la barre des menus. Sur l'aide je n'ai rien trouvé.
Connaissez-vous le code à inclure dans la macro??
Question idiote.. puisque vous connaissez sûrement !! Merci de l'écrire
Amitiés






Avatar
Daniel.M
Salut,

il me semble qu'il doit bien y avoir un code pour la macro "Somme
automatique" que nous avons dans le menu???


Non. Ce que fait ce menu est simplement de se placer à un endroit logique et d'y
inscrire une formule de sommation.

J'ai pas compris ton problème. Si ça peut t'aider, voici un exemple qui tire
profit des formules R1C1 et qui inscrit au bas des colonnes B à H (de la feuille
courante) une formule de sommation des nombres au-dessus (jusqu'à la ligne 4).

Je ne gère pas d'erreur ici, par exemple si la colonne ne contient pas de
données, etc.
Avise si tu as besoin de cela aussi.

Dim col As Range
For Each col In ActiveSheet.Range("B:H").Columns ' à adapter pour toi
col.Cells(65536).End(xlUp)(2).FormulaR1C1 = _
"=SUM(R4C:OFFSET(RC,-1,,,))"
Next col

Salutations,

Daniel M.

Avatar
News pour elie
Bonjour à tous,
Déjà au travail un lendemain de réveillon !?!?.
Pour répondre à Daniel, la solution que tu me donnes supposerait qu'il n'y a
rien en dessous de cette somme.
Or, c'est le total d'un premier tableau d'une feuille qui en contient 4, les
uns au-dessous des autres. C'est le collage effectué à partir d'un même
tableau antérieur, mais ayant moins de lignes qui génère cette erreur. La
formule recopiée englobe un nombre de lignes plus important y compris la
cellule où se trouve la somme.
A vos méninges et cordialement

"Daniel.M" a écrit dans le message de
news:%
Salut,

il me semble qu'il doit bien y avoir un code pour la macro "Somme
automatique" que nous avons dans le menu???


Non. Ce que fait ce menu est simplement de se placer à un endroit logique
et d'y

inscrire une formule de sommation.

J'ai pas compris ton problème. Si ça peut t'aider, voici un exemple qui
tire

profit des formules R1C1 et qui inscrit au bas des colonnes B à H (de la
feuille

courante) une formule de sommation des nombres au-dessus (jusqu'à la ligne
4).


Je ne gère pas d'erreur ici, par exemple si la colonne ne contient pas de
données, etc.
Avise si tu as besoin de cela aussi.

Dim col As Range
For Each col In ActiveSheet.Range("B:H").Columns ' à adapter pour toi
col.Cells(65536).End(xlUp)(2).FormulaR1C1 = _
"=SUM(R4C:OFFSET(RC,-1,,,))"
Next col

Salutations,

Daniel M.





Avatar
Gaenonius
Pour "simuler" le bouton Somme Automatique d'Excel ou le déclencher par macro,
j'ai trouvé ça, toujours sur le net (5 solutions différentes proposées) :

http://frederic.sigonneau.free.fr/code/Cellules/SommeAutomatique.txt

--
Gaenonius

En complément,
il me semble qu'il doit bien y avoir un code pour la macro "Somme
automatique" que nous avons dans le menu???

"Gaenonius" a écrit dans le message de
news:

Trouvé sur le net (et légèrement adapté pour la colonne E de la feuille


"Feuil1") :

Sub AddItUp() ' Tom Ogilvy
Dim rng As Range
Dim dblSum As Double

With Worksheets("Feuil1")
Set rng = Range(.Cells(1, "E"), _
.Cells(Rows.Count, "E").End(xlUp))
End With

dblSum = Application.Sum(rng.Resize(, 1))
rng.Offset(rng.Rows.Count + 1, 0) _
.Resize(1, 1).Value = dblSum
End Sub

--
Gaenonius


Bonjour, et encore moi,

Dans la macro utilisée, je copie d'un tableau existant 2 lignes



comportant

somme d'une colonne que je colle sur le nouveau tableau. La somme du 1er
tableau s'exprime en "Somme (E1O:E19O). C'est cette formule qui est



collée.

Cependant le nouveau tableau comporte maintenant moins de lignes et



cette

formule entraîne une erreur référence de cellules non valides, car la
ligne(180 par ex.) est maintenant incluse dans la somme. Et ce résultat
étant repris en de nombreuses autres cellules, tout est faussé. Je



voudrais

secondairement remplacer cette somme par le code "Somme-au-dessus" comme
affiché dans la barre des menus. Sur l'aide je n'ai rien trouvé.
Connaissez-vous le code à inclure dans la macro??
Question idiote.. puisque vous connaissez sûrement !! Merci de l'écrire
Amitiés











Avatar
Daniel.M
Bonjour,

Je savais que j'avais mal compris.

Ainsi donc, tu as plusieurs tableaux.
Au bas de chacun d'eux, tu veux avoir une formule :
1. que tu peux copier
2. qui va toujours te donner le total de cette colonne pour CE tableau.

Sur la bonne feuille, tu te places en B13 (c'est très IMPORTANT).
Tu te définis le nom LesNums (Ctrl-F3 ou Menu Insère/Nom/Définir)
LesNums
Référence à: =B$1:B12

Ensuite, place-toi à l'endroit où tu désires sommer une colonne (immédiatement
après les données, sans ligne libre) et invoque la macro suivante:

Sub InscritForm()
ActiveCell.FormulaR1C1 = "=SUM(R[-1]C:OFFSET(R1C,LOOKUP(2," & _
"1/(LesNums=""""),ROW(LesNums))-1,,,))"
End Sub

Tu auras la formule que tu peux maintenant copier (et à chaque fois, le total
fonctionnera).

Salutations,

Daniel M.
Avatar
News pour elie
Merci pour vos réponses.
Je viens de prendre connaissance de la réponse de Gaenonius et suis allé
voir. .;Et maintenant qu'est-ce que je fais de tout cela par rapport à ma
macro initiale. Ce n'est pas évident pour moi. Des réponses très basiques me
seraient utiles.
A vous lire

"Gaenonius" a écrit dans le message de
news:%
Pour "simuler" le bouton Somme Automatique d'Excel ou le déclencher par
macro,

j'ai trouvé ça, toujours sur le net (5 solutions différentes proposées) :

http://frederic.sigonneau.free.fr/code/Cellules/SommeAutomatique.txt

--
Gaenonius

En complément,
il me semble qu'il doit bien y avoir un code pour la macro "Somme
automatique" que nous avons dans le menu???

"Gaenonius" a écrit dans le message de
news:

Trouvé sur le net (et légèrement adapté pour la colonne E de la feuille


"Feuil1") :

Sub AddItUp() ' Tom Ogilvy
Dim rng As Range
Dim dblSum As Double

With Worksheets("Feuil1")
Set rng = Range(.Cells(1, "E"), _
.Cells(Rows.Count, "E").End(xlUp))
End With

dblSum = Application.Sum(rng.Resize(, 1))
rng.Offset(rng.Rows.Count + 1, 0) _
.Resize(1, 1).Value = dblSum
End Sub

--
Gaenonius


Bonjour, et encore moi,

Dans la macro utilisée, je copie d'un tableau existant 2 lignes



comportant

somme d'une colonne que je colle sur le nouveau tableau. La somme du
1er




tableau s'exprime en "Somme (E1O:E19O). C'est cette formule qui est



collée.

Cependant le nouveau tableau comporte maintenant moins de lignes et



cette

formule entraîne une erreur référence de cellules non valides, car la
ligne(180 par ex.) est maintenant incluse dans la somme. Et ce
résultat




étant repris en de nombreuses autres cellules, tout est faussé. Je



voudrais

secondairement remplacer cette somme par le code "Somme-au-dessus"
comme




affiché dans la barre des menus. Sur l'aide je n'ai rien trouvé.
Connaissez-vous le code à inclure dans la macro??
Question idiote.. puisque vous connaissez sûrement !! Merci de l'écrire
Amitiés













Avatar
News pour elie
Bonjour de nouveau,
Je croyais être malin avec ma nouvelle idée !! Il me suffisait d'aller sur
la cellule devant contenir la somme au-dessus avec Offset et écrire
" ActiveCell=Sum(("A-1"):("A10")) ".
Bien sur, ça ne marche pas du tout; et je pense que le mélange des
références relatives et absolues ne doit pas faire bon ménage. d'autant
qu'ayant mis cette ligne en commentaire, tout le reste de la macro ne
fonctionnait plus et j'ai du rajouter un offset inverse pour revenir sur la
cellule d'origine. J'attends maintenant de trouver la formule à mettre entre
les 2 Offset. Il parait que c'est à force de faire des bêtises qu'on en fait
un peu moins !!
Salut à tous
"News pour elie" a écrit dans le message de
news:cratkq$582$
Merci pour vos réponses.
Je viens de prendre connaissance de la réponse de Gaenonius et suis allé
voir. .;Et maintenant qu'est-ce que je fais de tout cela par rapport à ma
macro initiale. Ce n'est pas évident pour moi. Des réponses très basiques
me

seraient utiles.
A vous lire

"Gaenonius" a écrit dans le message de
news:%
Pour "simuler" le bouton Somme Automatique d'Excel ou le déclencher par
macro,

j'ai trouvé ça, toujours sur le net (5 solutions différentes proposées)
:



http://frederic.sigonneau.free.fr/code/Cellules/SommeAutomatique.txt

--
Gaenonius

En complément,
il me semble qu'il doit bien y avoir un code pour la macro "Somme
automatique" que nous avons dans le menu???

"Gaenonius" a écrit dans le message de
news:

Trouvé sur le net (et légèrement adapté pour la colonne E de la
feuille





"Feuil1") :

Sub AddItUp() ' Tom Ogilvy
Dim rng As Range
Dim dblSum As Double

With Worksheets("Feuil1")
Set rng = Range(.Cells(1, "E"), _
.Cells(Rows.Count, "E").End(xlUp))
End With

dblSum = Application.Sum(rng.Resize(, 1))
rng.Offset(rng.Rows.Count + 1, 0) _
.Resize(1, 1).Value = dblSum
End Sub

--
Gaenonius


Bonjour, et encore moi,

Dans la macro utilisée, je copie d'un tableau existant 2 lignes



comportant

somme d'une colonne que je colle sur le nouveau tableau. La somme du
1er




tableau s'exprime en "Somme (E1O:E19O). C'est cette formule qui est



collée.

Cependant le nouveau tableau comporte maintenant moins de lignes et



cette

formule entraîne une erreur référence de cellules non valides, car la
ligne(180 par ex.) est maintenant incluse dans la somme. Et ce
résultat




étant repris en de nombreuses autres cellules, tout est faussé. Je



voudrais

secondairement remplacer cette somme par le code "Somme-au-dessus"
comme




affiché dans la barre des menus. Sur l'aide je n'ai rien trouvé.
Connaissez-vous le code à inclure dans la macro??
Question idiote.. puisque vous connaissez sûrement !! Merci de
l'écrire





Amitiés

















Avatar
News pour elie
Supplément,
J'ai recopié et collé à la place voulue la 1ère formule trouvée sur le site
indiqué par Genonius
(http://frederic.sigonneau.free.fr/code/Cellules/SommeAutomatique.txt)
pourquoi le 1er ?? pour essayer..
En tout cas ça marche très bien. Comme j'avais réussi à me situer sur la
cellule du total, il m'a suffi de prendre la ligne avec FormulaR1C1=......

Il me reste encore 2 petites choses pour finir l'importation via Internet de
mes fichiers et leur incorporation dans mon classeur, mais ce sera pour une
autre fois si vous n'êtes fatigués par mes questions.
Merci à tous

"News pour elie" a écrit dans le message de
news:crb2h9$o0a$
Bonjour de nouveau,
Je croyais être malin avec ma nouvelle idée !! Il me suffisait d'aller sur
la cellule devant contenir la somme au-dessus avec Offset et écrire
" ActiveCell=Sum(("A-1"):("A10")) ".
Bien sur, ça ne marche pas du tout; et je pense que le mélange des
références relatives et absolues ne doit pas faire bon ménage. d'autant
qu'ayant mis cette ligne en commentaire, tout le reste de la macro ne
fonctionnait plus et j'ai du rajouter un offset inverse pour revenir sur
la

cellule d'origine. J'attends maintenant de trouver la formule à mettre
entre

les 2 Offset. Il parait que c'est à force de faire des bêtises qu'on en
fait

un peu moins !!
Salut à tous
"News pour elie" a écrit dans le message de
news:cratkq$582$
Merci pour vos réponses.
Je viens de prendre connaissance de la réponse de Gaenonius et suis allé
voir. .;Et maintenant qu'est-ce que je fais de tout cela par rapport à
ma


macro initiale. Ce n'est pas évident pour moi. Des réponses très
basiques


me
seraient utiles.
A vous lire

"Gaenonius" a écrit dans le message de
news:%
Pour "simuler" le bouton Somme Automatique d'Excel ou le déclencher
par



macro,
j'ai trouvé ça, toujours sur le net (5 solutions différentes
proposées)



:

http://frederic.sigonneau.free.fr/code/Cellules/SommeAutomatique.txt

--
Gaenonius

En complément,
il me semble qu'il doit bien y avoir un code pour la macro "Somme
automatique" que nous avons dans le menu???

"Gaenonius" a écrit dans le message de
news:

Trouvé sur le net (et légèrement adapté pour la colonne E de la
feuille





"Feuil1") :

Sub AddItUp() ' Tom Ogilvy
Dim rng As Range
Dim dblSum As Double

With Worksheets("Feuil1")
Set rng = Range(.Cells(1, "E"), _
.Cells(Rows.Count, "E").End(xlUp))
End With

dblSum = Application.Sum(rng.Resize(, 1))
rng.Offset(rng.Rows.Count + 1, 0) _
.Resize(1, 1).Value = dblSum
End Sub

--
Gaenonius


Bonjour, et encore moi,

Dans la macro utilisée, je copie d'un tableau existant 2 lignes



comportant

somme d'une colonne que je colle sur le nouveau tableau. La somme
du






1er
tableau s'exprime en "Somme (E1O:E19O). C'est cette formule qui est



collée.

Cependant le nouveau tableau comporte maintenant moins de lignes et



cette

formule entraîne une erreur référence de cellules non valides, car
la






ligne(180 par ex.) est maintenant incluse dans la somme. Et ce
résultat




étant repris en de nombreuses autres cellules, tout est faussé. Je



voudrais

secondairement remplacer cette somme par le code "Somme-au-dessus"
comme




affiché dans la barre des menus. Sur l'aide je n'ai rien trouvé.
Connaissez-vous le code à inclure dans la macro??
Question idiote.. puisque vous connaissez sûrement !! Merci de
l'écrire





Amitiés