IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fermer le classeur actif des macros sans l'enregistrer [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut Fermer le classeur actif des macros sans l'enregistrer
    Bonjour
    Mon code terminé, je déplace ma feuille terminée sur un nouveau classeur par Edition Déplacer ou copier une feuille, je souhaiterai en même temps fermer mon classeur des macros sans l'enregistrer de façon à n'avoir que mon nouveau classeur d'ouvert mais je n'arrive pas à le fermer, j'essaie avec ThisWorkbook.Close SaveChanges:=False et là tout s'arrête, je ne vois plus rien, et quand je resélectionne mon classeur macros, le nouveau classeur réapparait aussi, là je peux cliquer directement sur le classeur des macros sans devoir l'enregistrer pour le fermer maintenant et j'ai enfin mon nouveau classeur ouvert.
    J'essaie cette procédure pour empêcher les utilisateurs de modifier le classeur des macros et pour qu'ils n'aient que le nouveau classeur à enregistrer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'Edition Déplacer ou copier une feuille sur autre classeur
        Sheets("Cahier").Copy
        Range("A2").Select
        ActiveWindow.ActivateNext
     
        ActiveWindow.ActivateNext
        ThisWorkbook.Close SaveChanges:=False
    Merci pour l'aide

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    bonjour,

    tu peux essayer comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sheets("Cahier").Copy
    With ThisWorkbook
        .Saved = True
        .Close
    End With
    Les autres lignes de ton code peuvent être supprimées, elles ne servent à rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Range("A2").Select
    'ActiveWindow.ActivateNext
    'ActiveWindow.ActivateNext

  3. #3
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Bonjour fring, le forum
    C'est un résultat identhique, par contre le fichier macro est bien fermé malgré sa surbrillance en bleu dont je croyais qu'il était encore ouvert, et je me rends compte qu'il me faut ouvrir un fichier excel n'importe lequel dans le dossier Fichier macro, le fermer par la petite croix noire en dessous de la croix rouge qui permet de ne fermer que ce fichier, et apparait mon fichier qui se nomme "classeur1" par défaut , je pense que le fichier généré par "Sheets("Cahier").Copy reste dans la mémoire tampon d'excel, j'ai essayé de mettre " ActiveWindows.ActivateNext" en plus dans le code, ou même "Destination.Activate", "Classeur1.Activate"

    Comment Activer ce fichier de la mémoire tampon ? car "Sheets("Cahier").Copy, correspond à : Edition/Déplacer ou copier une feuille/Créer une copie/en sélectionnant (Nouveau classeur)
    N'y a-t-il pas une autre façon de dupliquer une feuille ?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Sheets("Cahier").Copy
             With ThisWorkbook
            .Saved = True
            .Close
     
    End With
        Classeur1.Activate
    Ens Sub
    Merci pour cette particularité

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Désolé mais j'ai beau relire plusieurs fois ton énoncé, je ne comprend pas bien le problème et ce que tu cherches à réaliser.

    Lorsque tu exécutes "Sheets("Cahier").Copy", la feuille est copiée dans un nouveau classeur qui se nomme ClasseurX, ensuite le classeur contenant la macro est fermé et seul ClasseurX reste ouvert. Ce n'est pas ce que tu souhaitais obtenir ?

  5. #5
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Merci Fring pour tes recherches
    Lorsque j'exécute "Sheets("Cahier").Copy", la feuille est copiée dans un nouveau classeur qui se nomme ClasseurX, ensuite le classeur contenant la macro est fermé mais reste en surbrillance bleu dans le dossier et je n'arrive pas à voir le ClasseurX ouvert, je dois ouvrir un fichier excel n'importe lequel dans ce dossier, le fermer pour qu'apparaisse le fameux ClasseurX, j'ai cherché partout commente le voir, rien n'y fait, l'utilisateur non averti ne comprendra rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Macro1()
             Sheets("Cahier").Copy
      With ThisWorkbook
        .Saved = True
        .Close
      End With
        Classeur1.Activate
          Sheets("Feuil1").Copy
    End Sub
    Pourtant j'ai remis ce code dans un nouveau fichier pour essai avec ce bout de code dedans et là ça fonctionne, il faut que je trouve pourquoi ça ne fonctionne pas avec l'initial qui a pas mal de codes
    Merci pour le moment il faut que je continue à chercher par moi-même car c'est certainement le code Appel ouverture d'un fichier qui me laisse en plan.

  6. #6
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Tu n'as pas un code qui s'exécute dans l'évènement BeforeClose de ThisWorkbook ?

    Par contre ces deux lignes dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Classeur1.Activate
    Sheets("Feuil1").Copy
    1. servent à quoi ?
    2. ne seront pas exécutées étant donné que juste avant tu as l'instruction de fermer le classeur.

  7. #7
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Bonjour
    C'est une erreur d'affichage de ma part pour:Classeur1.Activate Sheets("Feuil1").Copy, ça ne sert à rien, j'ai fait l'essai et la recopie trop vite.

    Par contre je viens de scinder mon code en 2 modules, laissant seul dans le premier module1 la procédure par l'opérateur de sélectionner un fichier précis dans son arborescence de ses fichiers (et qui me bloque la fin du code) que j'ai mis dans un deuxième module2, là tout est OK pour la fermeture du fichier macro et qui me laisse que mon fichier "ClasseurX".
    Seulement je n'arrive plus maintenant à ce que le module2 s'exécute automatiquement après le module1, en principe ça marche toujours quand je mets l'instruction "Call nomMacroModule2" pour que ça s'enchaine mais là ça beug

    ci-joint fin code module1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Else
    MyString = "No"
    MsgBox ("Aucun fichier sélectionné")
     
    End If
     
    Call Macro3OngeltTravaillé
     
    End Sub
    ci-joint début code module2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Macro3OngeltTravaillé()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 16/10/2010 par OEM
     
    'macro à faire
    'Feuil2.Select 'Fichier Onglet numéro 2 activé
     
      Range("B1:B9").Select
    Il me manque un argument quand je mets "Call Macro3OngeltTravaillé"

    Avez vous une solution pour cette fusion
    Merci

  8. #8
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Dans ce que tu me montres, je ne vois pas de bug

    Ton code fait ceci
    Code dans le module 1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub TaMacro1()
    MsgBox "fonctionnement de la Macro 1"
    TaMacro2
    End Sub
    Code dans le module 2 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub TaMacro2()
    MsgBox "fonctionnement de la macro 2"
    End Sub
    et ça fonctionne parfaitement

  9. #9
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Effectivement Fring ça marche, la suite du module1 s'exécute bien avec le module2, mais en ayant le même résultat qu'auparavent, toujours avec ce fichier "ClasseurX" qui reste introuvable tant que je n'ouvre pas un autre fichier, la première partie du code qui fait appel à l'opérateur avec différents MsgBox interactive certainement jusqu'à la fin du code.
    Je trouvais cette façon très originale que l'opérateur sélectionne lui même son fichier source, car bien souvent mes autres macros fonctionnent en ouvrant en premier le fichier source, puis mon fichier macro pour s'excécuter ensuite. J'essaie d'améliorer mes codes par des MsgBox interactives, mais c'est beaucoup plus compliqué pour un bricoleur comme moi.
    Pour le moment, je vais garder cette macro ou l'opérateur aura le fichier "ClasseurX" en premier, j'ai mis des Delete qui supprimeront toutes les traces laissées dans le fichier macro après son exécution de façon que même si l'opérateur l'enregistre, il pourra de nouveau l'utiliser pour importer un autre fichier de son choix. J'avance à petits pas grâce à vous tous.
    Encore un grand Merci pour toutes tes réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Nom Classeur actif avec macro dans le Personal.xlsb
    Par mouftie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/05/2015, 11h27
  2. Faire tourner des macros sans ouvrir le fichier
    Par markinho04 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/09/2010, 11h43
  3. Vérifier si un classeur contient des macros
    Par SilkyRoad dans le forum Contribuez
    Réponses: 0
    Dernier message: 25/12/2007, 19h56
  4. Peux-t'on exécuter des macros excel sans installer excel
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/09/2006, 01h49
  5. [Test-Excel] récupération des macros dans un classeur corrompu
    Par SilkyRoad dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/08/2006, 23h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo