FAQ Excel
FAQ ExcelConsultez toutes les FAQ
Nombre d'auteurs : 46, nombre de questions : 845, dernière mise à jour : 30 mars 2022
- Comment activer une référence pour piloter une autre application ?
- Comment extraire l'historique des sites visités par l'explorateur FireFox ?
- Comment créer un fichier PDF en pilotant Acrobat Distiller ?
- Comment fermer une application ?
- Comment ramener une application déjà ouverte au premier plan ?
- Comment piloter OpenOffice depuis Excel ?
- Comment jouer un fichier audio ou musical depuis Excel ?
- Comment créer un fichier rar par macro ?
- 27.3.1. Piloter Access (10)
- 27.3.2. Piloter Word (7)
- 27.3.3. Piloter PowerPoint (6)
- 27.3.4. Les messageries (15)
- 27.3.5. Les pages html et Internet (9)
- 27.3.6. Piloter Publisher (1)
Pour activer une bibliothèque (référence), déplacez vous dans l'éditeur de macros (ALT+F11):
Menu Outils
Références
Cochez la ligne qui correspond à l'application que vous souhaitez piloter.
Cliquez sur le bouton OK pour Valider.
Vous avez désormais accès aux méthodes et propriétés VBA de l'application spécifiée.
Quelques exemples de bibliothèques (en fonction des applications installées sur votre poste):
Microsoft Word xx.x Object Library (xx.x dépend de la version installée sur le poste)
Microsoft ActiveX Data Object 2.x Library (modèle ADO)
Windows Media Player
Shockwave Flash
?etc?
Voici un exemple pour déclarer une variable qui utilise la bibliothèque Word :
Dim
wordApp As
Word.Application
Remarque: L'outil de saisie semi automatique (intellisense) permet d'afficher les méthodes et propriétés de la bibliothèque.
Vous n'avez pas besoin de réactiver la référence si vous utilisez le classeur sur un autre poste de travail. Quand plusieurs versions d'une librairie sont disponibles (exemple AD0 2.1, 2.5, 2.7 ...) et que vous devez utiliser le classeur sur plusieurs Postes possédant des configurations différentes, sélectionnez la version la plus ancienne commune pour assurer une compatibilité.
La configuration WindowsXP/Office97 peut provoquer des erreurs lors de la création d'objets. Le message qui
s'affiche est: "Erreur d'exécution -2147417851 (80010105)".
Dans ce cas, une solution consiste à remplacer l'instance Early Binding :
Dim
wordApp As
Word.Application
Dim
wordDoc As
Word.Document
Set
wordApp =
New
Word.Application
wordApp.Visible
=
True
Set
wordDoc =
wordApp.Documents.Add
par une instance Late Binding :
Dim
wordApp As
Object
Dim
wordDoc As
Object
Set
wordApp =
CreateObject
(
"Word.Application"
)
wordApp.Visible
=
True
Set
wordDoc =
wordApp.Documents.Add
Vous trouvez des informations complémentaires sur le site Microsoft
L'instance Late Binding permet principalement de gérer les problèmes de version lorque le fichier est utilisé sur des postes disposant de configurations différentes.
Remarque :
Il est possible d'ajouter une référence par macro :
'Ajoute la référence Outlook pour OfficeXP
Dim
xRef As
String
xRef =
"C:\Program Files\Microsoft Office\Office10\MSOUTL.OLB"
ThisWorkbook.VBProject.References.AddFromFile
xRef
L'archivage des visites depuis l'explorateur FireFox est nommé history.dat. Ce fichier est généralement dans le répertoire :
C:\Documents and Settings\nom_utilisateur\Application Data\Mozilla\Firefox\Profiles\11ndnaxb.default\history.dat
La procédure ci-dessous lit le contenu du fichier, extrait les url et les dates de dernière visite.
Sub
ExtraireURL_History_FireFox
(
)
Dim
CibleLigne As
String
Dim
Fichier As
String
, Resultat As
String
Dim
Valeur As
Double
Dim
Place As
Double
, Fin As
Double
, Debut As
Double
Dim
x As
Double
, y As
Double
Dim
i As
Integer
Fichier =
"C:\Documents and Settings\nom_utilisateur\...\Firefox\...\history.dat"
'Lit le contenu du fichier
Open Fichier For
Input As
#1
Valeur =
FileLen
(
Fichier)
CibleLigne =
Input
(
Valeur, 1
)
Close 1
Debut =
1
'Boucle sur les chaines commençant par http
Do
While
InStr
(
Debut, CibleLigne, "http"
) <>
0
Place =
InStr
(
Debut, CibleLigne, "http"
)
Fin =
InStr
(
Place, CibleLigne, ")"
)
Resultat =
Replace
(
Replace
(
Mid
(
CibleLigne, Place, Fin -
Place), _
vbCrLf
, ""
), "\"
, ""
)
If
InStr
(
1
, Resultat, "pagead2.googlesyndication.com"
) =
0
Then
i =
i +
1
'place les Url dans la Feuille
Worksheets
(
"Feuil1"
).Cells
(
i, 1
) =
Resultat
'Recherche les dates
x =
InStr
(
Fin, CibleLigne, "="
)
y =
InStr
(
x, CibleLigne, ")"
)
If
IsNumeric
(
Mid
(
CibleLigne, x +
1
, y -
x -
1
)) Then
_
Worksheets
(
"Feuil1"
).Cells
(
i, 2
) =
_
Timestamp_To_Date
(
Left
(
Mid
(
CibleLigne, x +
1
, y -
x -
1
), 10
), 1970
)
End
If
Debut =
Fin
Loop
Columns
(
"A:B"
).AutoFit
End
Sub
'Transforme Le TimeStamp UNIX en format Date local
'TimeStamp est un nombre de secondes écoulées depuis le 1er janvier 1970 (standard).
Function
Timestamp_To_Date
(
TimeStamp As
Double
, Annee As
Double
) As
Date
Dim
DebutAnnee As
Date
DebutAnnee =
CDate
(
"01/01/"
+
Str
(
Annee))
Timestamp_To_Date =
DateAdd
(
"s"
, TimeStamp, DebutAnnee)
End
Function
' sous VBE Menu Outils | Références
' Cocher Acrobat Distiller
Option
Explicit
Dim
sNomPortReseau As
String
Sub
Tst_Adobe_PDF_03
(
)
Dim
sNomFichierPS As
String
Dim
sNomFichierPDF As
String
Dim
sNomFichierLOG As
String
Dim
PDFDist As
PdfDistiller
Dim
PrinterDefault As
String
' Sur un PC "Personnel" : a priori choix libre du Nom
' et de l'emplacement du fichier de sortie, on est logué en
' Administrateur sur son PC
'
' Sur un PC "Entreprise" :
' Il faut être logué en Administrateur ou en
' Avoir les droits pour utiliser Distiller
' Les chemins PS PDF LOG devront être de la forme :
' "C:\Documents and Settings\UserName\.....\....."
' Si l'on a plusieurs imprimantes il faut :
' Sélectionner l'imprimante virtuelle Adobe PDF tout en conservant
' trace de l'imprimante utilisée par défaut
' Le N° de port réseau NeXY varie suivant le PC sur lequel la macro tourne
PrinterDefault =
Application.ActivePrinter
If
Imprimante_AdobePDF Then
Application.ActivePrinter
=
sNomPortReseau
Else
MsgBox
"Pas d'imprimante Adobe PDF sur NeXY "
, vbOKOnly
+
vbCritical
, "Achtung"
Exit
Sub
End
If
' Ici le cas d'un PC "Personnel"
sNomFichierPS =
ThisWorkbook.Path
&
"\"
&
"Essai_AdobbePDF.ps"
sNomFichierPDF =
ThisWorkbook.Path
&
"\"
&
"Essai_AdobbePDF.pdf"
sNomFichierLOG =
ThisWorkbook.Path
&
"\"
&
"Essai_AdobbePDF.log"
' Impression d'une zone nommée
ActiveSheet.Range
(
"Zone"
).PrintOut
Copies:=
1
, Preview:=
False
, _
ActivePrinter:=
sNomPortReseau , PrintToFile:=
True
, _
Collate:=
True
, PrToFilename:=
sNomFichierPS
Set
PDFDist =
New
PdfDistiller
PDFDist.FileToPDF
sNomFichierPS, sNomFichierPDF, ""
Set
PDFDist =
Nothing
Kill sNomFichierPS
Kill sNomFichierLOG
Application.ActivePrinter
=
PrinterDefault
End
Sub
Private
Function
Imprimante_AdobePDF
(
) As
Boolean
Dim
i As
Long
' 11 imprimantes réseau
Imprimante_AdobePDF =
False
For
i =
0
To
10
If
i <
10
Then
sNomPortReseau =
"Adobe PDF sur Ne0"
&
i &
":"
Else
sNomPortReseau =
"Adobe PDF sur Ne"
&
i &
":"
End
If
On
Error
Resume
Next
Application.ActivePrinter
=
sNomPortReseau
If
ActivePrinter =
sNomPortReseau Then
Imprimante_AdobePDF =
True
Exit
For
End
If
Next
i
End
Function
Dans une configuration d'Entreprise avec de multiples utilisateurs et les droits attenants, il peut être nécessaire de connaitre son nom de login (qui n'a rien à voir avec Application.UserName de VBA ).
'...
Dim
sUserName As
String
sUserName =
Environ
(
"USERNAME"
)
'...
Ou si l'on préfère connaître le chemin "C:\Documents and Settings\UserName" :
'...
Dim
sUserProfile As
String
sUserProfile =
Environ
(
"USERPROFILE"
)
'...
Dans ce cas, l'exemple ci-dessus deviendra :
Option
Explicit
Dim
sNomPortReseau As
String
Sub
Tst_Adobe_PDF
(
)
Dim
sNomFichierPS As
String
Dim
sNomFichierPDF As
String
Dim
sNomFichierLOG As
String
Dim
PDFDist As
PdfDistiller
Dim
PrinterDefault As
String
Dim
sUserProfile As
String
sUserProfile =
Environ
(
"USERPROFILE"
)
PrinterDefault =
Application.ActivePrinter
If
Imprimante_AdobePDF Then
Application.ActivePrinter
=
sNomPortReseau
Else
MsgBox
"Pas d'imprimante Adobe PDF sur NeXY "
, vbOKOnly
+
vbCritical
, "Achtung"
Exit
Sub
End
If
' Ici le cas d'un PC "Entreprise"
sNomFichierPS =
sUserProfile &
"\"
&
"Essai_AdobbePDF.ps"
sNomFichierPDF =
sUserProfile &
"\"
&
"Essai_AdobbePDF.pdf"
sNomFichierLOG =
sUserProfile &
"\"
&
"Essai_AdobbePDF.log"
ActiveSheet.Range
(
"Zone"
).PrintOut
Copies:=
1
, Preview:=
False
, _
ActivePrinter:=
sNomPortReseau , PrintToFile:=
True
, _
Collate:=
True
, PrToFilename:=
sNomFichierPS
Set
PDFDist =
New
PdfDistiller
PDFDist.FileToPDF
sNomFichierPS, sNomFichierPDF, ""
Set
PDFDist =
Nothing
Kill sNomFichierPS
Kill sNomFichierLOG
Application.ActivePrinter
=
PrinterDefault
End
Sub
Private
Function
Imprimante_AdobePDF
(
) As
Boolean
Dim
i As
Long
' 11 imprimantes réseau
Imprimante_AdobePDF =
False
For
i =
0
To
10
If
i <
10
Then
sNomPortReseau =
"Adobe PDF sur Ne0"
&
i &
":"
Else
sNomPortReseau =
"Adobe PDF sur Ne"
&
i &
":"
End
If
On
Error
Resume
Next
Application.ActivePrinter
=
sNomPortReseau
If
ActivePrinter =
sNomPortReseau Then
Imprimante_AdobePDF =
True
Exit
For
End
If
Next
i
End
Function
Impression de certaines Feuilles d'un classeur via un tableau dans un seul Pdf résultant :
Option
Explicit
Dim
sNomPortReseau As
String
Sub
Tst4
(
)
Dim
sNomFichierPS As
String
Dim
sNomFichierPDF As
String
Dim
sNomFichierLog As
String
Dim
PDFDist As
PdfDistiller, PrinterDefault As
String
Dim
i As
Long
, Cpt As
Long
Dim
Ar
(
) As
String
sNomFichierPS =
ThisWorkbook.Path
&
"\"
&
"Tableau.ps"
sNomFichierPDF =
ThisWorkbook.Path
&
"\"
&
"Tableau.pdf"
sNomFichierLog =
ThisWorkbook.Path
&
"\"
&
"Tableau.log"
Cpt =
0
For
i =
1
To
ThisWorkbook.Sheets.Count
If
Left
(
Sheets
(
i).Name
, 2
) =
"RF"
Or
Left
(
Sheets
(
i).Name
, 2
) =
"RC"
Then
ReDim
Preserve
Ar
(
Cpt)
Ar
(
Cpt) =
Sheets
(
i).Name
Cpt =
Cpt +
1
End
If
Next
i
If
Cpt =
0
Then
Exit
Sub
PrinterDefault =
Application.ActivePrinter
If
Imprimante_AdobePDF Then
Application.ActivePrinter
=
sNomPortReseau
Else
MsgBox
"Pas d'imprimante Adobe PDF sur NeXY "
, vbOKOnly
+
vbCritical
, "Achtung"
Exit
Sub
End
If
Application.ScreenUpdating
=
False
Sheets
(
Ar).PrintOut
copies:=
1
, Preview:=
False
, _
ActivePrinter:=
sNomPortReseau, PrintToFile:=
True
, _
PrToFileName:=
sNomFichierPS
Set
PDFDist =
New
PdfDistiller
PDFDist.FileToPDF
sNomFichierPS, sNomFichierPDF, ""
Set
PDFDist =
Nothing
Kill sNomFichierPS
Kill sNomFichierLog
Application.ScreenUpdating
=
True
Application.ActivePrinter
=
PrinterDefault
Sheets
(
"Feuil1"
).Select
End
Sub
Private
Function
Imprimante_AdobePDF
(
) As
Boolean
Dim
i As
Long
' 11 imprimantes réseau
Imprimante_AdobePDF =
False
For
i =
0
To
10
If
i <
10
Then
sNomPortReseau =
"Adobe PDF sur Ne0"
&
i &
":"
Else
sNomPortReseau =
"Adobe PDF sur Ne"
&
i &
":"
End
If
On
Error
Resume
Next
Application.ActivePrinter
=
sNomPortReseau
If
ActivePrinter =
sNomPortReseau Then
Imprimante_AdobePDF =
True
Exit
For
End
If
Next
i
End
Function
En Late Binding (sans référence à cocher) :
Option
Explicit
Dim
sNomPortReseau As
String
Sub
Tst_Adobe_PDF
(
)
Dim
sNomFichierPS As
String
Dim
sNomFichierPDF As
String
Dim
sNomFichierLOG As
String
Dim
PDFDist As
Object
Dim
PrinterDefault As
String
Dim
sUserProfile As
String
sUserProfile =
Environ
(
"USERPROFILE"
)
PrinterDefault =
Application.ActivePrinter
If
Imprimante_AdobePDF Then
Application.ActivePrinter
=
sNomPortReseau
Else
MsgBox
"Pas d'imprimante Adobe PDF sur NeXY "
, vbOKOnly
+
vbCritical
, "Achtung"
Exit
Sub
End
If
sNomFichierPS =
sUserProfile &
"\"
&
"LateBinding_AdobePDF.ps"
sNomFichierPDF =
sUserProfile &
"\"
&
"LateBinding_AdobePDF.pdf"
sNomFichierLOG =
sUserProfile &
"\"
&
"LateBinding_AdobePDF.log"
ActiveSheet.Range
(
"Zone"
).PrintOut
Copies:=
1
, Preview:=
False
, _
ActivePrinter:=
sNomPortReseau, PrintToFile:=
True
, _
Collate:=
True
, PrToFilename:=
sNomFichierPS
Set
PDFDist =
CreateObject
(
"PdfDistiller.PdfDistiller"
)
PDFDist.FileToPDF
sNomFichierPS, sNomFichierPDF, ""
Set
PDFDist =
Nothing
Kill sNomFichierPS
Kill sNomFichierLOG
Application.ActivePrinter
=
PrinterDefault
End
Sub
Private
Function
Imprimante_AdobePDF
(
) As
Boolean
Dim
i As
Long
Imprimante_AdobePDF =
False
For
i =
0
To
10
If
i <
10
Then
sNomPortReseau =
"Adobe PDF sur Ne0"
&
i &
":"
Else
sNomPortReseau =
"Adobe PDF sur Ne"
&
i &
":"
End
If
On
Error
Resume
Next
Application.ActivePrinter
=
sNomPortReseau
If
ActivePrinter =
sNomPortReseau Then
Imprimante_AdobePDF =
True
Exit
For
End
If
Next
i
End
Function
Cet exemple ferme tous les fichiers ouverts par le bloc notes ('notepad.exe').
Sub
FermerUneApplication
(
)
'Nécessite d'activer la référence "Microsoft WMI Scripting Library"
Dim
objProcess As
WbemScripting.SWbemObject
Dim
colProcessList As
WbemScripting.SWbemObjectSet
Dim
objWMIService As
WbemScripting.SWbemServices
Dim
strComputer As
String
strComputer =
"."
Set
objWMIService =
GetObject
(
"winmgmts:"
_
&
"{impersonationLevel=impersonate}!\\"
&
strComputer &
"\root\cimv2"
)
Set
colProcessList =
objWMIService.ExecQuery
_
(
"Select * from Win32_Process Where Name = 'notepad.exe'"
)
For
Each
objProcess In
colProcessList
objProcess.Terminate
Next
End
Sub
Cet exemple vérifie si la calculatrice est déjà ouverte, l'affiche au premier plan et sinon déclenche
l'ouverture de l'application.
La procédure ne doit pas être déclenchée depuis l'éditeur de macros.
Option
Explicit
Private
Declare
Function
BringWindowToTop Lib
"user32"
_
(
ByVal
Hwnd As
Long
) As
Long
Private
Declare
Function
FindWindow Lib
"user32"
Alias _
"FindWindowA"
(
ByVal
lpClassName As
String
, _
ByVal
lpWindowName As
String
) As
Long
Private
Declare
Function
ShowWindow Lib
"user32"
_
(
ByVal
Hwnd As
Long
, ByVal
nCmdShow As
Long
) As
Long
'Remarque importante :
'La procédure ne doit pas être déclenchée depuis l'éditeur de macros /!\
'
Sub
ApplicationPremierPlan
(
)
Dim
Hwnd As
Long
'Récupère le Handle d'une fenêtre (la calculatrice dans cet exemple).
'Le Handle est un nombre entier unique généré par Windows afin d'identifier les fenêtres.
'"Calculatrice" correspond au titre de la fenêtre.
Hwnd =
FindWindow
(
vbNullString
, "Calculatrice"
)
'Si la calculatrice est déjà ouverte
If
Hwnd >
0
Then
'Ramène la calculatrice au premier plan
BringWindowToTop Hwnd
'Affiche en mode "Normal"
ShowWindow Hwnd, 1
Else
'Sinon, ouvre la calculatrice
Shell "C:\WINDOWS\system32\calc.exe"
, vbNormalFocus
End
If
End
Sub
Il est possible de piloter l'application Open Office par VBA, grâce au pont (bridge) UNO-Automation.
Vous allez tout d'abord créer une référence à l'objet "Gestionnaire de Service" d'OOo :
Dim
oServ As
Object
Set
oServ =
CreateObject
(
"com.sun.star.ServiceManager"
)
Et ensuite vous allez utiliser cette référence pour manipuler l'API d'OpenOffice.
Dim
Desktop As
Object, Document As
Object
Dim
args
(
)
Set
Desktop =
oServ.createInstance
(
"com.sun.star.frame.Desktop"
)
'Création d'un nouveau document Writer
Set
Document =
Desktop.loadComponentFromURL
(
"private:factory/swriter"
, "_blank"
, 0
, args)
Vous pouvez utiliser l'API sndPlaySound32 :
Private
Const
SND_FILENAME =
&
H20000
Private
Const
SND_SYNC =
&
H0
Private
Const
SND_ASYNC =
&
H1
Private
Declare
Function
PlaySound Lib
"winmm.dll"
Alias "PlaySoundA"
_
(
ByVal
lpszName As
String
, ByVal
hModule As
Long
, _
ByVal
dwFlags As
Long
) As
Long
Sub
JouerMusique
(
)
PlaySound "C:\WINDOWS\system32\BuzzingBee.wav"
, ByVal
SND_SYNC, SND_FILENAME Or
SND_ASYNC
End
Sub
Sub
StopMusique
(
)
PlaySound SND_SYNC, ByVal
SND_SYNC, SND_FILENAME Or
SND_ASYNC
End
Sub
Il est également possible d'utiliser la bibliothèque Windows Media Player.
ou l'interface multimédia MCI : Créer un lecteur de CD audio dans Excel.
Utilisez la macro suivante pour compresser un classeur au format .rar.
Option
Explicit
Private
Declare
Function
ShellExecute Lib
"shell32.dll"
Alias "ShellExecuteA"
_
(
ByVal
hwnd As
Long
, ByVal
lpOperation As
String
, ByVal
lpFile As
String
, _
ByVal
lpParameters As
String
, ByVal
lpDirectory As
String
, ByVal
nShowCmd As
Long
) As
Long
Sub
Lancer
(
)
'creer un fichier rar
Dim
Chemin As
String
Dim
Param As
String
Dim
Action As
String
Chemin =
"C:\Program Files\WinRAR\WinRAR.exe"
Param =
"a -ep1 -r0 -iext -- C:\classueur.rar C:\classeur.xls"
Action =
"Ouvrir"
Call
ShellExecute
(
0
, Action, Chemin, Param, vbNullString
, 1
)
End
Sub
Un deuxième exemple qui archive le classeur actif sur le bureau :
'---------------------------------------------------------------------------------------
' Module : modWinRar
' Auteur : fred65200 - Frédéric CHAPIN -
'https://www.developpez.net/forums/f542/hardware-systemes-logiciels/microsoft-office/excel/
' Date : 25/02/2009
' Description : Archiver le classeur actif en sur le bureau
' Copie du classeur
' Archivage et copie dans la corbeille
'---------------------------------------------------------------------------------------
' déclaration Api
'Chemin du Bureau
Declare
Function
SHGetPathFromIDList Lib
"shell32.dll"
_
Alias "SHGetPathFromIDListA"
(
_
ByVal
pidl As
Long
, _
ByVal
pszPath As
String
) As
Long
Declare
Function
SHGetSpecialFolderLocation Lib
"shell32.dll"
(
_
ByVal
hwndOwner As
Long
, _
ByVal
nFolder As
Long
, _
pidl As
ITEMIDLIST) As
Long
Type
SHITEMID
cb As
Long
abID As
Byte
End
Type
Type
ITEMIDLIST
mkid As
SHITEMID
End
Type
'---------------------------------------------------------------------------------------
Sub
TestArchivage
(
)
Archiver "rar"
' Archiver "zip"
End
Sub
'---------------------------------------------------------------------------------------
Sub
Archiver
(
FormatArchive As
String
)
'Liste des commandes et des paramètres en bas du Module.
Dim
FichierTemp As
String
, Archive As
String
Dim
ShellStr As
String
, NomOri As
String
Dim
Ext As
String
, NomFichier As
String
Dim
NomFichierSansExt As
String
, Parametres As
String
Dim
RepBureau As
String
Dim
AWbk As
Workbook
Const
RepRar As
String
=
"C:\Program Files\WinRAR\"
Set
AWbk =
ActiveWorkbook
NomOri =
AWbk.FullName
NomFichier =
AWbk.Name
NomFichierSansExt =
SansExtension
(
AWbk.Name
)
Ext =
Extension
(
NomOri)
RepBureau =
Cherche_Chemin
(&
H10) &
Application.PathSeparator
'Liste des commandes et paramètres en bas du module
Parametres =
"winrar a -af"
&
FormatArchive &
" -ag{-fred65200}-NN -ep1 -dr"
'Fichier archive sur le Bureau
FichierTemp =
IIf
(
RepBureau &
NomFichier =
NomOri, _
RepBureau &
NomFichierSansExt &
"1"
&
Ext, _
RepBureau &
NomFichier)
Archive =
SansExtension
(
FichierTemp) &
"."
&
FormatArchive
ShellStr =
RepRar &
Parametres &
" """
&
Archive &
""" """
&
FichierTemp &
""""
'Enregistrement d'une copie
AWbk.SaveCopyAs
FichierTemp
'Archivage
Shell ShellStr
MsgBox
"Archivage effectué."
End
Sub
'renvoi le chemin d'un des dossier spéciaux de Windows
Function
Cherche_Chemin
(
Param As
Long
) As
String
Dim
RetVal As
Long
Dim
Path As
String
Dim
IDL As
ITEMIDLIST
RetVal =
SHGetSpecialFolderLocation
(
0
, Param, IDL) ' appel de la fonction api
If
RetVal =
NOERROR Then
Path =
Space
(
512
) ' taille du tampon
RetVal =
SHGetPathFromIDList
(
ByVal
IDL.mkid.cb
, ByVal
Path)
Cherche_Chemin =
Left
(
Path, InStr
(
Path, Chr
(
0
)) -
1
) ' extraction du chemin
Else
Cherche_Chemin =
""
End
If
End
Function
'renvoi l'extension d'un fichier
Function
Extension
(
Fichier As
String
) As
String
Extension =
Mid
(
Fichier, InStrRev
(
Fichier, "."
))
End
Function
'Renvoi le non du fichier sans sont extension
Function
SansExtension
(
Fichier As
String
) As
String
SansExtension =
Left
(
Fichier, InStrRev
(
Fichier, "."
) -
1
)
End
Function
'---------------------------------------------------------------------------------------
'LISTE DES COMMANDES
'a --> Ajouter les fichiers à une archive
'c --> Ajouter un commentaire d'archive
'ch --> Modifier les paramètres de l'archive
'cv --> Convertir les archives
'cw --> Ecrire un commentaire d'archive dans le fichier
'd --> Supprimer les fichiers d'une archive
'e --> Extraire des fichiers d'une archive, en ignorant leurs chemins
'f --> Actualiser les fichiers d'une archive
'i --> Rechercher une chaîne dans les archives
'k --> Verrouiller une archive
'm --> Déplacer des fichiers et des dossiers vers une archive
'r --> Réparer une archive endommagée
'rc --> Reconstruire les volumes manquants
'rn --> Renommer les fichiers archivés
'rr[N] --> Ajouter des données à un enregistrement de restauration
'rv[N] --> Créer des volumes de restauration
's[name] --> Convertir une archive en archive auto-extractible
's- --> Supprimer le module SFX
't --> Tester des fichiers d'archive
'Menu "Outils" --> Mettre à jour des fichiers dans une archive
'x --> Extraire des fichiers d'une archive, en tenant compte de leurs chemins complets
'LISTE DES PARAMÈTRES
'-dr --> -Déplacer les fichiers dans la corbeille
'-ds --> -Ne trie pas les fichiers archivés
'-dw --> -Supprimer les fichiers définitivement après archivage
'-ed --> -N'ajoute pas les dossiers vides
'-en --> -N'ajoute pas à la fin du bloc "fin de l'archive"
'-ep --> -Exclut les chemins des noms
'-ep1 --> -Exclut le dossier de base des noms
'-ep2 --> -Inclut le chemin complet
'-ep3 --> -Ajoute au chemin complet la lettre de l'unité
'-e[+]<attr> --> -Exclut ou inclut les fichiers différents du masque d'attributs
'-f --> -Actualise les fichiers
'-hp[mot_de_passe] --> -Crypte les données et les en-têtes du fichier
'-iadm --> -demander des droits d'administration pour un archive SFX
'-ibck --> -Lance WinRAR en arrière-plan
'-ieml[.][adr] --> -Envoie l'archive par e-mail
'-iicon<nom> --> -specifie l'icône SFX
'-iimg<nom> --> -specifie le logo SFX
'-ilog[nom] --> -Place les erreurs dans un fichier journal ".log"
'-inul --> -Désactive les messages d'erreur
'-ioff --> -Arrête le PC
'-k --> -verrouiller l'archive
'-kb --> -Conserve les fichiers endommagés extraits
'-m<n> --> -Définit la méthode de compression
'-mc<par> --> -Définit les paramètres avancés de compression
'-md<n> --> -Sélectionne la taille du dictionnaire
'-ms[list] --> -Spécifie les types de fichiers à stocker
'-mt<tâches> --> -Spécifier le nombre de tâches
'-n<fichier> --> -inclure uniquement le fichier spécifié
'-n@<fichier_liste> --> -inclure les fichiers spécifiés dans la liste fichiers
'-oc --> -activer l'attribut NTFS "Compressé"
'-or --> -Renommer les fichiers automatiquement
'-os --> -Sauvegarde les flux NTFS
'-ow --> -Traite l'information sécurisée des fichiers
'-o[+|-] --> -Définir le mode de remplacement
'-p[mot_de_passe] --> -Utilise un mot de passe
'-r --> -Sous-dossiers récurrents
'-r0 --> -Sous-dossiers récurrents pour les noms avec joker uniquement
'-ri --> -Configurer la priorité et le temps d'attente
'-rr[N] --> -Ajouter des données à un enregistrement de restauration
'-rv[N] --> -Créer des volumes de restauration
'-s --> -Crée une archive "Solide"
'-s<N> --> -Crée des groupes "Solide" en utilisant un compteur de fichiers
'-sc<jeu_caractères>[objets]--> -définir le jeu de caractères
'-se --> -Crée des groupes "Solide" en utilisant l'extension
'-sfx[nom] --> -Crée une archive auto-extractible
'-sl<taille> --> -Fichier de processus avec une taille inférieure à celle spécifiée
'-sm<taille> --> -Fichier de processus avec une taille supérieure à celle spécifiée
'-sv --> -Crée des volumes "Solide" indépendants
'-sv- --> -Crée des volumes "Solide" dépendants
'-s- --> -Désactive l'archivage "Solide"
'-t --> -Teste les fichiers après l'archivage
'-ta<date> --> -Traite les fichiers modifiés après la date spécifiée
'-tb<date> --> -Traite les fichiers modifiés avant la date spécifiée
'-tk --> -Conserve l'heure d'origine de l'archive
'-tl --> -Fixe l'heure de l'archive avec celle de son fichier le plus récent
'-tn<heure> --> -Traite les fichiers plus récents que l'heure spécifiée
'-to<heure> --> -Traite les fichiers plus anciens que l'heure spécifiée
'-ts<m,c,a> --> -Sauvegarde ou restaure l'heure fichier (modification, création, accès)
'-u --> -Mise à jour des fichiers
'-v<n>[k|b|f|m|M|g|G] --> -Crée des volumes
'-vd --> -Efface le contenu du support avant de créer un volume
'-ver[n] --> -Contrôle la version du fichier
'-vn --> -Utilise l'ancien style de nom de volume
'-vp --> -Pause avant chaque volume
'-x<fichier> --> -Exclut le (les) fichier(s) spécifié(s)
'-x@<fichier_liste> --> -Exclut des fichiers en utilisant la liste de fichiers spécifiée
'-y --> -Considère toutes les réponses aux questions comme "Oui"
'-z<file> --> -Lit un commentaire d'archive à partir d'un fichier
'-- --> -Arrête l'analyse des paramètres