Le danger des mises en forme conditionnelles

formation-excel-mise-en-forme-conditionnelles 1Un truc important à savoir, notamment si votre fichier ralentit au fur et à mesure que vous ajoutez des informations.

Lorsque l'on fait un copier - Édition - Collage spécial en format d'une cellule contenant une mise en forme conditionnelle sur une cellule ayant déjà une mise en forme conditionnelle, il n'y a pas remplacement, mais SUPERPOSITION des conditions.

Je travaillais sur un fichier avec plusieurs centaines de cellules de mises en formes conditionnelles simples. Mon code collait les MFC à partir d'un modèle. Donc à chaque réactualisation, ca augmentait d'autant le nombre de MFC dans le fichier... d'où ralentissement et augmentation exponentielle du fichier.

Comme indiqué dans la copie d'écran, vous voyez des centaines de MFC qui sont inutiles 🙂

D'où l'insertion du code suivant pour supprimer les mises en formes conditionnelles avant collage en format :
Selection.FormatConditions.Delete

Si vous êtes certain de ce que vous faites, vous pouvez aussi réinitialiser toutes les MFC de la feuille:

Sub reinitialise_toutes_les_mfc()
If MsgBox("Ceci va réinitialiser toutes les mises en formes conditionnelles de la feuille. Voulez-vous continuer?", vbYesNo, "Attention") = vbYes Then
Cells.FormatConditions.Delete
End If
End Sub

A bientôt.

Gaëtan

La dernière feuille modifiée toujours en première position

Suite à des échanges fructueux avec un lecteur de mon site, voici une autre astuce en VBA assez sympathique.

L'objectif est de déplacer la feuille qui vient d'être modifiée pour l'avoir toujours en première position.

Le code de la procédure événementielle à ajouter à ThisWorkbook (voir vidéo) est le suivant :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> Worksheets(1).Name Then
Sh.Move Before:=Sheets(1)
End If
End Sub

Voici la procédure en vidéo

A bientôt.

Gaetan Mourmant

Un double-clic pour masquer/démasquer des lignes

Dans mon précédent post, j'expliquais comment grouper des cellules.

Je vous propose ici une solution alternative utilisant un double clic sur une cellule, donc une procédure événementielle.

L'avantage principal de cette solution est de pouvoir faire un double-clic directement dans la feuille et au dessus de la zone à grouper/dégrouper.
pratique si on veut faire une série d'explications à masquer ou afficher rapidement.

Vous pouvez trouver le fichier ici.

Le code se trouve attaché à la feuil1 : faire un clic droit sur l'onglet et choisir de visualiser le code.

Il faut aussi regarder le code se trouvant dans le module 1 pour la procédure masque.

Le code est largement commenté.

J'ai aussi ajouté une mise en forme conditionnelle qui permet de mettre la cellule en vert ou en rouge, si celle ci contient un + ou un -.

Ce fichier peut largement être amélioré, par exemple
- en spécifiant une plage entière à masquer plutot que le haut de la plage (ce qui permet de prendre en compte des ajouts de lignes dans la zone à masquer),
- en gérant plusieurs types de masquage : remplacement ou non du titre par +/-, autres types de mise en forme conditionnelles, etc...
- gestion du groupage de la même manière qu'Excel le fait.

Si vous avez d'autres idées, n'hésitez-pas à vous exprimer !

A bientot.

Gaetan