Affichage
Bonjour le forum
ayant un userform avec beaucoup de controles, j'ai un décallage à l'affichage des tous ces controles
donc j'ai regroupé en 5 frames (2, 15,22,28 et30)
et je me suis dit , peut être à tort que:
en rendant tout non visible
puis en rendant tout visible sauf les 5 frames
puis enfin en rendant les 5 frames (ou sont dispatchés mes controles) visibles (à la fin)
j'aurais pas ce petit décallage que j'ai à l'affichage
de tous mes controles
qu'en pensez-vous?
Si ca fonctionne j'aimerais une aide pour le code ce je peine un peu:
Sub Visibility() ' Tout faire apparaitre
Dim Ctrl As Control
With UserForm1
For Each Ctrl In .Controls
Ctrl.Visible = False 'Rend invisible
If (Name(Ctrl) = "Frame3") Or (Name(Ctrl) = "Frame12") Or (Name(Ctrl) = "Frame19") Or (Name(Ctrl) = "Frame20") Or (Name(Ctrl) = "Frame21") Or (Name(Ctrl) = "Frame22") Or (Name(Ctrl) = "Frame23") Or (Name(Ctrl) = "Frame24") Then
Ctrl.Visible = False 'Rend invisible
Else
Ctrl.Visible = True 'Rend visible
End If
.Frame3.Visible = True
.Frame12.Visible = True
.Frame19.Visible = True
.Frame20.Visible = True
.Frame21.Visible = True
.Frame22.Visible = True
.Frame23.Visible = True
.Frame24.Visible = True
Next Ctrl
End With
End Sub
Désolé, erreur de manip pour ma procédure:
Sub Visibility() ' Tout faire apparaitre
Dim Ctrl As Control
With UserForm1
For Each Ctrl In .Controls
Ctrl.Visible = False 'Rend invisible
Next Ctrl
If (Name(Ctrl) <> "Frame2") And (Name(Ctrl) <> "Frame15") And (Name(Ctrl) <> "Frame22") And (Name(Ctrl) <> "Frame28") And (Name(Ctrl) <> "Frame30") Then
Ctrl.Visible = True 'Rend visible
End If
.Frame2.Visible = True
.Frame15.Visible = True
.Frame22.Visible = True
.Frame28.Visible = True
.Frame30.Visible = True
End With
End Sub
Merci pour votre aide
Séb
Bonjour,
J'ai quelques doute sur les raisons du décalage que tu indiques.
Un Userform s'affiche avec ses contrôles dotés des propriétés par défaut (que tu as éventuellement fixées dans la fenêtre de propriété). Si tu modifies les propriétés par défaut avec une procédure Initialize, celle-ci s'exécute avant l'affichage.
Si l'affichage a du mal à se mettre à jour, c'est plutôt du côté de la carte graphique que je regarderais.
Cordialement
Ferrand
Merci Pour cette réponse
Je précise donc la situation
j'ai rendu tout invisible dans mon userform, sauf une frame ( Frame1) qui contient des boutons de commandes
et suivant la commande, tout ou partie du reste de l'userform s'affiche.
C'est à ce moment là qu'il y a un décallage ( qu'il n'y a pas si je fais afficher tout l'userform dès le début)
Séb
Sub Visibility() ' Tout faire apparaitre
Dim Ctrl As Control
Voilà le code que j'ai écrit (tous les controles autres que le boutons de commandes sont rassemblés dans la Frame25)
Auparavant j'avais tout rendu invisible sauf les boutons de commandes, et quand je click sur l'un des boutons...
With UserForm1
For Each Ctrl In .Controls
If Ctrl.Name = "Frame25" Then
Ctrl.Visible = False
Else
Ctrl.Visible = True
End If
Next Ctrl
.Frame25.Visible = True
End With
End Sub
Ainsi tout apparait d'un seul coup sans décalage
A bientôt le forum