Excel VBA - Naviguer dans un très grand userform
Résolu/Fermé
A voir également:
- Excel VBA - Naviguer dans un très grand userform
- Liste déroulante excel - Guide
- Si et excel - Guide
- Excel trier du plus grand au plus petit - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
5 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
25 juin 2021 à 11:37
25 juin 2021 à 11:37
Bonjour,
voir ceci:
https://www.commentcamarche.net/faq/48339-deplacer-avec-la-souris-un-userform-sans-barre-de-fenetre
voir ceci:
https://www.commentcamarche.net/faq/48339-deplacer-avec-la-souris-un-userform-sans-barre-de-fenetre
Bonjour,
Merci d'avoir pris le temps de me lire.
J'ai testé le code que vous me proposiez sur mon USF. Cela fonctionne avec la souris, mais incomplètement, même avec l'exemple donné, puisqu'on ne peut pas "sortir" de l'écran par le haut.
De plus, il faut que le déplacement de l'USF se fasse automatiquement, en fonction de la position de la voiture.
Je vais essayé d'adapter ce code pour l'automatiser, mais je ne suis pas sûr que cette approche soit la bonne.
Pour info, j'ai dans d'autres applis des USF très hauts dans lesquels je peux monter et descendre sans problème avec la souris ou le curseur du scroll bar. Je suppose donc que c'est possible.
Merci d'avoir pris le temps de me lire.
J'ai testé le code que vous me proposiez sur mon USF. Cela fonctionne avec la souris, mais incomplètement, même avec l'exemple donné, puisqu'on ne peut pas "sortir" de l'écran par le haut.
De plus, il faut que le déplacement de l'USF se fasse automatiquement, en fonction de la position de la voiture.
Je vais essayé d'adapter ce code pour l'automatiser, mais je ne suis pas sûr que cette approche soit la bonne.
Pour info, j'ai dans d'autres applis des USF très hauts dans lesquels je peux monter et descendre sans problème avec la souris ou le curseur du scroll bar. Je suppose donc que c'est possible.
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
Ambassadeur
1 557
25 juin 2021 à 14:05
25 juin 2021 à 14:05
bonjour,
Tu n'as pas essayé avec de bonnes valeurs gauche et haute. Essaie avec des valeurs beaucoup plus petites.
As-tu affiché, à chaque étape, les valeurs de Me.ScrollTop & Me.ScrollLeft, par exemple via msgbox?
Cela t'éclairera.
Tu n'as pas essayé avec de bonnes valeurs gauche et haute. Essaie avec des valeurs beaucoup plus petites.
As-tu affiché, à chaque étape, les valeurs de Me.ScrollTop & Me.ScrollLeft, par exemple via msgbox?
Cela t'éclairera.
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
1 557
25 juin 2021 à 15:41
25 juin 2021 à 15:41
suggestion, pour tester:
Private Sub CommandButton1_Click() 'lancer la voiture Debug.Print "scroll " & Me.ScrollHeight & " " & Me.ScrollWidth Debug.Print "Me " & Me.Height & " " & Me.Width; "" If Application.Width < Me.Width Then 'Test si la fenètre Horizontale < le formulaire Me.ScrollWidth = Me.Width 'Taille du scrollbar horizontal Me.Width = Application.Width End If If Application.Height < Me.Height Then 'Test si la fenètre Verticale < le formulaire Me.ScrollHeight = Me.Height 'Taille du scrollbar horizontal Me.Height = Application.Height End If Debug.Print "scroll " & Me.ScrollHeight & " " & Me.ScrollWidth Debug.Print "Me " & Me.Height & " " & Me.Width Dim oldtop As Single, oldleft As Single Me.ScrollLeft = 0 Me.ScrollTop = 0 Do oldtop = Me.ScrollTop Me.ScrollTop = Me.ScrollTop + 1 oldleft = Me.ScrollLeft Me.ScrollLeft = Me.ScrollLeft + 1 DoEvents Loop Until oldtop = Me.ScrollTop And oldleft = Me.ScrollLeft Debug.Print oldtop Debug.Print oldleft End Sub
Merci de cette réponse et de cette piste. J'ai essayé des tas de valeurs différentes, grandes ou petites, mais je bloque toujours sur le même point. En fait, il semblerait que le formulaire ne remonte pas au-delà d'une certaine valeur, pareil pour le déplacement vers la droite. La position maxi indiquée par le msgbox est 216, pour le haut, comme pour le côté.
J'ai essayé avec toutes les positions de l'userform (manuel, center,...).
Je me demande si le problème ne viendrait pas de la déclaration des scrollbars du formulaire, pourtant cela ressemble à ce que j'ai fait dans d'autres applis, sauf que là, j'ai les deux barres (horizontales et verticales).
Une idée ?
J'ai essayé avec toutes les positions de l'userform (manuel, center,...).
Je me demande si le problème ne viendrait pas de la déclaration des scrollbars du formulaire, pourtant cela ressemble à ce que j'ai fait dans d'autres applis, sauf que là, j'ai les deux barres (horizontales et verticales).
Me.Height = 1300: Me.Width = 2000 Me.ScrollHeight = Me.Height + 100: Me.ScrollWidth = Me.Width + 100
Une idée ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
En fait, comme toujours, il faut rechercher la simplicité... surtout en informatique !
J'ai trouvé la solution en me passant des scrollbars et en positionnant simplement le USF avec me.top et me.left. Cela marche parfaitement.
Merci à tous les deux pour vos suggestions ; elles m'ont aidées dans mon cheminement.
Bon week-end
En fait, comme toujours, il faut rechercher la simplicité... surtout en informatique !
J'ai trouvé la solution en me passant des scrollbars et en positionnant simplement le USF avec me.top et me.left. Cela marche parfaitement.
Merci à tous les deux pour vos suggestions ; elles m'ont aidées dans mon cheminement.
Bon week-end
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
1 557
26 juin 2021 à 10:59
26 juin 2021 à 10:59
peux-tu alors marquer la discussion comme résolue?
TonyLucky
>
yg_be
Messages postés
23406
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 décembre 2024
26 juin 2021 à 13:55
26 juin 2021 à 13:55
En tant que visiteur libre, je n'ai pas accès à la fonction résolue.
Sans vouloir abuser, pouvez-vous avoir la gentillesse de le faire si vous pouvez.
Merci et bon week-end
Sans vouloir abuser, pouvez-vous avoir la gentillesse de le faire si vous pouvez.
Merci et bon week-end