Rapport de message :*
 

Re: Supprimer UserForm

Titre du sujet : Re: Supprimer UserForm
par Guy le 18/03/2010 18:33:00

Bonjour beatbles,

As-tu testé la solution proposée?

Citation :
vous partez vers des réponses qui ne vont pas dans ce que je cherche

Tu cherches à supprimer du code pour le soustraire à la vue indiscrète de copieurs de code
Citation :
C'est une sorte de sécurité contre les curieux que je désire installé.

Pour ce faire la solution proposé présentait un classeur dépourvu de code!

Un simple mot de passe pour ce code ne suffirait-il pas?

Je sais bien, très bien même, que ce genre de protection est cassable en deux tours de cuiller à pot mais je sais tout aussi bien que la chose n'est pas à la portée du premier usager ou codeur venu. D'autant que le code en question ne refera pas la théorie des automates programmables ni le fondement de la complétude de Turring.

En plus des liens proposés hier, voici l'avis d'un autre codeur  «Thanks, but for same reson it doesn't work anyway. The cursor goes through all lines but same Forms/Modules aren't erased.» au www.xtremevbtalk.com/archive/index.php/t-141844.html .

Alors essayons quelque chose d'autre :

Dans code du classeur SuppUser.xls établir une référence à VBIDE.  Pour ce faire menu Outils/Références... formulaire Références - VBAProject fouiller pour trouver dans la liste Microsoft Visual Basic for Applications Extensibility 5.3.

Une fois cette référence ajoutée au projet VBA, porter cette modification au code de la procédure RemoveComponent()

Sub RemoveComponents()

  Dim comp As VBComponent

  With ActiveWorkbook.VBProject
 
    For Each comp In .VBComponents
   
      If comp.Type = vbext_ct_MSForm Then
     
        comp.CodeModule.DeleteLines 1, comp.CodeModule.CountOfLines
       
      End If
     
    Next comp
   
  End With
 
End Sub

On remarquera que cette fois le code exécuté dans le module5 ne supprime pas le code exécuté dans le module5 (la redite est fortement volontaire). Seulement les lignes de code des deux, ou de quelconque, formulaires sont supprimées.

À l'exécution de la procédure Lance() et suite à la réouverture du classeur le code du module5 est intact, les formulaires UserForm2 et vUser sont toujours là mais ne portent plus aucun code, aucun.

Et il n'est nullement à craindre que Citation :
De maniére également que l'on puisse pas non plus récupérer le programme dans la corbeille.
puisque le code supprimé est retourné au néant et pas du tout dans la corbeille. Soyons et restons rassurés.

Teste la chose et donne m'en des nouvelles. Il y a sans doute trente-six autres moyens de faire ce que tu cherches à faire. Nous y allons par élimination.

Cordialement,

Guy

P.S. À noter que je viens juste de passer de membre régulier à membre semi-pro alors faut pas trop m'en demander...