FAQ Excel
FAQ ExcelConsultez toutes les FAQ
Nombre d'auteurs : 46, nombre de questions : 845, dernière mise à jour : 30 mars 2022
- Comment fermer un classeur sans enregistrer les changements ?
- Comment sauvegarder un classeur par macro ?
- Comment enregistrer les modifications dans un classeur ?
- Comment créer une copie de sauvegarde du classeur actif ?
- Comment fermer un classeur en sauvegardant les modifications ?
- Comment fermer un classeur sans sauvegarder les modifications ?
- Comment afficher la boite de dialogue "Enregistrer sous" ?
- Comment bloquer l'utilisation du bouton "Enregistrer sous" par macro ?
- Comment sauvegarder chaque feuille au format htm ?
- Comment protéger un classeur par mot de passe, dans Excel 2007 ?
- Quelle est la différence entre les extensions xlsx et xlsm pour sauvegarder des classeurs Excel 2007 ?
- Comment sauvegarder un classeur sur une clé USB dont la lettre racine peut varier ?
- Pourquoi les modifications de code VBA ne sont pas prises en compte dans mon complément .xla, lorsque je ferme Excel ?
- Comment ouvrir la copie d'un classeur ?
- Comment sauvegarder une feuille de calcul au format DBF sous Excel 2007 ?
Il suffit de faire
ActiveWorkbook.Close
False
La méthode Close permet de gérer un grand nombre de cas. Sa syntaxe générale est :
Close
(
SaveChanges, FileName, RouteWorkbook)
Si SaveChanges est vrai et que le classeur n'a pas encore été enregistré, il utilisera la valeur de FileName. Si celle-ci n'est pas précisée, il y aura appel de la boîte de dialogue SaveAs.
La méthode SaveAs permet de sauvegarder le classeur sur le PC :
Dim
Fichier As
String
Fichier =
"C:\Dossier\NomClasseur.xls"
ThisWorkbook.SaveAs
Fichier
Vous pouvez aussi spécifier un mot de passe lors de la sauvegarde :
Dim
Fichier As
String
Fichier =
"C:\Dossier\NomClasseur.xls"
ThisWorkbook.SaveAs
Fichier, , "PassWord99"
Utilisez la méthode Save :
'Enregistre les modifications d'un fichier spécifique nommé NomClasseur.xls
Workbooks
(
"NomClasseur.xls"
).Save
'Enregistre les modifications du fichier contenant la macro
ThisWorkbook.Save
La méthode SaveCopyAs permet de créer une copie de sauvegarde, sans modifier le classeur spécifié.
Dim
Chemin As
String
, Fichier As
String
Chemin =
"C:\Dossier Archivage\"
'Ajoute la date du jour et l'heure dans le nom du fichier
Fichier =
"NomClasseur_"
&
Format
(
Date
, "yyyymmdd"
) &
"_"
&
Format
(
Time
, "hhmmss"
) &
".xls"
ActiveWorkbook.SaveCopyAs
Chemin &
Fichier
ThisWorkbook.Close
SaveChanges:=
True
La valeur False doit être spécifiée à l'argument SaveChanges :
ThisWorkbook.Close
SaveChanges:=
False
Un autre solution consiste à utiliser la propriété Saved.
La valeur True permet de préciser que le classeur n'a pas été modifié depuis le dernier enregistrement
et donc aucun message d'alerte ne s'affichera lors de la fermeture.
ActiveWorkbook.Saved
=
True
ActiveWorkbook.Close
Vous pouvez utiliser ces deux méthodes :
Application.Dialogs
(
xlDialogSaveAs).Show
CommandBars.FindControl
(
ID:=
748
).Execute
Lors de l'affichage de la boîte de dialogue, il est possible de spécifier un nom par défaut dans le champ "Nom de fichier".
par exemple :
Application.Dialogs
(
xlDialogSaveAs).Show
(
"NomClasseur.xls"
)
Utilisez la procédure évènementielle Workbook_BeforeSave suivante, à placer au niveau du module objet ThisWorkbook :
Private
Sub
Workbook_BeforeSave
(
ByVal
SaveAsUI As
Boolean
, Cancel As
Boolean
)
If
SaveAsUI =
True
Then
Cancel =
True
End
Sub
Cet exemple boucle sur toutes les feuilles du classeur et sauvegarde chacune au format htm, dans le même répertoire que le classeur.
Une option permet d'ajouter des liens hypertextes vers les autres pages.
Dim
Ws As
Worksheet
Dim
Fichier As
String
, MonCode As
String
Dim
i As
Byte
'Boucle sur les feuilles de calcul du classeur
For
Each
Ws In
ThisWorkbook.Worksheets
'Définit le chemin de stockage de chaque page htm
Fichier =
ThisWorkbook.Path
&
"\"
&
Ws.Name
&
".htm"
'Sauvegarde au format htm
ActiveWorkbook.PublishObjects.Add
_
(
xlSourceSheet, Fichier, Ws.Name
, ""
, xlHtmlStatic, ""
, ""
).Publish
'--- ajout liens hypertextes dans les pages créées ---
Open ThisWorkbook.Path
&
"\"
&
Ws.Name
&
".htm"
For
Append As
#1
Print #1
, "<HTML>"
Print #1
, "<HEAD><BODY>"
For
i =
1
To
Worksheets.Count
If
Ws.Name
<>
Worksheets
(
i).Name
Then
MonCode =
"<PR><CENTER><td bgcolor='#FFFFFF' rowspan='2'><a href='"
&
_
ThisWorkbook.Path
&
"\"
&
Worksheets
(
i).Name
&
".htm'>"
&
_
Worksheets
(
i).Name
&
"</a></td><BR></CENTER>"
Print #1
, MonCode
End
If
Next
i
Print #1
, "</HEAD></BODY>"
Close #1
Next
'Affiche la 1ère page créée.
ThisWorkbook.FollowHyperlink
ThisWorkbook.Path
&
"\"
&
_
Worksheets
(
1
).Name
&
".htm"
, NewWindow:=
True
Quand vous ouvrez la boîte de dialogue "Enregistrer sous",
Cliquez sur le bouton "Outils", en bas et à gauche dans la fenêtre.
Sélectionnez "Options générales".
Saisissez et confirmez le mot de passe.
xlsx est l'extension pour sauvegarder les classeurs Excel 2007 sans macro.
xlsm est l'extension pour sauvegarder les classeurs Excel 2007 avec macro.
Lorsque vous cliquez sur le bouton "Enregistrer" ou "Enregistrer sous au format par défaut"
et que le type de fichier défini par défaut est .xlsx,
si le classeur contient des macros, Vous aurez un message d'alerte pour vous prévenir que le format n'est pas compatible.
En cliquant sur le bouton "Non", la boîte de dialogue "Enregistrer sous" s'affiche et vous pouvez modifier le format de fichier.
Par contre si vous cliquez sur le bouton "OUI", le classeur est enregistré sans les procédures. vos macros sont encore visibles
et utilisables tant que le classeur est ouvert, mais si vous fermez le fichier et que vous le ré-ouvrez, les macros ont disparues.
Vous pouvez lister le nom des lecteurs amovibles, vérifier s'ils sont prêts et quel est leur espace libre.
Il est aussi possible de renommer préalablement la clé pour l'identifier plus facilement dans la procédure (Drv.VolumeName).
Sub
ListeLecteursAmovible
(
)
Dim
FSO As
Object
Dim
Drv As
Object
Set
FSO =
CreateObject
(
"Scripting.FileSystemObject"
)
For
Each
Drv In
FSO.Drives
If
Drv.DriveType
=
1
Then
_
MsgBox
"le support "
&
Drv.DriveLetter
&
" ("
&
Drv.VolumeName
&
_
") est pret : "
&
Drv.IsReady
&
vbLf
_
&
"espace libre : "
&
Format
(
Drv.FreeSpace
, "#,##0"
) &
" octets."
Next
End
Sub
Un exemple qui boucle sur les lecteurs amovibles, qui enregistre le classeur si le nom de la clé est trouvé et si le lecteur est prêt :
Sub
Sauvegarde_Sur_LecteurAmovible
(
)
Dim
FSO As
Object
Dim
Drv As
Object
'Correspond au nom que vous avez préalablement attribué à votre clé.
Const
Cible As
String
=
"MaCle"
Set
FSO =
CreateObject
(
"Scripting.FileSystemObject"
)
On
Error
Resume
Next
For
Each
Drv In
FSO.Drives
If
Drv.DriveType
=
1
Then
If
Drv.VolumeName
=
UCase
(
Cible) And
Drv.IsReady
Then
ThisWorkbook.SaveAs
Drv.DriveLetter
&
":\Nom classeur.xls"
', xlWorkbook '(pour xl2007)
Exit
Sub
End
If
End
If
Next
MsgBox
"Enregistrement non effectué."
&
vbCrLf
&
_
"Le lecteur amovible '"
&
Cible &
"' n'a pas été trouvé."
End
Sub
Si vous fermez l'application après avoir modifié la procédure d'une macro complémentaire, Excel n'affiche
pas de message d'alerte "Voulez vous enregistrer les modifications ...?". Excel ne renvoie aucune information préalable
à la fermeture et vos modifications sont perdues.
Vous devez impérativement sauvegarder toutes vos modifications de procédure en cliquant sur le bouton
"Enregistrer" (ou en utilisant le raccourci clavier Ctrl+S).
Menu Fichier (Ou bouton Office sous Excel 2007).
Menu Ouvrir.
Recherchez et sélectionnez votre classeur depuis la boîte de dialogue.
Cliquez sur la droite du bouton Ouvrir.
Sélectionnez l'option "Ouvrir une copie".
Le fichier est ouvert et porte le nom dans le style "Copie (1)NomClasseur.xls".
La copie est automatiquement sauvegardée dans le même répertoire que le classeur original.
Vous pouvez ainsi travailler sur ce nouveau classeur sans modifier l'original.
Le format DBF n'est plus pris en charge dans la version 2007 d'Excel.
Voici toutefois une astuce pour contourner ce problème :
Sauvegardez votre feuille de calcul au format csv.
Ouvrez Access 2007.
Recherchez et ouvrez le fichier csv depuis Access.
Les données sont importées dans une table.
Sélectionnez l'onglet 'Données externes' dans le ruban Access.
Cliquez sur le bouton 'Plus' dans le groupe 'Exporter'.
Choisissez l'option 'dBASE' dans la liste.
Sélectionnez un des formats de fichier.
Cliquez sur le bouton OK pour valider.