Somme de colonnes
grosnul
-
grosnul -
grosnul -
Bonjour,
le titre n'est certe pas très explicite, alors voilà:
sous excel , je souhaite faire une macro qui par exemple additionne des colones comme suit:
colonnes |A | B | C | D
je veux des colonnes qui donnent | A+B | A+C | A+D | B+C | B+D | C+D
en fait chaque colonne est additionnée une fois avec la suivante
évidemment, pour corser, le nombre de colonnes au départ peut varier...
Il y a une formule m athématique pour calculer le nombre de colonnes finales qui est
( (x*x)+x)/2 )-x
par exemple si au départ j'ai 5 colonnes, cela fera 10 colonnes à la fin.
en fait le nombre de colonnes finales c'est aussi (tjs pour 5) : 1+2+3+4=10
et pour 6 : 1+2+3+4+5=15
Merci de vos réponse . Une piste de réflexion serait déjà bienvenue...peut être la réponse existe t'elle quelque part ?
le titre n'est certe pas très explicite, alors voilà:
sous excel , je souhaite faire une macro qui par exemple additionne des colones comme suit:
colonnes |A | B | C | D
je veux des colonnes qui donnent | A+B | A+C | A+D | B+C | B+D | C+D
en fait chaque colonne est additionnée une fois avec la suivante
évidemment, pour corser, le nombre de colonnes au départ peut varier...
Il y a une formule m athématique pour calculer le nombre de colonnes finales qui est
( (x*x)+x)/2 )-x
par exemple si au départ j'ai 5 colonnes, cela fera 10 colonnes à la fin.
en fait le nombre de colonnes finales c'est aussi (tjs pour 5) : 1+2+3+4=10
et pour 6 : 1+2+3+4+5=15
Merci de vos réponse . Une piste de réflexion serait déjà bienvenue...peut être la réponse existe t'elle quelque part ?
6 réponses
-
Bonjour,
Juste au passage, le A+B est la somme des colonnes et ou vous placez le résultat ?
Et combien de lignes par colonnes (A,B,C,D) .... y a-t-il le même nombre de lignes par colonnes ?
Et aussi, qu'elle en est l'application qui utilise ces résultats ?
Salutations.
Le Pingou -
Bonjour,
Je ne sais pas si cela pourra t'aider :
http://www.cijoint.fr/cjlink.php?file=cj201109/cijZZ7BeDH.xls
Dans ton message, tu ne précises pas s'il y a une seule somme par colonne ou plusieurs lignes dans chaque colonne.
A+
pépé -
Bonjour,
Avec dans la ligne 1 le nom de colonne (A, B, ...etc.)
Cette procédure ou vous devez encore introduire la ligne de calcul à la place de la variable [res].Sub sommecol() nbcol = Cells(1, Rows(1).Cells.Count).End(xlToLeft).Column ReDim List_col(1 To nbcol) As Variant For i = 1 To nbcol List_col(i) = Cells(1, i) Next i pa = 1 ad = 2 For pa = 1 To nbcol - 1 For c = ad To nbcol res = List_col(pa) + List_col(c) MsgBox " la somme des colonne " & res Next c ad = ad + 1 Next pa End Sub -
Bonjour,
et merci pour vos réponses (certains travaillent très très tard !)
LE PINGOU et PEPE
Pour le fond, c'est ça !
pour la forme si possible ça ressemblerait à ceci:
on a sur la feuil1, par exemple
| A | B | C | ...
| 10| 2 | 5 | ...
| 20| 4 | 10| ...
| 25| 6 | 15| ...
et sur la feuil2, on obtient le résultat :
| AB | AC | BC | ...
| 12 | 15 | 07 | ...
| 24 | 30 | 14 |
| 31 | 40 | 21 | ...
etc...
et voilà !
En tout cas, c'est merveilleux de simplicité, même si je ne comprends pas tout
Si (cerise sur le gateau) vous pouviez me montrer juste la logique des boucles
je ne comprends pas pourquoi une fois les A+... on passe à B sans repasser par A...
je crois que ça se joue entre "pa" et "ad", boucles imbriquées ?
Et donc encore merci !
PS : puis-je vous demander avec quel bouquin vous avez appris le VBA ? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
A la base 5 colonnes (A, B, C, D et E), dans une première boucle externe on prendra en compte les 4 premières colonnes (A, B ,C et D) et dans une boucle interne à la première sur les 4 dernières (B, C,D et E).
A la fin de la boucle interne les résultats (A-B, A-C, A-D et A-E9).
Début de la deuxième boucle externe avec la colonne (B) et pour la boucle interne on décale de 1colonne soit (C, D et E). Ce qui donne (B-C, B-D et B-E). Et ainsi de suite.
La variable (pa) est le compteur de la boucle externe, (c) celui de la boucle interne qui est incrémenté par l'index de passage (ad).
Vous devez encore réaliser le calcul souhaité au niveau de la ligne (res) et placer le résultat en feuille 2.
Note: pas de bouquin mais l'aide fournie avec le logiciel et de la recherche sur divers site plus beaucoup de curiosité avec des essaies pour voir ce qui se passe....!
Salutations.
Le Pingou -
Bonjour,
Essayez cette procédure pour voir ... !Sub sommecol() Dim sh2 As Worksheet Set sh2 = Sheets("Feuil2") nbcol = Cells(1, Rows(1).Cells.Count).End(xlToLeft).Column nbli = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row ReDim List_col(1 To nbcol) As Variant ReDim somcol(1 To nbli - 1) As Long For i = 1 To nbcol List_col(i) = Cells(1, i).Column Next i pa = 1: nc = 1 ad = 2 For pa = 1 To nbcol - 1 For c = ad To nbcol For s = 2 To nbli somcol(s - 1) = Cells(s, List_col(pa)) + Cells(s, List_col(c)) Next s With sh2 .Range(.Cells(1, nc), .Cells(nbli - 1, nc)) = Application.Transpose(somcol) nc = nc + 1 End With Next c ad = ad + 1 Next pa Set sh2 = Nothing End Sub