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

Rechercher des sujets similaires à "affichage"