13 liens privés
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")
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)
.
Worksheets("Synthèse").Range("A1", Cells.SpecialCells(xlCellTypeLastCell)).EntireColumn.AutoFit
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é.
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
Lancer une macro excel via une tâche planifiée ... Utiliser un script vbs plutôt qu'un script bat.
Set AppExcel = CreateObject("Excel.Application")
With AppExcel
.Visible = True
Set Wb = .Workbooks.open("D:\Outils\Controle d'habilitations\Controle d'habilitations.xlsm")
.Run "controleLiens"
.Quit
end With