Monsieur Excel
Pour tout savoir faire sur Excel !

22 septembre 2010

Une macro de totalisation (b)

Pour rendre notre macro de totalisation entièrement flexible, il faut créer des variables identifiant la première ligne et la première colonne du bloc, ainsi que le nombre de lignes et de colonnes. C’est ce que nous avons réalisé ci-dessous.

La clef de l’opération est la commande Selection.CurrentRegion.Select qui correspond au raccourci [Ctrl]-* grâce auquel l’ensemble du bloc autour de la cellule active est sélectionné d’un coup. Cela suppose bien entendu que, à l’appel de la macro, la cellule active soit l’une quelconque des cellules du bloc et que ce bloc soit séparé physiquement (par au moins une ligne et une colonne) de toute autre cellule de la feuille.

Remarque 1 – Si, pour des raisons esthétiques, on ne souhaite pas que le bloc reste sélectionné à la fin de la macro, il suffit d’ajouter à la fin la commande cells(lig_1,col_1).select

Remarque 2 – Telle quelle, cette macro crée automatiquement tous les totaux d’un bloc, quelles que soient sa position et ses dimensions. Vous pouvez mettre cette macro dans votre classeur de macros personnelles afin de la rendre toujours accessible…

1 Commentaire(s):

  • Si "la clef de l'opération" est effectivement Selection.CurrentRegion (pas besoin de "Select" si on travaille avec les objets), alors autant pousser la logique jusqu'au bout :
    Sub Totalisation_3()
    With Selection.CurrentRegion
    .Rows(.Rows.Count).Offset(1, 1).FormulaR1C1 = _
    "=SUM(R[-" & (.Rows.Count - 1) & "]C:R[-1]C)"
    .Columns(.Columns.Count).Offset(0, 1).FormulaR1C1 = _
    "=SUM(RC[-" & (.Columns.Count - 1) & "]:RC[-1])"
    Union(.Cells(1, 1).Offset(.Rows.Count, 0), .Cells(1, 1).Offset(0, .Columns.Count)).Value = "TOTAL"
    End With
    End Sub


    Du coup, le problème évoqué en "Remarque 1" n'existe plus...

    By Anonymous cduigou, sur 6:27 PM  

Enregistrer un commentaire

<< Accueil