Conserver la somme lors de l’insertion de lignes au dessus et en dessous de la plage.

Bonjour à tous,

Cette astuce provient de Dominique, qui est aussi l'auteur de Quick Bill, un outil tout simple d'édition de factures.

xl-en-bref 1 1
En bref :

L'idée est d'utiliser la formule suivante : =SOMME(DECALER(B$1;1;0;LIGNES($B$1:$B$5)-2)) pour permettre l'ajout de lignes en dessous et au dessus de la plage.

xl-en-detail 1
Dans le détail :

1/ Si on décompose la formule, on part de la plage qui contient le titre du haut (B1) et la cellule du résultat (B5) et on calcule le nombre de lignes : LIGNES($B$1:$B$5).
2/ On enlève deux lignes LIGNES($B$1:$B$5)-2 pour la ligne de titre et la ligne contenant la formule SOMME
3/ On va ensuite utiliser la formule DECALER pour retourner la plage sur laquelle faire la somme : DECALER(B$1;1;0;LIGNES($B$1:$B$5)-2).
Cette formule se lit : définit une plage partant de B$1, décale cette cellule de 1 ligne vers le bas, de 0 colonne vers la droite, et définit la hauteur de la plage comme étant LIGNES($B$1:$B$5)-2. Cela renvoit donc la plage B2:B4.
4/ Il ne reste plus qu'à faire la SOMME.

FormuleDecaler 1

De fait, lors de l'ajout de nouvelles lignes, $B$1:$B$5 va automatiquement s'étendre et la SOMME va s'appliquer à l'ensemble de la plage.

Note : l'ajout de lignes juste au dessus de la formule SOMME va automatiquement redimensionner la plage de la somme, mais cela n'est pas le cas pour la plage du dessus.

Amusez-vous bien !

Gaetan

Fonction IsNumeric – Attention aux guillemets

Bonjour à tous,

xl-en-bref 1 1En bref : attention à la fonction VBA "IsNumeric", car cette fonction va retourner Vrai (True), même pour une chaîne de caractère comme "1".

Je suis en train de travailler sur des fonctions très spécifiques pour la prochaine formation VBA avancé sur les arrays !
Il va être très complet et super utile 🙂

Au passage, je suis tombé sur la fonction IsNumeric et une "limite" assez dangereuse (source : Cheap Pearson).

Ce code va ainsi retourner 12, au lieu de 3 !

Sub test_AttentionIsNumeric()
Dim V1 As Variant
Dim V2 As Variant
V1 = "1"
V2 = "2"
If IsNumeric(V1) = True Then
If IsNumeric(V2) = True Then
MsgBox V1 + V2
End If
End If
End Sub

Donc, il faut faire très attention à la fonction IsNumeric, car elle va retourner la valeur Vraie (True), même s'il s'agit d'une string (chaîne de caractères), et le '+' va se comporter comme un '&'.

[EDIT]: suite à un commentaire de Raphaël, vous pouvez faire une conversion des strings avant utilisation, en utilisant ces fonctions : CDbl ou CLng. Il existe d'autres fonctions de conversion pour d'autres cas de figure : CStr, CVar, CDate, etc.

A bientôt.

Gaëtan

Attention aux graphiques “courbe empilée”

Bonjour à tous,

Voici une erreur qui est classique, mais parfois difficile à repérer.

Lorsque vous créez un graphique en courbe, une manipulation un peu trop rapide peut vous amener à créer un graphique en courbe empilée. Ainsi, lorsque vous insérer un graphique, ces deux types de graphiques sont différents.

graphiques pas identiques

Le premier est celui que vous utilisez de manière assez classique, alors que le second correspond à des courbes empilées, et dont la lecture et l'interprétation est tout à fait différente.

Cordialement

Gaëtan Mourmant