Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


Comment fermer un classeur sans enregistrer les changements ?
auteur : Bidou
Il suffit de faire

Vba

ActiveWorkbook.Close False



La méthode Close permet de gérer un grand nombre de cas. Sa syntaxe générale est :

Vba

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.



Comment sauvegarder un classeur par macro ?
auteur : SilkyRoad
La méthode SaveAs permet de sauvegarder le classeur sur le PC:
Vba

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:

Vba

Dim Fichier As String

Fichier = "C:\Dossier\NomClasseur.xls"
ThisWorkbook.SaveAs Fichier, , "PassWord99"




Comment enregistrer les modifications dans un classeur ?
auteur : SilkyRoad
Utilisez la méthode Save:

Vba

'Enregistre les modifications d'un fichier spécifique nommé NomClasseur.xls
Workbooks("NomClasseur.xls").Save
Vba

'Enregistre les modifications du fichier contenant la macro
ThisWorkbook.Save

Comment créer une copie de sauvegarde du classeur actif ?
auteur : SilkyRoad
La méthode SaveCopyAs permet de créer une copie de sauvegarde, sans modifier le classeur spécifié.

Vba

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

Comment fermer un classeur sans sauvegarder les modifications ?
auteur : SilkyRoad
La valeur False doit être spécifiée à l'argument SaveChanges:

Vba

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.

Vba

ActiveWorkbook.Saved = True
ActiveWorkbook.Close

Comment afficher la boite de dialogue "Enregistrer sous" ?
auteur : SilkyRoad
Vous pouvez utiliser ces deux méthodes:

Vba

Application.Dialogs(xlDialogSaveAs).Show
Vba

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:

Vba

Application.Dialogs(xlDialogSaveAs).Show ("NomClasseur.xls")

Comment bloquer l'utilisation du bouton "Enregistrer sous" par macro ?
auteur : SilkyRoad
Utilisez la procédure évènementielle Workbook_BeforeSave suivante, à placer au niveau du module objet ThisWorkbook:

Vba

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  If SaveAsUI = True Then Cancel = True
End Sub

Comment sauvegarder chaque feuille au format htm ?
auteur : SilkyRoad
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.

Vba

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

Comment protéger un classeur par mot de passe, dans Excel2007 ?
auteur : SilkyRoad
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.



Quelle est la différence entre les extensions xlsx et xlsm pour sauvegarder des classeurs Excel 2007 ?
auteur : SilkyRoad
xlsx est l'extension pour sauvegarder les classeurs Excel2007 sans macro.
xlsm est l'extension pour sauvegarder les classeurs Excel2007 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.



Comment sauvegarder un classeur sur une clé USB dont la lettre racine peut varier ?
auteur : SilkyRoad
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).

Vba

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:

Vba

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

Pourquoi les modifications de code VBA ne sont pas prises en compte dans mon complément .xla, lorsque je ferme Excel ?
auteur : SilkyRoad
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).



precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2008  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com