Formule "cellule / somme plage de donnée" par macro

bonjour à tous

Chaque semaine, je mets en forme un tableur à partir d'une base de données. Jusqu'à présent, j'ai réussi à automatiser la mise en forme de mon tableur grâce à l'enregistreur de macros.

Ma mise en forme comporte un nombre de colonnes fixes (22 colonnes) et X nombre de lignes car celui-ci varie en fonction de l'importance de la base de données que je traite (selon les semaines, il y a + ou - de références à traiter et donc + ou - de lignes...).

Je souhaite calculer la somme de la colonne N et que le résultat s'affiche dans la cellule située juste en-dessous le dernier chiffre de cette même colonne N. Pour cela, j'ai trouvé sur le net le code suivant d'un certain Boisgontier (merci à lui) :

Sub essai()
 [b65000].End(xlUp).Offset(1, 0) = "=SUM(b2:b" & [b65000].End(xlUp).Row & ")"
End Sub

Là où je bloque , c'est qu'en cellule O2, je souhaite faire l'opération suivante : cellule L2 / la somme de la colonne N =

Sachant que la cellule dans laquelle s'affiche la somme de la colonne N, change de n° de ligne chaque semaine, je ne sais pas comment faire comprendre à excel que la division de mon opération doit se faire avec la somme de la colonne N...(et non pas avec telle cellule en particulier).

Je cherche à intégrer la formule dans une macro de manière à ne pas devoir faire la manip copier/coller vers le bas toutes les semaines vu le nombre de lignes ... J’intégrerai la macro aux autres macros de mise en forme que j'ai réalisées jusqu'à alors

si vous avez une idée..merci!

43exemple.xlsm (26.54 Ko)

Bonjour,

Ton code :

Sub essai()
 [b65000].End(xlUp).Offset(1, 0) = "=SUM(b2:b" & [b65000].End(xlUp).Row & ")"
End Sub

n'est pas bon ! et ne devrait pas fonctionner !

Tu affectes un texte représentant une formule à une cellule, sous forme de texte !

Sub essai()
 [b65000].End(xlUp).Offset(1, 0).Formula = "=SUM(b2:b" & [b65000].End(xlUp).Row & ")"
End Sub

Voilà l'expression correcte pour insérer une formule.

Mais là tu l'insères en colonne B ! Pas en N !!

Pour insérer ton autre formule de calcul, tu fais de même :

[O2].Formula = "=L2/N" & [N65000].End(xlUp).Row

Cordialement.

bonjour MF

merci bcp pour tes explications

peut-on compléter ta formule en rajoutant une condition a excel? c'est à dire effectuer l'opération en colonne M Si Excel détecte un chiffre dans la colonne L.

Ainsi, cela me recopiera la formule sur toutes les cellules de ma colonne M jusqu'au dernier chiffre-1 tout en bas (car le dernier chiffre c'est mon total de la colonne M)

remarque je ne sais pas si ce serait mieux que de passer par le traditionnel copy/past

je pense à cela :

Sub recopier_vers_le_bas_ma_formule_de_N2()
Range("N2").AutoFill Range("N2:N" & Range("A65536").End(xlUp).Row)
End Sub

Bien sûr tu peux mettre une formule avec condition... mais je ne comprends pas ta recopie sur N, étant donné que tu fais la somme de cette colonne... ?

j'ai dû t'embrouiller en nommant les colonnes dsl (j'ai édité mon précédent message car je me suis trompé de colonne)

en fait, je calcul d'abord la somme de la colonne L, puis en colonne M, je calcule un taux:

  • L2 / somme de L
    L3 / somme de L
    L4 / somme de L

etc, jusque pour le dernier chiffre de la colonne L

mais ma macro comporte une erreur car pour chaque cellule de ma colonne M, j'ai un message #DIV/0! dès la cellule M3. Y a que M2 qui fonctionne

Sub Somme_ColonneL()

 [L65000].End(xlUp).Offset(1, 0).Formula = "=SUM(L2:L" & [L65000].End(xlUp).Row & ")"

End Sub

Sub M2_divisé_par_Somme_colonneL()

 [M2].Formula = "=(L2/100)/N" & [N65000].End(xlUp).Row

End Sub

Sub Recopie_vers_le_bas_la_formule_de_M2()

Range("M2").AutoFill Range("M2:M" & Range("L65536").End(xlUp).Row)

    Columns("M:M").Select
    Selection.Style = "Percent"
    Selection.NumberFormat = "0.00%"

End Sub
35exemple.xlsm (34.29 Ko)

Le /100 n'est pas à mettre, (ça s'affiche en % par format de cellule). La cellule de total doit être mise en réf. absolue pour recopie...

Mais j'ai un doute : en M2 tu calcule : L2/Total L ou L2 sur Total N ?


En rassemblant les morceaux !

Sub Calculs()
    'Somme colonne L
    [L65536].End(xlUp).Offset(1, 0).Formula = "=SUM(L2:L" & [L65536].End(xlUp).Row & ")"
    'Division L2/Total L
    [M2].Formula = "=L2/L$" & [L65536].End(xlUp).Row
    'Recopie vers le bas
    [M2].AutoFill Range("M2:M" & [L65536].End(xlUp).Row)
    Range("M2:M" & [L65536].End(xlUp).Row).NumberFormat = "0.00%"
End Sub

On divise sur le total de L, ici.

je me suis bien emmêlé les pinceaux! je calcule L2/Total L

merci pour ton aide MF

Ok !

Efface le total de L avant de réexécuter la macro (sinon tu vas ajouter une ligne à chaque fois qui cumulera le total...)

Rechercher des sujets similaires à "formule somme plage donnee macro"