copier un fichier en fonction de la taille

  • Initiateur de la discussion Thomas®
  • Date de début
T

Thomas®

Guest
Bonjour le forum,

je cherche un moyen de securiser un fichier excel, car il arrive que des utilisateurs efface le fichier :evil:

j'ai pensé à une solution à l'ouverture du fichier qui serait de faire une copie de ce fichier dans un autre classeur.

mais afin d'être sur qu'en ouvrant le fichier vide ou avec moins d'info il ne s'enregistre pas j'avais pensé faire un control sur la taille du genre.

si le fichier (utilisateur) est plus lourd que la sauvegarde alors écrase la sauvegarde par une copie de ce fichier sinon ne fait pas de copie.

d'avance merci
Thomas®

PS: si vous avez une idée mieux adapté je suis prenneur
 

Gael

XLDnaute Barbatruc
Bonjour Thomas,

C'est une réponse plutôt Windows que Excel mais regarde dans les pramètres avancés de sécurité du fichier (Clic droit / sécurité) car tu peux définir des droits très précis dont celui de modifier mais pas de supprimer.

@+

Gael
 

Hellboy

XLDnaute Accro
Bonjour Thomas®

Je pense que si il ont acces en écriture ds le fichier et si l'utilisateur pèse directement sur l'icone enregistrer(ou passe par le menu), tu ne pourra contourner ce problème de cette façon.

Par contre, il existe une procédure évenementiel relier a 'ThisWorkBook' qui s'appel:

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)


End Sub
qui te permet de faire un traitement avant que se produise l'enregistrement du fichier. To idée de vérifier la grosseur du fichier est bonne. Mais pour le moment, je ne sais pas comment récupérer cette information.
 
T

Thomas®

Guest
Bonjour Hellboy,Gael, le forum,

Merci pour vos réponse.

dans les parametre de windows je ne pense pas pouvoir trouver ma solution car j'ai besoin que ces utilisateur puisse modifier et sauvegarder des infos.

pour ce qui est de la procedure de Hellboy je pense plus faire une sauvegarde avant le problème et ce des l'ouverture

mais ta proposition est interéssante (Merci :p )

donc plus là :
Code:
Private Sub Workbook_Open()

End Sub

maintenant je pense que recupérer la taille du fichier à l'ouverture est un problème.

deplus si j'y arrive l'autre problème pour moi sera de faire une sauvegarde transparent et donc que l'utilisateur reste bien sur le fichier ouvert et non pas sur la copie.
car mes connaissance actuel de VBA me permet de faire une copie mais dans ce cas au final je suis sur la copie (ou sinon je bricole avec du save as puis du close et ensuite du open....).

D'avance merci pour votre aide
Thomas®
 

Hellboy

XLDnaute Accro
Bonjour Thomas®

Même si tu fais une copie a l'ouverture, comment va tu t'assurer que l'information du nouveau fichier sont bonnes. Si tu dois faire cette véfifications souvent ça peut devenir lassant.
Il pourrait être envisageable de renforcir la validations des entrées de données. A moins que tu n,ai accès a un serveur qui fait des images a toutes les x temps, la tu serai en Bisness. Je crois que ça se fait avec windows, mais je ne sais comment. :eek:
Est-ce qu'il peut avoir plus de un utilisateur à la fois qui peut modifier le fichier ?
 
T

Thomas®

Guest
re,

Non il ne peut y avoir qu'une seul personne à la fois sur le fichier

pour ce qui est des sauvegarde windows c'est deja le cas car le fichier est en reseau avec des sauvegarde tt les jours mais en une journée il peut y avoir un max d'info saisie.

moi ce que je cherche c'est d'avoir un fichier de secour qui serait la copie du fichier avant perte d'info

alors peut être faire 3 copies du genre :

exemple

mon fichier Tom.xls qui à l'ouverture crée tom1.xls
puis tom2....puis 3.xls

de sorte que si le fichier perd ses infos il écrase 1 fichier de sauvegarde (et donc qu'il m'en reste 2 avec des infos)

mais je suis sur qu'il doit être possible de savoir la taille du fichier

Merci
Thomas®
 
T

Thomas®

Guest
bonsoir le forum,

j'ai trouvé une fonction 'BuiltinDocumentProperties'

j'ai vu que normalement il peut afficher les info comme le nom....

et le nombre de byte pour autant il ne me les affiches pas??

pour info j'ai excel 97

d'avance merci
 

Hellboy

