Microsoft 365 Classeur s'autodétruit si l'username de l'utilisateur n'est pas reconnu

  • Initiateur de la discussion Initiateur de la discussion pat66
  • 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 !

pat66

XLDnaute Impliqué
Bonjour le forum,

est 'il possible qu'un classeur s'autodétruise si à l'ouverture de celui, l'username de l'utilisateur ne fait pas parti d'une liste saisie dans un champs de cellule

merci beaucoup pour votre aide

cdt
 
tiens un autre exemple pour toi @fanch55
je vais lancer 10 fois le même vbs qui luimême va afficher un msgbox (donc bloquant puisque modal)
et bien tu va voir que les 10 sont lancés sans attendre la fin de l'instance précédente
comme j'injecte un argument j'utiliserais ici le shell.automation
et oui !! on peut l'appeler avec arguments
VB:
Sub test()
    Dim x&, codevbs$, vbsfile$
    vbsfile = ThisWorkbook.Path & "\destructeur.vbs"
    codevbs = "fself = WScript.ScriptFullName" & vbCrLf
    'codevbs = codevbs & "msgbox wscript.arguments.Count" & vbCrLf
    codevbs = codevbs & "msgbox ""lancement N° "" & WScript.Arguments(0)" & vbCrLf
    codevbs = codevbs & "if WScript.Arguments(0) = 10 then" & vbCrLf
    codevbs = codevbs & "Set objFSO = CreateObject(""Scripting.FileSystemObject"")" & vbCrLf
    codevbs = codevbs & "objFSO.deletefile fself" & vbCrLf
    codevbs = codevbs & "end if" & vbCrLf
    x = FreeFile
    Open vbsfile For Output As #x: Print #x, codevbs: Close #x
    For i = 1 To 10
        Set oWsh = CreateObject("Shell.Application")
        oWsh.ShellExecute vbsfile, i
    Next
End Sub
ça me ramène a pas mal d'années en arrière ça 🤣 🤣😉
 
je vais lancer 10 fois le même vbs qui luimême va afficher un msgbox (donc bloquant puisque modal)
et bien tu va voir que les 10 sont lancés sans attendre la fin de l'instance précédente
C'est portnawak ma poule !
Comment pourrait-il en être autrement ???
Tu lances 10 instances, certes d'un même script, mais 10 instances donc autonomes et du coup comment pourraient-elles influer les unes sur les autres ?


Enfin j'dis ça mais j'y connais rien...
 
re
Bonjour @TooFatBoy
c'est bien ce que je dis chaque instance n'a rien a voir avec l'autre
c'est ce que j'essaie d'expliquer a @fanch55 qui se demande pourquoi je peux supprimer le fichier vbs lui même dans son propre code
en fait on voit bien dans la gestion de tache que ce n'est pas les vbs qui sont en route mais seulement le wscript.exe qui exécute les commande du vbs
1710569909722.png
 
Bonjour à tous
Une autre approche de l'ami @Staple1600 :
https://excel-downloads.com/threads/macro-autodestruction.100505/post-571194
Et une de @Dranreb

Cordialement
 
c'est ce que j'essaie d'expliquer a @fanch55 qui se demande pourquoi je peux supprimer le fichier vbs lui même dans son propre code
OK, je sais qu'on n’exécute jamais un fichier source mais ce dernier chargé en mémoire .
Je pensai toutefois que le système mettait un flag indiquant que la source était en utilisation exclusive .
Le Vbscript ou le Vb sait faire mais pas le Vba .... C'est noté . 😶
 
Bonjour,
Ce n'est pas une affaire de VB ou de VBA c'est le logiciel qui manipule le fichier qui verrouille le fichier en l'occurrence excel.

j'i vais de ma touche!
VB:
Sub AutoDestruction()
    Dim fso As Object
    Dim f As Object
    Dim cheminScript As String
    Dim scriptContent As String
    
    ' Chemin où le script VBScript sera enregistré
    cheminScript = ThisWorkbook.Path & "\SupprimerClasseur.vbs"
    
    ' Créer le contenu du script VBScript
    scriptContent = "fself = WScript.ScriptFullName" & vbCrLf & _
                    "Set objExcel = getobject(,""Excel.Application"")" & vbCrLf & _
                    "Set objWorkbook = objExcel.Workbooks(""" & ThisWorkbook.Name & """)" & vbCrLf & _
                    "objWorkbook.Close False" & vbCrLf & _
                    "Set objFSO = CreateObject(""Scripting.FileSystemObject"")" & vbCrLf & _
                    "objFSO.DeleteFile """ & ThisWorkbook.FullName & """" & vbCrLf & _
                    "objExcel.Quit" & vbCrLf & _
                    "objFSO.deletefile fself"
    
    ' Écrire le contenu du script VBScript dans un fichier
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.CreateTextFile(cheminScript, True)
    f.Write scriptContent
    f.Close
    
    ' Exécuter le script VBScript
    Shell "wscript """ & cheminScript & """", vbNormalFocus
End Sub
 
Dernière édition:
- 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

Réponses
4
Affichages
281
Réponses
11
Affichages
341
Réponses
4
Affichages
240
Retour