Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Renomer un UserForm

1 réponse
Avatar
Thierry
Bonsoir,

j'utilise la macro jointe pour créer un UserForm.
La première fois que je lance cette macro, aucun problème,
la feuille "TestModule" est bien créer.

Si je supprime cette feuille et relance la macro,
la nouvelle feuille se nome "UserForm1"
Impossible de recréer "TestModule", sauf si je ferme mon classeur et l'ouvre
à nouveau.
Le problème ne se pose pas avec "UserForm1", "UserForm2" etc...
Je peux les supprimer et les re-créer autant de fois que je veux.

Si j'essai de renomer manuellement le UserForm1 en "TestModule"
cela me renvoi "Erreur d'accès Chemin/Fichier".

Pouvez vous m'expliquer ce qui cloche et comment y remédier.

Merci , en passant, à Frédéric Sigonneau pour son site, d'où vient ce code.
Et bien sur à l'auteur de ce code.

Merci pour votre aide,
Thierry.


'Attribute VB_Name = "AjouterModuleDansClasseur"
'créer un module dans un classeur
'(Stéphane Royer, mpfe)

Sub test()
'crée un module standard nommé "TestModule" dans le classeur actif
CreateNewModule ActiveWorkbook, 1, "TestModule"
End Sub

Sub CreateNewModule _
(ByVal wb As Workbook, _
ByVal ModuleTypeIndex As Integer, _
ByVal NewModuleName As String)
'nécessite que la bibliothèque
'Microsoft Visual Basic For Applications Extensibility 5.x
'soit cochée
' creates a new module of ModuleTypeIndex
'(1=standard module, 2=class module, 3=userform) in wb
' renames the new module to NewModuleName (if possible)

Dim VBC As VBComponent, mti As Integer

Set VBC = Nothing
mti = 0
Select Case ModuleTypeIndex
Case 1: mti = vbext_ct_StdModule ' standard module
Case 2: mti = vbext_ct_ClassModule ' class module
Case 3: mti = vbext_ct_MSForm ' userform
End Select
If mti <> 0 Then
On Error Resume Next
Set VBC = wb.VBProject.VBComponents.Add(mti)
If Not VBC Is Nothing Then
If NewModuleName <> "" Then
VBC.Name = NewModuleName
End If
End If
On Error GoTo 0
Set VBC = Nothing
End If
End Sub

1 réponse

Avatar
Thierry
Petite correction dans le code,
il faut lire
CreateNewModule ActiveWorkbook, 3, "TestModule"
et non
CreateNewModule ActiveWorkbook, 1, "TestModule"

Thierry.