XLDnaute Accro
re

J,ai trouvé ceci sur le net, mais je n'ai pas le temps de travailler dessus ce soir. Demain peut être, alors si l'aventure te tente ...

Code:
Private Sub tmrCreerListe_Timer()
    
    Dim objFileSystem As FileSystemObject
    Dim objFolder As Folder
    Dim objFolders As Folders
    Dim objFolderItem As Folder
    Dim objFiles As Files
    Dim objFile As File
    Dim objTextStream As TextStream
    Dim szFileName As String
    Dim szTempFileName As String
    Dim szFolderName As String
    Dim vntSize As Variant

    On Error GoTo ErrorHandler
    
    ' Faire seulement une fois
    tmrCreerListe.Enabled = False
    
    Set objFileSystem = CreateObject('Scripting.FileSystemObject')
    szTempFileName = InputBox('Entrer nom de fichier', _
                              'Entrer chemin et nom de fichier:', _
                              '.txt')

    If szTempFileName = '' Then
        Exit Sub
    Else
        m_bAnnulerListe = False
        Set objTextStream = objFileSystem.CreateTextFile(szTempFileName, True)
        Set objFolder = objFileSystem.GetFolder(Dir1.Path)
        Set objFolders = objFolder.SubFolders
        Set objFiles = objFolder.Files
        
        If Option1 Then
            ' Liste des sous-repertoires dans le repertoire
            With objTextStream
                Call .WriteLine('Repertoires dans ' & Dir1.Path & ' (MB)')
                Call .WriteBlankLines(1)
                For Each objFolderItem In objFolders
                    If m_bAnnulerListe Then
                        Exit For
                    End If
                    szFolderName = objFolderItem.Name
                    txtCourant = szFolderName
                    Call Refresh
                    vntSize = 0
                    vntSize = objFolderItem.Size
                    Call .WriteLine(szFolderName & vbTab & _
                                    Format(CDbl(vntSize / 1024 ^ 2), '# ##0.0'))
                    DoEvents
                Next
            End With
        Else
            ' Liste des fichiers dans le repertoire
            With objTextStream
                Call .WriteLine('Fichiers dans ' & Dir1.Path & ' (MB)')
                Call .WriteBlankLines(1)
                For Each objFile In objFiles
                    If m_bAnnulerListe Then
                        Exit For
                    End If
                    szFileName = objFile.Name
                    txtCourant = szFileName
                    Call Refresh
                    vntSize = 0
                    vntSize = objFile.Size
                    Call .WriteLine(szFileName & vbTab & _
                                    Format(CDbl(vntSize / 1024 ^ 2), '# ##0.0'))
                    DoEvents
                Next
            End With
        End If
        If m_bAnnulerListe Then
            MsgBox (szTempFileName & ' annulé!')
        Else
            MsgBox (szTempFileName & ' créé.')
        End If
    End If
    Set objFileSystem = Nothing
    Exit Sub
 
T

Thomas®

Guest
Bonjour le forum,

J'ai regardé la macro mais je n'y comprend rien :(

si quelqu'un à une idée se serait cool car je n'arrive pas à trouver la taille de mon fichier actif ainsi que mon fichier de sauvegarde qui lui est fermé.

D'avance merci
Thomas®
 

Hellboy

XLDnaute Accro
Bonjour Thomas@

Je suis désolé, je n'ai pas le temps qu'il me faut pour t'aider, boulot et projet maison. Je suis désolé, mais si la sem prochaine tu n,as pas eu gain de cause avec ton problème, je vais pouvoir continuer. Tu pourrais refaire la même procédure pour remonter ta demande(Mardi serait mieux pour moi) pour que j'ai la nbotification.

Merci!
 

ThomasR

XLDnaute Occasionnel
re bonjour le forum,

je reformule ma demande. Est il possible de trouver la taille d'un fichier excel ouvert et aussi d'un fichier fermé.

ce que je souhaite faire c'est une comparaison de mon fichier actif (donc ouvert) et d'un back up qui lui est fermé. pour dire si le poid du back up est plus important que celui du fichier actif alors msgbox....., sinon écrase le back up par une copie de mon fichier actif.

ma priorité est surtout pour le moment de savoir le poid en ko d'un fichier ouvert et d'un fichier fermé.

d'avance merci
Thomas®
 

Discussions similaires

Statistiques des forums

Discussions
312 559
Messages
2 089 600
Membres
104 222
dernier inscrit
mouhim