Nom form dans une variable pour modifier plusieurs forms
Bonjour
je pêche sur ce cas malgré mes recherches.
Je souhaite ouvrir ou modifier, ou les 2 toute une série de userform car il contienne tous certains éléments commun.
J'appelle donc mes formulaires : formperm1, formperm2, formperm3,.... formperm12.
j'ai fait ce code à titre de test mais cela ne fonctionne pas :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
Option Explicit
Dim a As Single
Dim nform As UserForm
Dim nume As String
Sub testform()
For a = 1 To 12
nume = "formperm" & a
Set nform = nume
nform.Show
nform.Label1.Caption = "essai"
nform.Hide
Set nform = Nothing
Next
End Sub |
j'ai essayé cela sans succes :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
Option Explicit
Dim a As Single
Dim nform As UserForm
Dim nume As String
For a = 1 To 12
Set nform = "formperm" & a
nform.Show
nform.Label1.Caption = "essai"
nform.Hide
Set nform = Nothing
Next
End Sub |
il plante sur la ligne du set car "nume" est incompatible. Se que je comprends car nume est une variable de type string et je veux rentrer un objet.
Comment faire pour pouvoir faire fonctionner ce bout de programme ?
Petite précision, j'ai pensé à boucler sur l'ensemble des forms mais j'ai peur que se soit trop long car j'ai d'autres formulaires dans mon projet
j'ai écrit cela :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
Sub testform1()
For Each nform In ThisWorkbook.VBProject.VBComponents
If nform.Type = 3 Then
If Left(nform.Name, 8) = "formperm" Then
nform.Show
nform.Label1.Caption = "essai"
MsgBox "reussi"
End If
End If
MsgBox "suite"
Next
End Sub |
J'ai l'erreur : "la méthode 'vbproject' de l'objet '_workbook' a échoué !!!"
Avez vous des pistes à me donner ?
Merci pour votre aide
on avance mais reste la gestion
Bonjour et merci à pijaku pour sa proposition,
Cela fonctionne bien avec ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11
| Sub Essai()
Dim nom As String, i As Integer, Usf As Object
For a = 1 To 12
nom = "formperm" & a
Set Usf = VBA.UserForms.Add(nom)
Load Usf
Usf.saisnumperm.Caption = "essai"
Next
Set Usf = Nothing
formperm1.Show 0
End Sub |
Par contre un problème le champ que j'essaie de remplir reste vierge ???
Normalement l'userform est chargé et devrait se remplir mais là non ?
Pour la fermeture j'ai essayé cela sans succès non plus :
Code:
1 2 3 4 5 6 7 8 9 10 11
| Sub Essai()
Dim nom As String, i As Integer, Usf As Object
For a = 1 To 12
nom = "formperm" & a
Set Usf = VBA.UserForms.Add(nom)
Load Usf
Usf.saisnumperm.Caption = "essai"
Next
Set Usf = Nothing
formperm1.Show 0
End Sub |
Pouvez vous me dire où est mon erreur ?
Le but de cette manipulation de 12 userform est de remplacer mon multipage qui me fait planter le programme (voir post précédent pour lequel je n'ai pas de solutions).
Apparement j'effectue trop de manipulation dans le multipage, qui fait planter excel lorsque j'essaie de remplir un objet dans le multipage au final.
chaque page du multipage est refait dans un userform
J'ouvre les 12 userforms en masqué sauf 1 et l'utilisateur passera de l'un à l'autre.
A la fin je récupère les données dans chaque userform et je les fermes tous.
Cordialement
Merci pour votre aide,