Excel VBA - Suppression de Module & UserForm

Résolu
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 - 25 janv. 2008 à 09:57
Whismeril Messages postés 18216 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 février 2023 - 1 déc. 2022 à 08:46
Bonjour,
J'ai un formulaire dans Excel qui contient des modules et des UserForms.
Lorsque le document est archivé, je voudrais pouvoir supprimer les modules et les UserForms afin de l'alléger en terme d'octets pour des question d'espace disque.

Merci de vos solutions
<?xml:namespace prefix <gras>v ns "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype> </gras>Cliquer "Réponse Acceptée"
Partageons Notre Savoir & Nos Acquis - JML

4 réponses

nanardino64 Messages postés 131 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 17 mars 2010
25 janv. 2008 à 10:07
Salut à toi,
Ben lors de ton archivage tu n'as qu'à extraire les feuilles à archiver vers un nouveau fichier puis archiver ce dernier, c'est le plus simple pour mes connaissance enfin moi je fais comme ça.

Nanardino64
Développons-nous, développeurs.
3
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
25 janv. 2008 à 16:05
Salut François
C'est aussi ce que je fais normalement mais là je me trouve avec des formulaires (ffichiers) qui peuvent contenir jusqu'à 20 feuilles et plus ... aussi je trouvais plus simple de supprimer les modules et Userforms
Je vais laisser ce point ouvert jusqu'à lundi des fois que ...

Bon week-end
<?xml:namespace prefix <gras>v ns "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype> </gras>Cliquer "Réponse Acceptée"
Partageons Notre Savoir & Nos Acquis - JML
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
28 janv. 2008 à 10:02
Il faut se rendre à l'évidence, ça n'a pas interpellé les foules
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype> Cliquer "Réponse Acceptée"
Partageons Notre Savoir & Nos Acquis - JML
0
Codor_2023 Messages postés 2 Date d'inscription mercredi 30 novembre 2022 Statut Membre Dernière intervention 1 décembre 2022
1 déc. 2022 à 01:42

Salut JM270L

Ce que tu demandes est possible mais il y a un petit risque il faudrait savoir à l'avance si en supprimant ton Formulaire, tu seras obligé de passer par un Module Class pour recréer en quelque sorte ce que tu souhaite détruire.

Code:

' --- Créer un userform et controls par code :
' --- Cocher ref: Microsoft forms 2.0 Object Library : Via Onglet Menu/Outils/Références ...

Option Explicit

Sub mOnAction_ActiveXForms_Create()

  Dim oUSRF As Object                                                  ' --- Variable Objet UserForm à créer.
  Dim oLbL As MSForms.Label                                  ' --- Variable Objet Label à créer.
  Dim oCmdB As MSForms.CommandButton      ' --- Variable Objet ComboBox à créer.
  Dim AddObjEvent$                                                       ' --- ou As String ($), pour Script d'évènement.
  Dim iNbrLignes&                                                           ' --- ou As Long (&), pour lignes du code.


  ' --- Étiquette et Gestion d'erreur ---
   VBA.Information.Err.Clear
   On Error GoTo Fin
   On Error Resume Next

  '---- Créer dynamiquement un UserForm ----
  Set oUSRF = ThisWorkbook.VBProject.VBComponents.Add(3)
  With oUSRF
            ' --- Paramètrer les propriétés de l'objet UserForm ----
           .Properties("Caption") = "UserForm à la volée"
           .Properties("Height") = 240
           .Properties("Width") = 320

          '---- Créer le bouton de fermeture du ComandeButton ----
           Set oCmdB = .Designer.Controls.Add("forms.CommandButton.1")
          ' --- Paramètrer les propriétés de l'objet ComboBox ----
           With oCmdB
                    .Caption = "Fermer"
                    .Left = 200
                    .Top = 180
           End With

           '---- Créer le Label / étiquette du titre ----
            Set oLbL = .Designer.Controls.Add("forms.Label.1")
            ' --- Paramètrer les propriétés de l'objet LABEL :
            With oLbL
                     .Caption = "Mon texte"
                     .TextAlign = fmTextAlignCenter
                     .Left = 20
                     .Top = 20
                     .BackColor = vbRed
                    .BorderStyle = fmBorderStyleSingle
           End With

      ' °°° Ajout du code évènementiel  pour le CommandButton au niveau du USF créé °°°
        ' --- Création du bloc de procédure pour le Bouton  ---
          AddObjEvent$ = "Sub CommandButton1_Click()" & vbCrLf & "Unload Me" &  _

          vbCrLf & "End Sub"
        ' --- contenu du bloc de procédure ---
          With  .CodeModule
                     iNbrLignes& = .CountOfLines
                    .InsertLines INbrLignes& + 1, AddObjEvent$
         End With

         ' °°° Ajout du code évènementiel procédurial pour le Label au niveau du Formulaire créé °°°
           ' --- Création du bloc de procédure pour le Label  ---
             AddObjEvent$ = "Sub Label1_Click()" & vbCrLf & "MsgBox " &  _

          """Vous avez cliqué sur mon _ texte""" & vbCrLf & "End Sub"
           ' --- contenu du bloc de procédure --
             With .CodeModule
                       iNbrLignes& = .CountOfLines
                      .InsertLines iNbrLignes& + 1, AddObjEvent$
             End With

           '---- Affiche le UserForm ----
            VBA.UserForms.Add(.Name).Show

           '---- Détruit le UserForm ----
            ThisWorkbook.VBProject.VBComponents.Remove oUSF ' <<<<<<<<<<< supprime l'userf

' ---- Sortir de la procédure ---
Exit Sub
Fin:
  On Error GoTo 0
End Sub

------------------------------------------------

NB: Bonne chance - Inchallah!

0
Whismeril Messages postés 18216 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 février 2023 623
Modifié le 1 déc. 2022 à 08:47

Bonjour 

vu que la question est marquée résolue depuis 2008, est-ce nécessaire ?


D'autre part, pour poster un code merci de faire comme décrit là https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

0
Rejoignez-nous