Vous trouverez dans cette rubrique des exemples de programmes se rapportant aux traitement sur des fichiers Excel ou autres (txt, ini, log).
Ecrire dans un fichier de type texte (Date, heure) à l'ouverture ou la fermeture d'Excel.
Lire et incrémenter un fichier INI.
Lire les enregistrements dans un fichier texte.
Lister des fichiers texte et les ouvrir avec GetOpenFileName.
Lister tous les fichiers XLS dans une feuille de calcul.
Réaliser une copie du classeur actif sous un autre nom.
Récupérer le nom d'un fichier sélectionné par GetOpenFileName.
Ce programme utilise les événements WorkBook_Open et Workbook_BeforeClose pour inscrire des informations dans un fichier de type texte lors de l'ouverture et de la fermeture d'Excel. Dans l'exemple, le fichier texte se nomme activite.log
Private Sub Workbook_Open()
Private Sub Workbook_BeforeClose(Cancel As Boolean) Exemple de fichier généré
|
Ce programme permet d'incrémenter un fichier increm.ini et de récupérer la valeur contenue dans ce fichier. Arrivé à 1000, le compteur est réinitialisé à 1.
Structure du fichier increm.ini Ne pas oublier de copier les deux lignes qui suivent en tête de votre module.
Declare Function GetPrivateProfileStringA Lib "Kernel32" (ByVal lpAppName As _
Declare Function WritePrivateProfileStringA Lib "Kernel32" (ByVal lpAppName _
Sub IncrémenteIni() |
Ce programme lit les différents enregistrements dans un fichier texte et les inscrits dans une feuille de calcul.
Structure du fichier Listing.txt
Sub LireFichierTexte() |
GetOpenFileName: Affiche la boîte de dialogue standard Ouvrir et lit un nom de fichier tapé ou sélectionné par l'utilisateur sans réellement ouvrir les fichiers. Sub ChoixFichierTexteAOuvrir() ChDir "C:\" ChDir "c:\Excel" CeFichier =Application.GetOpenFilename("Text Files (*.txt), *.txt") If VarType(CeFichier) = vbBoolean Then Exit Sub Else Workbooks.OpenText Filename:=CeFichier, Origin:=xlWindows, _ StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, _ Space:=False, Other:=False, FieldInfo:=Array(1, 1) End If End Sub |
Ce programme permet de rechercher tous les fichiers Excel du répertoire Excel, de les placer dans un tableau et de copier ce tableau dans une feuille de calcul. Sub RechercheClasseursSurDisque() Dim Classeurs() As String, I As Long With Application.FileSearch .NewSearch .FileType = msoFileTypeExcelWorkbooks .LookIn = "C:\Excel\" .SearchSubFolders = True .Execute With .FoundFiles ReDim Classeurs(1 To .Count, 1 To 1) For I = 1 To .Count Classeurs(I, 1) = .Item(I) Next I Application.ScreenUpdating = False With Range("A1").Resize(.Count) .Value = Classeurs .Sort [A1] End With End With End With End Sub |
Ce programme enregistre le classeur actif sous un autre nom (une copie) sans pour autant modifier le nom du classeur actif. Sub SaveCopyAs() ActiveWorkbook.SaveCopyAs "C:\excel\Double.xls" End Sub |
Cas d'utilisation Par exemple si vous faites une lecture/écriture (via Open FileName For Input As #1) d'un fichier sélectionné par GetOpenFilename pour inscrire les enregistrements dans un nouveau classeur (via Workbooks.Add template:=xlWorksheet), vous n'avez à aucun moment réellement ouvert ce fichier mais vous voulez en connaître le nom pour le donner à votre classeur actif. Public NameSansExtension As String Sub SelectionFichier() Dim LongFilename As String LongFilename = Application.GetOpenFilename("Text Files (*.txt), *.txt") ShortFilename (LongFilename) MsgBox "Le nom sans extension du fichier est : " & NameSansExtension End Sub
Function ShortFilename(LongFilename As String) As String |