Bonjour, cs_Jack,
On évite d'appeler un Form par son index, mais par son nom.
Les indexes sont attribués dans l'ordre de chargement des Forms.
De surcroit : fais ce petit test :
Sur Form1, un bouton et ce code :
Private Sub Command1_Click()
If Form2 Is Nothing Then MsgBox "oui" Else MsgBox "non"
End Sub
Tu n'as à ce stade pas chargé Form2, n'est-ce-pas ? Et pourtant Form2 n'est pas nothing
Ce qui est fait là est donc bon, puisque les forms ont été mis dans une matrice et que l'on se sert de l'index de la matrice et non du form dans la collection Forms.
A Herve_be :
J'ai bien compris ton mécanisme, mais là n'est pas ton problème ... et j'insiste, en te répétant :
- que l'instruction Load ne charge pas à nouveau un Form déjà chargé (et donc présent dans la collection Forms). Pour qu'il le recharge, il faut que l'instruction Unload ait été utilisée !
- qu'il suffit de se référer à un Form ou à l'un de ses contrôles pour que ce Form se charge automatiquement, s'il n'est pas déjà chargé !
Mais siu tu tiens absolument à faire ton test de non chargement (bien que, je le répète, ton problème est ailleurs) ===>>
voilà un exemple (totalementy inutile ...)
Private Sub Command1_Click()
MsgBox form_existe(Form2) ' t'affichera false
Load Form2
DoEvents
MsgBox form_existe(Form2) ' t'affichera maintenant True
End Sub
Private Function form_existe(f As Form) As Boolean
Dim f1 As Form
For Each f1 In Forms
If f1 Is f Then
form_existe = True
Exit For
End If
Next
End Function
Remplace Form2 Par n'importe quel prgm( x )
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend