Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA somme lignes et colonnes tableau taille variable

761 views
Skip to first unread message

Christophe Joly

unread,
Jan 31, 2004, 2:11:24 PM1/31/04
to
Bonsoir à tous:

Je cherche à ecrire une vba qui me permettrai de faire apparaitre la somme
des valeurs numériques de chaque ligne et de chaque colonne d'un tableau
dont le nombre de lignes et colonnes est variable. J'aimerais pouvoir le
faire sans avoir à indiquer le nombre de lignes et de colonnes.

La cellule la plus en haut à gauche est en A3.les cllules ne contiennent que
des 1 ou sont vides.

Par exemple si j'ai un tableau de 3 lignes et 2 colonnes, je devrais avoir
en B6 = SUM(B3:B5)
en C6 = SUM(C3:C5)
en D3 = SUM(B3:C3)
en D4 = SUM(B4:C4)
en D5 = SUM (B5:C5)
en D6 = SUM (B6:C6) ou = SUM (D3:D5)

Merci.

Christophe


isabelle

unread,
Jan 31, 2004, 2:43:40 PM1/31/04
to
bonjour Christophe,

s'il n'y a que ce tableau sur cette feuille, ces lignes devrait faire
l'affaire.

L = Cells.SpecialCells(xlCellTypeLastCell).Row
C = Cells.SpecialCells(xlCellTypeLastCell).Column
For i = 1 To C
Cells(L + 1, i).Formula = "=sum(" & Cells(3, i).Address & _
":" & Cells(L, i).Address & ")"
Next
For i = 3 To L
Cells(i, C + 1).Formula = "=sum(" & Cells(i, 1).Address & _
":" & Cells(i, C).Address & ")"
Next

isabelle

Christophe Joly a écrit :

Christophe Joly

unread,
Jan 31, 2004, 3:07:09 PM1/31/04
to
Merci Isabelle:

