Microsoft 365 Macro "suicide" bloque et ne quitte pas Excel

  • Initiateur de la discussion Initiateur de la discussion raf26
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

raf26

XLDnaute Occasionnel
Bonjour,

J'ai un souci avec ma macro qui doit "suicider" le fichier ouvert et quitter Excel.

J'utilise ce même code sur un autre fichier, tout fonctionne bien.

J'ai voulu le copier pour l'adapter à un autre fichier mais cela ne fonctionne pas.

Quand je fais le pas à pas,
arrivé à :

Next Ndx , cela boucle sur
If Application.RecentFiles(Ndx).Path = .FullName Then


VB:
Sub suicide()
    
  
    Dim Ndx         As Integer
    


    
    With ThisWorkbook
        
        Application.DisplayAlerts = False
        
        ActiveWorkbook.SaveAs Filename:="C:\Users\icimonnom\Desktop\blablabla.xlsm", _
                              FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
        
        Application.DisplayAlerts = False
        
        For Ndx = 1 To Application.RecentFiles.Count
            If Application.RecentFiles(Ndx).Path = .FullName Then
                Application.RecentFiles(Ndx).Delete
                Exit For
            End If
        Next Ndx
        .ChangeFileAccess Mode:=xlReadOnly
        Kill .FullName
        .Close savechanges:=False
    End With
    
    Application.ScreenUpdating = True
    Application.DisplayFullScreen = False
    
    Application.Cursor = xlDefault
    
    Application.Quit
    
End Sub


Je vous joint un fichier test (attention mon nom est remplacé par icimonnom dans le chemin du fichier).

Merci d'avance pour votre aide.

Cordialement
 

Pièces jointes

Solution
Bonjour.
Moi c'est le ActiveWorkbook.SaveAs qui me paraît étrange. Qu'est ce que le classeur actif vient faire là dedans si jamais ce n'est pas celui qui porte la macro ?
Et d'ailleurs si le classeur portant la macro est aussi le classeur actif, à quoi rime ces références à ThisWorkbook.FullName ? C'est partout, me semble-t-il, justement celui qui a été spécifié à ce SaveAs. Si on veut parler de celui qu'il y avait avant de le faire, il faudrait plutôt prendre celui noté auparavant dans une variable String.
Je ne vois pas comment ça pourrait boucler indéfiniment. Je suppose que la collection RecentFiles comporte beaucoup de membres …
Bonjour.
Moi c'est le ActiveWorkbook.SaveAs qui me paraît étrange. Qu'est ce que le classeur actif vient faire là dedans si jamais ce n'est pas celui qui porte la macro ?
Et d'ailleurs si le classeur portant la macro est aussi le classeur actif, à quoi rime ces références à ThisWorkbook.FullName ? C'est partout, me semble-t-il, justement celui qui a été spécifié à ce SaveAs. Si on veut parler de celui qu'il y avait avant de le faire, il faudrait plutôt prendre celui noté auparavant dans une variable String.
Je ne vois pas comment ça pourrait boucler indéfiniment. Je suppose que la collection RecentFiles comporte beaucoup de membres …
 
Dernière édition:
Bonjour,

Pour information seulement : hier j'ai fait une macro avec le même genre de boucle
For i = 1 To Application.RecentFiles.Count

et malgré le "Application.RecentFiles(i).Delete" à l'intérieur de la boucle, un espion sur "Application.RecentFiles.Count" m'indiquait toujours 25.
J'avais fait auparavant une boucle Do While, qui n'en finissait jamais pour la même raison.

J'ai excel 2019 et ce genre de boucle m'était familier et ne posait aucun problème dans mes versions précédentes d'excel.

Cordialement
 
Bonjour

Cette macro me sert à copier/coller une partie des données sur un fichier vierge identique et à supprimer le fichier que j'appellerais "temporaire" qui me sert à la copie.

Ce qui est bizarre c'est que la macro fonctionne nickel sur un autre fichier de structure similaire.

J'ai juste copié / collé la macro dans un module de mon nouveau fichier et là ça bug à la fin de ma macro pour supprimer le fichier actif...

i20100_
salut raf26,
si cette macro est intégré au fichier à supprimer, il n'y a rien a ajouter après
VB:Copier dans le presse-papier
Kill ThisWorkbook.FullName

Pas mieux avec juste ça

Dranreb
Moi c'est le ActiveWorkbook.SaveAs qui me paraît étrange.

J'ai supprimé ces lignes et effectivement cela fonctionne !

Bizarre que sur un fichier, c'est ok et sur un autre non. Mais bon, la macro me supprime bien ce fichier et c'est là le principal

Merci à vous pour vos contributions.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
68
  • Question Question
Microsoft 365 Erreur de Fichier
Réponses
16
Affichages
2 K
Réponses
5
Affichages
397
Réponses
2
Affichages
371
Réponses
2
Affichages
709
Réponses
35
Affichages
2 K
Réponses
7
Affichages
545
Retour