Quotidien Shaarli

Tous les liens d'un jour sur une page.

October 20, 2021

C’est quoi l’indice de protection IP ? · Couleur science
thumbnail
Note: Ajuster la largeur des colonnes d'une feuille de calcul en VBA
Worksheets("Synthèse").Range("A1", Cells.SpecialCells(xlCellTypeLastCell)).EntireColumn.AutoFit
Note: Ouvrir un fichier CSV en VBA
thumbnail
Workbooks.OpenText Repertoire & "\" & FichierCSV, xlWindows, 1, xlDelimited, , , , True, , , , , , , , , , True

Le 2nd True signifie que le séparateur utilisé est un point-virgule.

Alternative :

    Workbooks.Open Filename:=CheminFichierSource & NomFichierSource
    Range(Cells(1, 1), Cells.SpecialCells(xlCellTypeLastCell)).Copy
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, semicolon:=True
Note: Mesurer le temps d'exécution d'une macro VBA
    Dim DebutExecutionMacro As Date

    DebutExecutionMacro = Now
    MsgBox "L'onglet Synthèse du fichier " + NomFichierCible + " est (re)créé." + vbLf + vbLf + _
            "Temps d'exécution : " & Format(Now - DebutExecutionMacro, "hh:mm:ss")
Note: Bloquer le rafraichissement d'écran d'Excel en VBA

Ca permet d'accélérer le temps de traitement des macros, sans faire clignoter l'écran, ni avoir besoin d'interagir avec l'utilisateur pour confirmer manuellement les actions du code VBA (ex. : demande de confirmation pour la fermeture d'un classeur sans enregistrement ; demande de confirmation pour écraser un fichier à l'enregistrement ; demande confirmation pour supprimer des données ; etc.).

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Ne pas oublier de repasser les valeur à True en fin de traitement, sinon l'affichage restera figé.

Note: Contrôler l'existence d'un répertoire ou d'un fichier en VBA

Pour un répertoire /

    Dim RepertoireExiste As Boolean
    If Len(Dir(Repertoire, vbDirectory)) > 0 Then
        RepertoireExiste = True
    Else
        RepertoireExiste = False
        MsgBox "Le répertoire n'existe pas pour ce RUN." & vbLf & Repertoire, vbExclamation + vbOKOnly
        Exit Function
    End If

Ne pas oublier l'attribut vbDirectory. C'est grâce à lui que la fonction Dir() sait qu'on est sur un répertoire.

Pour un fichier :

    Dim FichierExiste As Boolean
    If Len(Dir(Repertoire & ModeleNomFichier)) > 0 Then
        FichierExiste = True
    End If

Alternatives, en utilisant la référence Microsoft Scripting Runtime sous Excel

    Dim FS As Scripting.FileSystemObject

    Set FS = New Scripting.FileSystemObject

    If Not FS.FolderExists(Repertoire) Then
        MsgBox "Le répertoire n'existe pas" + vbCrLf + Repertoire, vbCritical, "Répertoire inexistant"
        Exit Function
    End If

Pour un fichier, utiliser FS.FileExists(Repertoire + "\" + Fichier).