FAQ MS-Access

FAQ MS-AccessConsultez toutes les FAQ
Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021
Sommaire→Fichiers et répertoires→Création/Suppression/Modifications- Comment copier un fichier d'un répertoire à un autre ?
- Comment copier un répertoire ?
- Comment créer un répertoire avec Access ?
- Comment créer et écrire dans un fichier texte ?
- Comment envoyer un fichier à la corbeille ?
- Comment préciser le séparateur dans la commande TransferText lors de l'importation d'un fichier Texte dans une table ?
- Comment lire / écrire dans un fichier .ini ?
- Comment renommer un fichier ou un répertoire ?
- Comment détruire un fichier ?
- Comment supprimer un répertoire ?
- Comment compresser et décompresser des fichiers ?
' Déclarer deux variables String pour les emplacements
Dim sEmplacementInitial As String, sEmplacementFinal As String
sEmplacementInitial="C:\MonrepertoireIni\Monfichier.xls"
sEmplacementFinal="D:\Monrepertoirefin\Monfichier.xls"
' Copie du fichier
FileCopy sEmplacementInitial,sEmplacementFinalCe code copie le contenu du répertoire c:\sources dans le répertoire c:\oldsources. Passer la valeur True en troisième paramètre de CopyFolder indique que les fichiers existants devront être écrasés.
Dim fso As FileSystemObject
Set fso = New FileSystemObject
fso.CopyFolder "c:\sources", "c:\oldsources", True
Set fso = NothingLien : FAQ VB
Intéressez-vous à la fonction MkDir().
Pour transférer le contenu d'une table ou d'une requête, il faut utiliser la méthode Docmd.TransferText
Sinon, pour écrire directement du texte :
open "Nom_Fichier" for Output as #1
Print #1, "Placer la donnée à insérer ici"
Close #1Lien : Comment travailler sur un fichier texte (création, lecture, écriture...) ?
Lien : Manipuler les fichiers textes
En utilisant les API Windows. Copiez ce code source dans un module standard :
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Long
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String
End Type
Private Const FO_DELETE As Long = &H3
Private Const FOF_ALLOWUNDO As Long = &H40
Private Declare Function SHFileOperation Lib "Shell32.dll" Alias "SHFileOperationA" _
(lpFileOp As SHFILEOPSTRUCT) As Long
Public Function DansCorbeille(fichier As String, handle As Long) As Boolean
Dim DelFileOp As SHFILEOPSTRUCT
Dim Result As Long
With DelFileOp
.hwnd = handle
.wFunc = FO_DELETE
.pFrom = fichier & vbNullChar & vbNullChar
.fFlags = FOF_ALLOWUNDO
End With
Result = SHFileOperation(DelFileOp)
DansCorbeille = (Result = 0) And (DelFileOp.fAnyOperationsAborted = 0)
End FunctionLa fonction DansCorbeille renvoie True si l'envoi du fichier dans la corbeille a été effectué. Ses paramètres sont le chemin complet du fichier et le handle de la fenêtre utilisée pour afficher les éventuelles boîtes de dialogue d'avertissement ou de demande de confirmation. Ce deuxième paramètre peut être une valeur nulle. Voici un exemple d'utilisation de cette fonction :
If DansCorbeille("C:\lettre.doc", Me.hwnd) Then
MsgBox "Le fichier a été déplacé dans la corbeille"
Else
MsgBox "Le fichier n'a pas pu être déplacé dans la corbeille"
End IfLien : FAQ VB
Lien : Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'exécutable associé ?
Lien : Que faire quand l'API ShellExecute ne fonctionne pas ?
Il faut vous créer un format d'importation.
Pour créer le format d'importation, il faut lancer l'assistant d'importation à travers le menu Fichier = > Données Externes = > Importer.
Après avoir choisi le fichier texte à importer, la fenêtre d'importation de fichier texte s'affiche où on trouve un bouton Avancé. Ce bouton permet d'accéder à une autre fenêtre qui permet de spécifier les paramètres d'importation notamment le délimiteur. Ensuite un bouton Enregistrer sous permet de sauvegarder le modèle ainsi créé.
Le modèle est enregistré dans une table système MSysIMEXSpecs de manière permanente dans la base pour pouvoir être utilisé dans la commande DoCmd.transfertText.
DoCmd.TransferText acImportDelim, "NomModel", "TableDestination", "FichierSource"Les fichiers .ini sont des fichiers texte utilisés pour enregistrer les options d'un programme. Ils sont composés de sections, qui contiennent des clés auxquelles on peut donner une valeur. Par exemple :
[Affichage]
State=Maximized
Left=50
Top=80
[Sauvegarde]
Confirm=True
Auto=FalsePour pouvoir respectivement lire et écrire dans un fichier .ini, voici les déclarations que vous devez ajouter dans votre module :
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, _
ByVal lpFileName As String) As LongCi-dessous la fonction qui écrira une valeur pour la clé et dans la section indiquée. Notez que vous n'avez pas besoin de créer le fichier s'il n'existe pas, car la fonction WritePrivateProfileString le fait pour vous.
Private Function EcritDansFichierIni(Section As String, Cle As String, _
Valeur As String, Fichier As String) As Long
EcritDansFichierIni = WritePrivateProfileString(Section, Cle, Valeur, Fichier)
End FunctionVoyons maintenant la fonction qui nous retournera la valeur d'une clé dans une section donnée. ValeurParDefaut contient la valeur qui devra nous être retournée si le fichier n'existe pas, ou si aucune valeur n'a été spécifiée pour la clé demandée :
Private Function LitDansFichierIni(Section As String, Cle As String, Fichier As String, _
Optional ValeurParDefaut As String = "") As String
Dim strReturn As String
strReturn = String(255, 0)
GetPrivateProfileString Section, Cle, ValeurParDefaut, strReturn, Len(strReturn), Fichier
LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)
End FunctionLe code nécessaire pour écrire la section [Affichage] du fichier donné en exemple sera :
EcritDansFichierIni "Affichage", "State", "Maximized", "c:\config.ini"
EcritDansFichierIni "Affichage", "Left", "50", "c:\config.ini"
EcritDansFichierIni "Affichage", "Top", "80", "c:\config.ini"Et nous pourrons lire la valeur donnée à la clef "Left" avec :
LeftParam = LitDansFichierIni("Affichage", "Left", "c:\config.ini", 100)Lien : FAQ VB
'Renomme "c:\temp\Erreurs.tmp" en "c:\temp\Erreurs.bak"
Name "c:\temp\Erreurs.tmp" As "c:\temp\Erreurs.bak"
' Renomme le répertoire "c:\temp" en "c:\var"
Name "c:\temp" As "c:\var"Lien : FAQ VB
Kill "c:\Erreurs.tmp"Attention : le fichier doit exister sinon une erreur d'exécution a lieu.
Lien : FAQ VB
Avec RmDir. Mais vous ne pouvez l'utiliser que pour supprimer des répertoires vides.
RmDir "c:\temp"Pour supprimer un répertoire qui contient des fichiers et/ou des répertoires, utilisez le FileSystemObject, qui est disponible seulement si vous avez inclus la bibliothèque Microsoft Scripting Runtime dans les références de votre projet.
Dim fso as FileSystemObject
Set fso = New FileSystemObject
fso.DeleteFolder "c:\temp", TrueLa valeur True passée au deuxième paramètre permet de supprimer le répertoire dans le cas où il aurait l'attribut lecture seule. Ce paramètre est optionnel, et a la valeur False par défaut.
Lien : FAQ VB
Lien : Utiliser fileSystemObject
VB n'inclut pas de composant permettant de compresser des fichiers. Il est possible de s'en sortir en exécutant, via la fonction Shell, un programme de type pkzip. Mais une solution plus pratique est d'utiliser une bibliothèque ou un active-x. Ici nous utiliserons la zlib, qui a l'avantage d'être gratuite, open source et de créer des zips standards. Le code à écrire en VB pour la manipuler étant assez volumineux, nous allons aussi importer les classes VB d'Andrew McMillan disponibles dans les fichiers zipclass.zip et ZipExtractionClass.zip (la zlib est aussi dans ces zips).
Après avoir téléchargé ces deux fichiers, importez les classes dans votre projet et copiez le fichier zlib.dll dans le répertoire de votre projet ou dans le répertoire système.
Voici comment créer un fichier zip :
Dim z As ZipClass
Set z = New ZipClass
z.AddFile "c:\test.doc"
z.AddFile "c:\test.jpg"
z.WriteZip "c:\test.zip", True
Set z = NothingEt comment faire une extraction :
Dim zip As ZipExtractionClass
Set zip = New ZipExtractionClass
If zip.OpenZip("C:\Test\Test.zip") Then
If zip.Extract("C:Test\Extract", True, True) Then
MsgBox "Extraction terminée.", vbInformation
End If
zip.CloseZip
End If
Set zip = NothingLien : FAQ VB
Lien : Comment zipper des fichiers en exécutant la fonction Shell ?





