FAQ MS-Access
FAQ MS-AccessConsultez toutes les FAQ
Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021
- 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,sEmplacementFinal
Ce 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 =
Nothing
Lien : 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 #1
Lien : 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
Function
La 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
If
Lien : 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=False
Pour 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
Long
Ci-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
Function
Voyons 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
Function
Le 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"
, True
La 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 =
Nothing
Et 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 =
Nothing
Lien : FAQ VB
Lien : Comment zipper des fichiers en exécutant la fonction Shell ?