Bonjour,
Il me semble que tu te compliques un peu...
Sub SommeLignesColonnes()
Dim x(2 To 6), y(2 To 5), i%, j%
With ActiveSheet
For i = 2 To 6
For j = 2 To 5
x(i) = x(i) + .Cells(i, j)
y(j) = y(j) + .Cells(i, j)
Next j
Next i
.Cells(2, 6).Resize(5).Value = WorksheetFunction.Transpose(x)
.Cells(7, 2).Resize(, 4).Value = y
For i = 2 To 6
x(i) = x(i) / 4
Next i
.Cells(2, 7).Resize(5).Value = WorksheetFunction.Transpose(x)
For i = 2 To 5
y(i) = y(i) / 5
Next i
.Cells(8, 2).Resize(, 4).Value = y
End With
End Sub
En recueillant les valeurs dans 2 tableaux, une double boucle sur l'ensemble des cellules te permet d'engranger tous les résultats.
Pour bien voir le mécanisme, j'ai dimensionné les tableaux : x sur les numéros de lignes (additions par lignes) et y sur les numéros de colonnes (additions par colonnes).
Comme les indices des tableaux et les numéros de lignes et colonnes se correspondent, pas de corrections d'indices à opérer.
Chaque valeur de la ligne i sera additionnée à x(i) et chaque valeur de la colonne j à y(j), soit la valeur de la cellule (i, j) est additionnée à x(i) d'une part et y(j) d'autre part.
En faisant varier i de 2 à 6 et j de 2 à 5, on balaie toutes les cellules du tableau.
A l'issue de cette première phase, on dispose de 2 tableaux contenant toutes les valeurs cherchées (les sommes), il n'y a plus qu'à les affecter...
Plutôt que faire des boucles d'affectation, tu peux procéder à une affectation directe sur une plage de même dimension. S'agissant de tableaux à une dimension, ils produiront des valeurs sur une même ligne, donc il conviendra de transposer x alors que y sera affectable sans transposition. Pour dimensionner les plages, on le fait à partir de la première cellule en utilisant Resize (qui s'avère toujours compatible avec cette méthode).
3e phase, on repasse chaque tableau dans une boucle pour opérer les divisions et on affecte à la colonne suivante ou la ligne au-dessous, de la même façon.
On aurait pu opérer avec des tableaux à 2 dimensions, les servir pour les sommes puis opérer les divisions et procéder à une affectation plus globale des résultat (ce sera un autre exercice !
NB- Il est souhaitable de réserver les modules de feuilles aux procédures évènementielles, les macros ordinaires ont leur place dans des modules standard.
Cordialement.