Parcourez rapidement une table

Une des frustrations lorsque l'on travaille sur une table avec de nombreuses colonnes, est de pouvoir rapidement se déplacer d'une colonne à une autre.

Voici un petit code qui va prendre deux minutes à installer et qui peut vous rendre de grands services.

Vous pouvez télécharger ici le fichier.

Voici la procédure en vidéo :

Procédure détailllée

  • Ouvrez le fichier excel (sauvegardé en .xlsm pour avoir les macros)
  • Ajoutez un userform
  • Ajouter une listbox
  • Dans la fenêtre propriété (touche F4), renommez l'userform (ufDeplacement) et la listbox (ListBoxColonnes)
  • Clic droit sur l'userform pour accéder au code
  • Collez le code ci-dessous :
Option Explicit

Private Sub ListBoxColonnes_Click()
    Application.Goto Cells(ActiveCell.Row, _
        ActiveSheet.ListObjects("Tableau1").HeaderRowRange.Column + _
        Me.ListBoxColonnes.ListIndex), True
End Sub

Private Sub UserForm_Initialize()
Me.ListBoxColonnes.List = _
    Application.WorksheetFunction.Transpose( _
        ActiveSheet.ListObjects("Tableau1").HeaderRowRange)
End Sub
  • Finalement, insérez un nouveau module et collez le code suivant pour lancer l'userform
Sub AfficherufDeplacement()
    ufDeplacement.Show
End Sub

Nouveau style de contour

Pour diversifier vos schémas, Excel a maintenant (au moins pour la béta que je teste) la possiiblité de changer les types de traits pour Croquis.

Si vous en avez marre des lignes droites bien faîtes, voici un outil qui pourra être utile pour faire des "croquis" ! Après, on sélectionne tout et on change le trait pour une ligne pleine 🙂

Voici comment y accéder, après avoir sélectionné votre forme :

Pour ne plus pleurer

Le problème de la corruption des fichiers

L'une des choses les plus horribles qui puissent arriver à vos fichiers excel, c'est de tout perdre suite à la corruption du fichier. C'est une situation assez rare - heureusement - mais qui peut quand même arriver... 2 étudiants sur 40 lors de mon dernier cours avec des fichiers assez complexes.

Pour limiter les dégâts, voici un code VBA qui va - lors de chaque fermeture du fichier - sauvegarder une version du fichier en incluant la date et l'heure.

Comme cela, si le fichier se corrompt, vous pourrez toujours repartir d'un dernier enregistrement non corrompu.

Procédure :

Enregistrez d'abord le fichier.

Dans VBE (ALT+F11), double-cliquez sur ThisWorkbook, puis coller ce code.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim fso As Object
    Set fso = VBA.CreateObject("Scripting.FileSystemObject")
    ThisWorkbook.Save
    fso.CopyFile ThisWorkbook.Path & "\" & ThisWorkbook.Name, ThisWorkbook.Path & "\" & Replace(Date, "/", "-") & "-" & "-" & Replace(Time, ":", "-") & "-" & ThisWorkbook.Name
End Sub

Beaucoup d'améliorations sont possibles, j'y reviendrai dans d'autres posts.

  • Vous pourriez garder uniquement les n fichiers les plus récents.
  • Vous pourriez changer le répertoire de sauvegarde.
  • Finalement, vous pourriez créer la copie à chaque sauvegarde grâce à l'événement Workbook_AfterSave.

PS : sur certains ordinateurs, ce code peut poser des problèmes en raison du Scripting.FileSystemObject. Si c'est le cas, il existe plusieurs raisons :

  • Vous êtes sur MAC. Il existe des alternatives, mais c'est un peu compliqué.
  • Il est possible qu'il y ait des protections si vous travaillez sur un serveur.
  • Il manque une référence au système de script (Dans VBE, Outils-Références, Microsoft Scripting Runtime). Le fichier se trouve en général ici : C:\WINDOWS\System32\Scrrun.dll. S'il n'est pas là, vous pouvez l'ajouter en choisissant Parcourir...