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
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 :
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...
sélectionne au menu, Edition, Atteindre, bouton Cellules, cocher
Dernière cellule, OK
cette cellule fait telle parti de ton tableau ?
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...
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+
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...
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
" 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...
michdenis a écrit :
Bonne fin de journée,
Salutations!
"isabelle" <as.isab...@videotron.ca> a écrit dans le message de news:401C216D...@videotron.ca...
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...
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...
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...
il faut modifier
For i = 4 To L
par
For i = 3 To L
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...