Rapport de message :*
 

Re: Supprimer UserForm

Titre du sujet : Re: Supprimer UserForm
par Guy le 17/03/2010 16:58:41

Bonjour beatbles,

Brouillon certainement, embrouillé identiquement. Mais, bon, l'important est d'arriver à quelque chose.

Pour ce faire je te propose une autre avenue qui évite de tomber en sciant la branche sur laquelle tu es assis.
Le classeur original SuppUser.xls porte trois modules dont tu veux te débarrasser à savoir :
  • Module5 (module standard)
  • UserForm2 (formulaire)
  • vUser (formulaire)
Voilà les branches à émonder.

Si on porte ces modules dans un autre classeur et que ce classeur est un addin ou complément les choses sont, ce me semble, plus simples.
Évidemment il faudrait avoir des indications plus précises sur le contexte où sera utilisé ce, ces classeurs pour raffiner ou modifier la méthode.
Tout traitement de données effectuées dans le classeur SuppUser.xls est effectué dans le classeur SuppUser.xla.

Le classeur à traiter (SuppUser.xls) ne porte qu'un seul module modTraiter et qu'une seule procédure dont il n'est nul besoin de se débarrasser.
Option Explicit

Sub Traiter()

  ' Si le addin SuppUser.xla n'est pas installé la procédure réagit en silence et tout baigne
  On Error Resume Next
 
  ' Comme tout le fatras est reporté dans SuppUser.xla il n'est plus besoin de détruire les
  ' divers modules ciblés, suffit simplement d'exécuter le traitement.
  Application.Run "SuppUser.xla!modTraiter.Traiter"
 
End Sub
 
Le classeur de traitement SuppUser.xla porte tout le code pour bidouiller les données, afficher les formulaires et tutti quanti.
La fonction Traiter() du classeur de traitement a été tiré de ton code et se lit comme suit :
Option Explicit

'---------------------------------------------------------------------------------------
' Procédure             : Traiter
' Date                  : mars 2010
' Auteur                : Guy Courville
'
' Description           : Ici on pourra coder la sauvegarde du classeur visé ou toute
'                         traitement souhaité.
'
' Détail                : Cette procédure est appelé depuis un classeur avec Application.Run()
'---------------------------------------------------------------------------------------
'
Public Sub Traiter()

  vUser.Show
  Unload vUser
  Unload UserForm2

End Sub

 

Tu pourras modifier, augmenter et corriger tout ce que tu voudras dans le code sans risquer de te casser le coup en tombant.

Évidemment si tu as d'autres questions ou quelques objections sur la méthode utilisée je suis toujours au bout de la toile

Cordialement,

Guy