Désactiver une macro bien précise

Bonjour,

Je me suis mis au macro pour les besoins du boulot, donc j'apprends un peu sur le tas.

J'ai écrit (copier coller) une macro qui permet d'effacer, à chaque ouverture d'un fichier partagé, certaine données rentrées par les utilisateurs précédents.
Le fichier excel en question, a vocation a être sauvegarder en copie perso par les utilisateurs qui le souhaitent.
J'aimerai savoir si il était possible d'écrire une macro qui permette de désactiver la macro "efface" une fois la sauvegarde perso effectuée ET uniquement dans le nouveau fichier sauvegarder de manière à ce que l'utilisateur conserve ses données. (j'espère être clair...)

Merci par avance de vos réponse

Ci dessous, la macro qui efface

Private Sub Workbook_Open()
Worksheets("Fiche").Select
Range("F23:F30").ClearContents
Worksheets("Log In").Select
Range("E14").ClearContents
Range("E11").Select

End Sub

et ci dessous, la macro qui permet à l'utilisateur de se voir proposer de sauvegarder

Sub Enregistrer()

Copie
ActiveWorkbook.Save
Worksheets("Log In").Select
Application.Dialogs(xlDialogSaveAs).Show Range("E11").Value & ".xls"

End Sub
Configuration: Windows XP
Firefox 2.0.0.16

8 réponses

  1. Je m'incline,

    je ne comprends toujours pas le mécanisme, mais tu avais parfaitement raison... Ca me servira de leçon.

    Et bien une dernière fois merci

    bonne fin de journée et bon week end
    0
    1. Contributeur
      Si tu avait tester tu aurrais compris....
      Ce n'est pas parce qu'ont a pas compris que ça marche pas.
      0
      1. Merci beaucoup, ça marche !

        Pour la deuxième partie de ta réponse, effectivement, ce n'est pas ce qu'il y a de plus correct, mais en lisant le code, je ne vois pas en quoi la perspective d'écrire "ne changer pas cette cellule" dans les cellules vides considérées aurait empêcher la suppression des données des cellules F23:F30 et de la cellule E14.

        Merci encore de ton aide
        Bonne journée
        0
        1. Contributeur
          essaye avec ThisWoorkbook.name
          ou ActiveWorkbook.name
          Remarque: si le classeur n'a pas encore été sauve (n'existe pas sur le DD) faut pas mettre XLS sinon.. Faut le mettre

          Tu peu aussi tester si c'est dans le même réperetoire avec ActiveWorkbook.Fullname
          Uniquement le chemin avec ActiveWorkbook.Path

          EDIT:
          Je ne suis pas sur que la méthode que tu proposes permette d'arriver au résultat désiré.
          Ce qui veut dire que tu ne l'a même pas tester mais que la solution est pas bonne....
          Et behhh.. Je vois pas pourquoi faudrait te donner des solutions ?

          0
          1. Salut

            j'ai rajouté le .xls mais ça n'a pas l'air de lui faire ni chaud ni froid...la macro plante toujours au niveau de la condition.
            est ce que la ligne de code ActiveWorkbook.FileName = ... veut bien dire quelques chose?

            merci en tout cas de ton assistance
            0
            1. Contributeur
              "Tarifs 2009 travail EPLE.XLS"

              0
              1. Bonjour lermite222,

                Désolé de répondre aussi tard, mais je viens de me rendre compte que la ré^ponse que j'avais posté hier ne s'était pas correctement enregistrée.

                Je ne suis pas sur que la méthode que tu proposes permette d'arriver au résultat désiré.
                J'ai changé de stratégie, en posant une condition sur le nom du fichier... mais je crois que ma condition est mal écrite.

                Si quelqu'un peut m'éclairer sur l'utilisation du "FileName" dans les macros, je lui en serait très reconnaissant.

                Ci dessous la macro modifiée

                Private Sub Workbook_Open()
                Application.ScreenUpdating = False

                Worksheets("Log In").Select
                If ActiveWorkbook.Filename = "Tarifs 2009 travail EPLE" Then

                Worksheets("Fiche").Select
                Range("F23:F30").ClearContents
                Worksheets("Log In").Select
                Range("E14").ClearContents
                Range("E11").Select
                Else
                Worksheets("Log In").Select
                Range("E11").Select
                End If
                Application.ScreenUpdating = True
                End Sub
                0
                1. Contributeur
                  Bonjour,

                  Tu pourrais déjà mettre un "Drapeau" de vidage sur une cellule ?
                  Private Sub Workbook_Open() 
                  Worksheets("Fiche").Select 
                  if cells(1,200)="" then
                  cells(1,200)="Ne changer pas cette cellule"
                  Range("F23:F30").ClearContents 
                  Worksheets("Log In").Select 
                  Range("E14").ClearContents 
                  Range("E11").Select 
                  end if
                  End Sub 


                  Et ta macro copier.. Elle fonctionne ????
                  A+
                  0

                  Discussions similaires

                  cette phrase est elle correcte

                  10 réponses