Meme si je ne comprends pas tout je suis sure que ta solution est presque la
bonne.Je dis presque car malheureusement quand je lance ta macro depuis ma
feuille, qui je te le confirme ne contient qu'un seul tableau, il se
passe........rien :-( ???

Christophe
"isabelle" <as.isab...@videotron.ca> a écrit dans le message de
news:401C056C...@videotron.ca...

isabelle

unread,
Jan 31, 2004, 3:22:00 PM1/31/04
to
bonjour Christophe,

sélectionne au menu, Edition, Atteindre, bouton Cellules, cocher
Dernière cellule, OK
cette cellule fait telle parti de ton tableau ?

Christophe Joly

unread,
Jan 31, 2004, 3:49:06 PM1/31/04
to
Isabelle:

Tu as (comme d'habitude) raison. La derniere cellule est en DV108 et par
consequent je n'avais pas vu tes formules. Ceci dit mon tableau est le
resultat d'un copier coller d'un tableau souvent plus grand que les
informations qu'il contient ce qui explique pourquoi DV108 est la derniere
cellule mais dans l'example que j'ai utilisé pour tester la macro mes
etiquettes de lignes sont en A3:A13 et mes etiquettes decolonnes sont en
B2:02 donc la derniere cellule devrait etre 013.

Comment faire pour que 013 (variable) soit reconnu comme la derniere cellule
et que tes formules soit par consequent en ligne 14 et non pas 109 et en
colonne P et non pas DV.

Merci.

Christophe


"isabelle" <as.isab...@videotron.ca> a écrit dans le message de

news:401C0E68...@videotron.ca...

isabelle

unread,
Jan 31, 2004, 4:03:53 PM1/31/04
to
re bonjour,

s'il n'y a pas de vide sur la ligne et la colonne des étiquettes, tu
pourrais modifier les variables L et C comme ça :
L = Range("A3:A" & Range("A65536").End(xlUp).Row)
C = Range("A3:IV" & Range("IV1").End(xlToLeft).Column)
a+

Christophe Joly

unread,
Jan 31, 2004, 4:17:34 PM1/31/04
to
Isabelle:

Désolé de d'importuner une fois de plus mais j'obtiens une erreur
d'execution 13 "Incompatibilité de Type" sur la ligne For i = 1 to C

La macro est la suivante:

Sub Isabelle()


L = Range("A3:A" & Range("A65536").End(xlUp).Row)
C = Range("A3:IV" & Range("IV1").End(xlToLeft).Column)

For i = 1 To C
Cells(L + 1, i).Formula = "=sum(" & Cells(3, i).Address & _
":" & Cells(L, i).Address & ")"
Next
For i = 3 To L
Cells(i, C + 1).Formula = "=sum(" & Cells(i, 1).Address & _
":" & Cells(i, C).Address & ")"
Next

End Sub

As-tu une idée, moi pas (sniff).

Merci.

Christophe


"isabelle" <as.isab...@videotron.ca> a écrit dans le message de

news:401C1839...@videotron.ca...

isabelle

unread,
Jan 31, 2004, 4:34:08 PM1/31/04
to
oup's désolé Christophe

voici la correction,

Sub Isabelle()
x = Range("IV3").End(xlToLeft).Column
L = Range("A65536").End(xlUp).Row
C = Range("IV3").End(xlToLeft).Column
For i = 2 To C


Cells(L + 1, i).Formula = "=sum(" & Cells(3, i).Address & _
":" & Cells(L, i).Address & ")"
Next

For i = 4 To L


Cells(i, C + 1).Formula = "=sum(" & Cells(i, 1).Address & _
":" & Cells(i, C).Address & ")"
Next
End Sub

michdenis

unread,
Jan 31, 2004, 4:32:07 PM1/31/04
to
Bonjour Christophe,

" C = Cells.SpecialCells(xlCellTypeLastCell).Column "

Je ne sais pas ce que tu veux faire, mais la variable "C" comme tu ne l'as pas déclaré , elle est du type "Variant".

Dans ton procédure, C devient un tableau (array) représentant ta plage de cellules.

Pour pouvoir utilisé C dans une boucle,

For i = 1 To Ubound(C,1) ' Lignes de ton tableau

OU

For i= 1 to Ubound(C,2) 'colonnes de ton tableau

Salutations!

"Christophe Joly" <cj...@bigfoot.com> a écrit dans le message de news:eA3kRXD6...@TK2MSFTNGP10.phx.gbl...

isabelle

unread,
Jan 31, 2004, 4:43:09 PM1/31/04
to
c'est ma faute Denis, j'ai induis Christophe en erreur,
isabelle

michdenis a écrit :

michdenis

unread,
Jan 31, 2004, 4:50:56 PM1/31/04
to
Ok, Isabelle

Bonne fin de journée,


Salutations!

"isabelle" <as.isab...@videotron.ca> a écrit dans le message de news:401C216D...@videotron.ca...

Christophe Joly

unread,
Jan 31, 2004, 4:50:40 PM1/31/04
to
Isabelle:

Merci. C'est presque ca mais il y a encore un probleme. Je vais essayer de
comprendre tout seul en etudiant ton code et si je n'y arrive pas (ce qui
sera vraiment le cas (sniff sniff) je te recontacterai.

Une nouvelle fois merci. A+

Christophe
"isabelle" <as.isab...@videotron.ca> a écrit dans le message de

news:401C1F50...@videotron.ca...

Christophe Joly

unread,
Jan 31, 2004, 5:22:36 PM1/31/04
to
Isabelle:

J'ai essayé de comprendre et comme je l'avais anticipé j'ai vite atteinds
mes limites:-(

Sur mon exemple précédent i.e.
Etiquettes des colonnes en A3:A13
Etiquettes des lignes en B2:O2

Les problemes sont les suivants:

Les formules sont copiées pour la colonne en D4:D13 au lieu de P3:P13 ou
P3:P14 si l'on veut tenir compte de la somme des sommes.
J'ai identifié le problème 5hip hip hip houra) pour le D4 au lieu de D3 (For
i = 3 To L au lieu de For i = 4 To L) mais cela ne règle pas le probleme
deD au lieu de P

Pour ce qui est des formules copiées en ligne le probleme est different
puisque les deux premieres sont bien positionnées mais ensuite ca s'arrete.
De maniere plus explicite les formules sont en B14:C14 au lieu de B14:O14 ou
B14:P14 si l'on veut tenir compte de la somme des sommes.

Merci pour ton aide.

Christophe
"isabelle" <as.isab...@videotron.ca> a écrit dans le message de

news:401C1F50...@videotron.ca...

Christophe Joly

unread,
Jan 31, 2004, 6:54:17 PM1/31/04
to
Isabelle:

Merci beaucoup. J'ai enfin trouvé. Mes étiquettes de colonnes etant sur la
ligne 2, il fallait que je remplave IV3 par IV2. Maintenant il me reste à
trouver une solution pour la somme des sommes. il faut vraissemblablement
mettre un +1 quelque part. Je vais chercher mais si tu as un tuyau n'h?0site
pas.

Encore tous mes remerciements pour ton aide très efficace.

Christophe
"isabelle" <as.isab...@videotron.ca> a écrit dans le message de

news:401C1F50...@videotron.ca...

isabelle

unread,
Feb 1, 2004, 10:05:28 AM2/1/04
to
re bonjour Christophe,

il faut modifier


For i = 4 To L

par


For i = 3 To L

isabelle

Christophe Joly

unread,
Feb 1, 2004, 10:14:17 AM2/1/04
to
Bonjour Isabelle:

En fait je voulais t'informer que je venais de trouver quand j'ai lu ton
message.

En fait j'ai remplacé For i = 2 To C par For i = 2 To C + 1
et en plus ca fonctionne.

Merci une nouvelle fois sans toi j'y serais encore et pour longtemps.

Christophe
"isabelle" <as.isab...@videotron.ca> a écrit dans le message de

news:401D15B8...@videotron.ca...

0 new messages