Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA somme lignes et colonnes tableau taille variable

15 réponses
Avatar
Christophe Joly
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

5 réponses

1 2
Avatar
michdenis
Ok, Isabelle

Bonne fin de journée,


Salutations!



"isabelle" a écrit dans le message de news:
c'est ma faute Denis, j'ai induis Christophe en erreur,
isabelle


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" a écrit dans le message de news:
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" a écrit dans le message de
news:
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


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






Avatar
Christophe Joly
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" a écrit dans le message de
news:
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


isabelle


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" a écrit dans le message de
news:
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+
isabelle


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" a écrit dans le message de
news:
bonjour Christophe,

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

isabelle


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" a écrit dans le message
de






news:
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


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
















Avatar
Christophe Joly
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" a écrit dans le message de
news:
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


isabelle


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" a écrit dans le message de
news:
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+
isabelle


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" a écrit dans le message de
news:
bonjour Christophe,

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

isabelle


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" a écrit dans le message
de






news:
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


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
















Avatar
isabelle
re bonjour Christophe,

il faut modifier
For i = 4 To L
par
For i = 3 To L

isabelle


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" a écrit dans le message de
news:
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


isabelle


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" a écrit dans le message de
news:
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+
isabelle


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" a écrit dans le message de
news:
bonjour Christophe,

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

isabelle


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" a écrit dans le message
de






news:
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


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


















Avatar
Christophe Joly
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" a écrit dans le message de
news:
re bonjour Christophe,

il faut modifier
For i = 4 To L
par
For i = 3 To L

isabelle


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" a écrit dans le message de
news:
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


isabelle


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" a écrit dans le message de
news:
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+
isabelle


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" a écrit dans le message
de






news:
bonjour Christophe,

sélectionne au menu, Edition, Atteindre, bouton Cellules,
cocher







Dernière cellule, OK
cette cellule fait telle parti de ton tableau ?

isabelle


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" a écrit dans le
message








de
news:
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


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




















1 2