A voir également:
- Excel barre de défilement trop longue
- Barre de défilement excel - Meilleures réponses
- Excel barre de défilement - Meilleures réponses
- Excel - Ajuster Bare de défilement verticale. ✓ - Forum - Excel
- Ajuster barre de défilement horizontale ✓ - Forum - Excel
- Excel - redimensionner barres de défilement - Forum - Excel
- Excel barre de défilement ne fonctionne pas ✓ - Forum - Excel
- Excel barre de défilement horizontale disparue ✓ - Forum - Bureautique
13 réponses
BlackPearl
Bonjour à tous,
Avec Excel 2003, il existe une technique assez simple pour ajuster la barre de défilement à droite.
Sélectionnez la ligne qui se trouve juste après la fin de votre tableau et faites un "Ctrl+Maj+flèche du bas" afin de sélectionner les lignes vides jusqu'à la fin des lignes existantes dans Excel soit 65536.
Ensuite faites un "Alt, E, S" à la suite (raccourci pour supprimer). Remonter en cellule A1 et "Ctrl+S" (enregistrer).
Normalement la barre devrait s'ajuster...
Avec Excel 2003, il existe une technique assez simple pour ajuster la barre de défilement à droite.
Sélectionnez la ligne qui se trouve juste après la fin de votre tableau et faites un "Ctrl+Maj+flèche du bas" afin de sélectionner les lignes vides jusqu'à la fin des lignes existantes dans Excel soit 65536.
Ensuite faites un "Alt, E, S" à la suite (raccourci pour supprimer). Remonter en cellule A1 et "Ctrl+S" (enregistrer).
Normalement la barre devrait s'ajuster...
lermite222
- Messages postés
- 8700
- Date d'inscription
- dimanche 8 avril 2007
- Statut
- Contributeur
- Dernière intervention
- 22 janvier 2020
Bonjour,
Il faut déterminer la plage, soit Ligne et colonne
Sheets("LaFeuille").ScrollArea = "a1:AA1000"
Pour remettre à toute la feuille
Sheets("LaFeuille").ScrollArea = ""
A+
Il faut déterminer la plage, soit Ligne et colonne
Sheets("LaFeuille").ScrollArea = "a1:AA1000"
Pour remettre à toute la feuille
Sheets("LaFeuille").ScrollArea = ""
A+
stranger-46
- Messages postés
- 25
- Date d'inscription
- lundi 5 juin 2006
- Statut
- Membre
- Dernière intervention
- 11 novembre 2010
Hm....je ne peux pas modifier mes post (enfin le premier). Tant pis.
Voici donc une capture d'écran pour récapituler ce que je cherche à faire :
http://pix.nofrag.com/8/f/0/aeafd388b9a2c53d0e357b7fda0dd.html
C'est un exemple basique.
En fait la macro en question me servirait pour tous les fichiers que j'utilise, pour ajuster automatiquement la barre verticale en fonction du nombre de lignes remplits.
J'espère que c'est assez claire comme explication.
Voici donc une capture d'écran pour récapituler ce que je cherche à faire :
http://pix.nofrag.com/8/f/0/aeafd388b9a2c53d0e357b7fda0dd.html
C'est un exemple basique.
En fait la macro en question me servirait pour tous les fichiers que j'utilise, pour ajuster automatiquement la barre verticale en fonction du nombre de lignes remplits.
J'espère que c'est assez claire comme explication.
eriiic
- Messages postés
- 23886
- Date d'inscription
- mardi 11 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 21 février 2021
Bonjour,
Si, à partir de la dernière ligne que tu veux voir, tu fais shift+ctrl+fleche bas pour sélectionner les dernière lignes et que tu les masques (clic-droit masquer) ça fait exactement ce que tu souhaites il me semble.
eric
Si, à partir de la dernière ligne que tu veux voir, tu fais shift+ctrl+fleche bas pour sélectionner les dernière lignes et que tu les masques (clic-droit masquer) ça fait exactement ce que tu souhaites il me semble.
eric
lermite222
- Messages postés
- 8700
- Date d'inscription
- dimanche 8 avril 2007
- Statut
- Contributeur
- Dernière intervention
- 22 janvier 2020
Beh y faut adapté la plage au nombre de ligne et colonne
Sheets("LaFeuille").ScrollArea = Range("A1").SpecialCells(xlCellTypeLastCell).address
Sheets("LaFeuille").ScrollArea = Range("A1").SpecialCells(xlCellTypeLastCell).address
stranger-46
- Messages postés
- 25
- Date d'inscription
- lundi 5 juin 2006
- Statut
- Membre
- Dernière intervention
- 11 novembre 2010
En fait le code que tu propose est bon, mais il présente des inconvénients pour mon utilisation.
En créant une nouvelle feuille, on voit que la scrollbar prend presque toute la place. En remplissant une 100aine de lignes elle diminue en taille. En remplissant 1000 lignes, la scrollbar diminue encore plus. De sorte à chaque fois pour atteindre la dernière ligne, il suffit de sélectionner la scrollbar et la descendre tout en bas.
Sauf que si je supprime 900 lignes ou j'avais entré les données précédemment, la scrollbar reste au meme niveau que pour les 1000, du coup pour atteindre ma 100ème ligne en passant par la scrollbar il me faut "chercher à tomber sur cette ligne" au lieu de tout simplement descendre la scrollbar au plus bas.
En fait pour comprendre rapidement mon problème, créez une nouvelle feuille > faites "CTRL" + "Flèche du bas", et remplissez la dernière cellule avec une donnée quelconque > faites "Etrée" > supprimer cette donnée et revenez à la cellule "A1". Essayez maintenant avec la barre de défilement d'atteindre la ligne 68. (sachant que dans ce cas on peut encore passer par la souris et sa molette, mais pour la ligne 23 152...) Constat, ce n'est pas pratique.
Avec le code de "ScrollArea", j'arrive à délimiter le champ de déroulement. C'est tres utile, mais ça présente l'inconvénient de :
1) L'aspect visuel de la scrollbar ne change pas. Donc l'utilisateur aura tendance à descendre la scrollbar au plus bas niveau pour voir finalement qu'elle n'est descendu que d'un quart pour atteindre la dernière ligne remplit. Certes c'est le but, mais là vient l'inconvénient N°2.
2) Nous ne pouvons pas descendre en dessous du champ délimité (ce qui est génant en cas de modification)
Concernant le dernier code proposé : Sheets("LaFeuille").ScrollArea = Range("A1").SpecialCells(xlCellTypeLastCell).address
C'est peut etre du à mon manque de connaissances en VBA, vu que je l'ai tout simplement copié/collé en remplaçant juste le nom de la feuille, j'arrive à descendre la scrollbar mais pas à la remonter. Donc obligé de fermer le classeur.
Bref, je pense que je peux reformuler ma question initiale :
Est-il possible de changer la taille de la barre de défilement verticale (VerticalScrollBar) pour qu'elle s'adapte au nombre de lignes avec une donnée. (voir screenshot plus haut)?
Merci, lermite222, de prendre la peine de chercher une solution à mon problème.
En créant une nouvelle feuille, on voit que la scrollbar prend presque toute la place. En remplissant une 100aine de lignes elle diminue en taille. En remplissant 1000 lignes, la scrollbar diminue encore plus. De sorte à chaque fois pour atteindre la dernière ligne, il suffit de sélectionner la scrollbar et la descendre tout en bas.
Sauf que si je supprime 900 lignes ou j'avais entré les données précédemment, la scrollbar reste au meme niveau que pour les 1000, du coup pour atteindre ma 100ème ligne en passant par la scrollbar il me faut "chercher à tomber sur cette ligne" au lieu de tout simplement descendre la scrollbar au plus bas.
En fait pour comprendre rapidement mon problème, créez une nouvelle feuille > faites "CTRL" + "Flèche du bas", et remplissez la dernière cellule avec une donnée quelconque > faites "Etrée" > supprimer cette donnée et revenez à la cellule "A1". Essayez maintenant avec la barre de défilement d'atteindre la ligne 68. (sachant que dans ce cas on peut encore passer par la souris et sa molette, mais pour la ligne 23 152...) Constat, ce n'est pas pratique.
Avec le code de "ScrollArea", j'arrive à délimiter le champ de déroulement. C'est tres utile, mais ça présente l'inconvénient de :
1) L'aspect visuel de la scrollbar ne change pas. Donc l'utilisateur aura tendance à descendre la scrollbar au plus bas niveau pour voir finalement qu'elle n'est descendu que d'un quart pour atteindre la dernière ligne remplit. Certes c'est le but, mais là vient l'inconvénient N°2.
2) Nous ne pouvons pas descendre en dessous du champ délimité (ce qui est génant en cas de modification)
Concernant le dernier code proposé : Sheets("LaFeuille").ScrollArea = Range("A1").SpecialCells(xlCellTypeLastCell).address
C'est peut etre du à mon manque de connaissances en VBA, vu que je l'ai tout simplement copié/collé en remplaçant juste le nom de la feuille, j'arrive à descendre la scrollbar mais pas à la remonter. Donc obligé de fermer le classeur.
Bref, je pense que je peux reformuler ma question initiale :
Est-il possible de changer la taille de la barre de défilement verticale (VerticalScrollBar) pour qu'elle s'adapte au nombre de lignes avec une donnée. (voir screenshot plus haut)?
Merci, lermite222, de prendre la peine de chercher une solution à mon problème.
lermite222
- Messages postés
- 8700
- Date d'inscription
- dimanche 8 avril 2007
- Statut
- Contributeur
- Dernière intervention
- 22 janvier 2020
Peut-être que cela sera mieux si tu met la dernière formule dans l'événement Change de la feuille, mais pour laisser une place pour d'éventuelle ajout...
Dim Col as long
Dim Lig as long
col = Range("A1").SpecialCells(xlCellTypeLastCell).column +2
Lig = Range("A1").SpecialCells(xlCellTypeLastCell).Rows + 2
Me.ScrollArea = Range(Cells(1,1),Cells(Lig,Col))
Dim Col as long
Dim Lig as long
col = Range("A1").SpecialCells(xlCellTypeLastCell).column +2
Lig = Range("A1").SpecialCells(xlCellTypeLastCell).Rows + 2
Me.ScrollArea = Range(Cells(1,1),Cells(Lig,Col))
stranger-46
- Messages postés
- 25
- Date d'inscription
- lundi 5 juin 2006
- Statut
- Membre
- Dernière intervention
- 11 novembre 2010
Bonjour,
lermite222 >>> en copiant ton code j'obtiens l'erreur suivante : "Invalid use of Me keyword"
eriiic >>> oui, j'ai deja utilisé cette astuce et si elle peut marcher pour mon utilisation ce ne sera pas le cas pour les autres utilisateurs.
En fait le problème, avec "scrollarea" et le fait de "cacher" les lignes non utilisées, est que celà ne peut etre utilisé de manière transparente pour l'utilisateur. A la limite pour mon utilisation personnelle le code "scrollarea" pourrait etre tres utile. Mais la macro ne sera pas destinée uniquement à mon usage.
Je cherche à créer une macro, qui par exemple à l'ouverture d'une feuille, va automatiquement et de manière transparente adapter la taille de la VerticalScrollbar au nombre de lignes non vides, tout en laissant la possibilité de continuer à remplir des 100 aines d'autres lignes s'il le faut.
D'ailleus j'aurais pensé que le code "scrollbar1.max=range("cellule").value " pouvait etre adapter à mon problème en changeant juste le "scrollbar1" par "verticalscrollbar", si seulement tout était aussi simple alors il me suffirais de compter le nombre de cellules non vides et la taille de la scrollbar changerait en fonction de cette valeur... mais ça c'est dans mes reves :(
Merci pour vos propositions, je continue à chercher en meme temps sur le net.
lermite222 >>> en copiant ton code j'obtiens l'erreur suivante : "Invalid use of Me keyword"
eriiic >>> oui, j'ai deja utilisé cette astuce et si elle peut marcher pour mon utilisation ce ne sera pas le cas pour les autres utilisateurs.
En fait le problème, avec "scrollarea" et le fait de "cacher" les lignes non utilisées, est que celà ne peut etre utilisé de manière transparente pour l'utilisateur. A la limite pour mon utilisation personnelle le code "scrollarea" pourrait etre tres utile. Mais la macro ne sera pas destinée uniquement à mon usage.
Je cherche à créer une macro, qui par exemple à l'ouverture d'une feuille, va automatiquement et de manière transparente adapter la taille de la VerticalScrollbar au nombre de lignes non vides, tout en laissant la possibilité de continuer à remplir des 100 aines d'autres lignes s'il le faut.
D'ailleus j'aurais pensé que le code "scrollbar1.max=range("cellule").value " pouvait etre adapter à mon problème en changeant juste le "scrollbar1" par "verticalscrollbar", si seulement tout était aussi simple alors il me suffirais de compter le nombre de cellules non vides et la taille de la scrollbar changerait en fonction de cette valeur... mais ça c'est dans mes reves :(
Merci pour vos propositions, je continue à chercher en meme temps sur le net.
eriiic
- Messages postés
- 23886
- Date d'inscription
- mardi 11 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 21 février 2021
Bonjour,
il me suffirais de compter le nombre de cellules non vides et la taille de la scrollbar changerait en fonction de cette valeur... mais ça c'est dans mes reves
C'est exactement ce que la la macro proposée par lermite...
remplace Me.ScrollArea par worksheets("nom_de_ta_feuille").ScrollArea et met la dans l'evenement open de ton classeur (dans ThisWorkbook)
et dans l'evenement 'change' des feuilles concernées
eric
il me suffirais de compter le nombre de cellules non vides et la taille de la scrollbar changerait en fonction de cette valeur... mais ça c'est dans mes reves
C'est exactement ce que la la macro proposée par lermite...
remplace Me.ScrollArea par worksheets("nom_de_ta_feuille").ScrollArea et met la dans l'evenement open de ton classeur (dans ThisWorkbook)
et dans l'evenement 'change' des feuilles concernées
eric
lermite222
- Messages postés
- 8700
- Date d'inscription
- dimanche 8 avril 2007
- Statut
- Contributeur
- Dernière intervention
- 22 janvier 2020
Pour terminer l'exposer de eric,
Me. ne peut être mis que dans une module de feuille. Pas dans un module générale ou ThisWorkbook.
Si tu met la macro du poste 6 dans les événement de feuilles.. Ca va fonctionner.
Si 2 lignes vides ne suffisent pas tu peut mettre +3,+5 etc..
Mais si tu veux ajouter un bloc de 100 lignes par exemple, tu met le curseur sur la dernière ligne vide, tu copie et comme l'événement change serra activé, le scroll serra automatiquement actualisé sur tes 100 lignes + 2.
Autre possibilité, si l'utilisateur va sur la première ligne vide et qu'il introduit quelque chose, automatiquement, il y aurra 2 lignes libres en dessous.
J'espère que c'est asser clair, sinon tu dit...
A+
Me. ne peut être mis que dans une module de feuille. Pas dans un module générale ou ThisWorkbook.
Si tu met la macro du poste 6 dans les événement de feuilles.. Ca va fonctionner.
Si 2 lignes vides ne suffisent pas tu peut mettre +3,+5 etc..
Mais si tu veux ajouter un bloc de 100 lignes par exemple, tu met le curseur sur la dernière ligne vide, tu copie et comme l'événement change serra activé, le scroll serra automatiquement actualisé sur tes 100 lignes + 2.
Autre possibilité, si l'utilisateur va sur la première ligne vide et qu'il introduit quelque chose, automatiquement, il y aurra 2 lignes libres en dessous.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Col as long Dim Lig as long col = Range("A1").SpecialCells(xlCellTypeLastCell).column +2 Lig = Range("A1").SpecialCells(xlCellTypeLastCell).Rows + 2 Me.ScrollArea = Range(Cells(1,1),Cells(Lig,Col)) End Sub
J'espère que c'est asser clair, sinon tu dit...
A+
stranger-46
- Messages postés
- 25
- Date d'inscription
- lundi 5 juin 2006
- Statut
- Membre
- Dernière intervention
- 11 novembre 2010
Ok, merci pour toutes ces précisions.
Alors j'ai essayé de tester le code comme vous me le conseillez, mais j'ai toujours l'erreur: "Type mismatch" sur la ligne en gras
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Col As Long
Dim Lig As Long
Col = Range("A1").SpecialCells(xlCellTypeLastCell).Column + 2
Lig = Range("A1").SpecialCells(xlCellTypeLastCell).Rows + 2
Worksheets("Sheet1").ScrollArea = Range(Cells(1, 1), Cells(Lig, Col))
End Sub
Pareille pour :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Col As Long
Dim Lig As Long
Col = Range("A1").SpecialCells(xlCellTypeLastCell).Column + 2
Lig = Range("A1").SpecialCells(xlCellTypeLastCell).Rows + 2
Me.ScrollArea = Range(Cells(1, 1), Cells(Lig, Col))
End Sub
Je fais mal quelque chose?
Alors j'ai essayé de tester le code comme vous me le conseillez, mais j'ai toujours l'erreur: "Type mismatch" sur la ligne en gras
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Col As Long
Dim Lig As Long
Col = Range("A1").SpecialCells(xlCellTypeLastCell).Column + 2
Lig = Range("A1").SpecialCells(xlCellTypeLastCell).Rows + 2
Worksheets("Sheet1").ScrollArea = Range(Cells(1, 1), Cells(Lig, Col))
End Sub
Pareille pour :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Col As Long
Dim Lig As Long
Col = Range("A1").SpecialCells(xlCellTypeLastCell).Column + 2
Lig = Range("A1").SpecialCells(xlCellTypeLastCell).Rows + 2
Me.ScrollArea = Range(Cells(1, 1), Cells(Lig, Col))
End Sub
Je fais mal quelque chose?
lermite222
- Messages postés
- 8700
- Date d'inscription
- dimanche 8 avril 2007
- Statut
- Contributeur
- Dernière intervention
- 22 janvier 2020
Excuse, j'ai cru que c'érait simple mais en fait c'est un peu plus compliqué...
Pas nécessaire de mettre dans ThisWotkbook mais dans les feuilles
Maintenant j'ai testé et ca fonctionne comme dit...
A+
Pas nécessaire de mettre dans ThisWotkbook mais dans les feuilles
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Col As Long, A Dim Lig As Long Application.EnableEvents = False 'Quand définit A, tourne en rond... Me.ScrollArea = "" 'si pas libérer plante quand ont définit plus grand. A = Range("A1").SpecialCells(xlCellTypeLastCell).Address Col = Range(A).Column + 2 Lig = Range(A).Row + 2 n'Pas de 'S' à Row Me.ScrollArea = Range(Cells(1, 1), Cells(Lig, Col)).Address Application.EnableEvents = True End Sub
Maintenant j'ai testé et ca fonctionne comme dit...
A+
stranger-46
- Messages postés
- 25
- Date d'inscription
- lundi 5 juin 2006
- Statut
- Membre
- Dernière intervention
- 11 novembre 2010
Ok, le code marche cette fois, je pensais que j'étais vraiment de main gauche sur le coup :)
Par contre il y a un autre problème ...
Je travaille sur une feuille qui à la base avait 400 lignes occupaient, j'en ai effacé 300.
Et la macro détecte les 400 lignes et non pas les 100 remplits, du coup le drilldown va jusqu'a à la 400ème ligne au lieu de la 100ème...
L'important c'est que le code marche et je l'ai vu à l'oeuvre.
Néanmoins je ne pense pas l'utiliser. Car ce que je cherchais c'est une transparence totale pour l'utilisateur, et je sais que j'aurais deja à donner les memes explications que tu m'as donné plus haut (pour les nouvelles lignes etc.), ce que je veux éviter.
En tout cas un grand merci à toi "lermite222", ton code a été utile d'une certaine manière car je pense que je pourrais l'utiliser pour moi perso. Puis j'imagine que ce que je veux n'est pas toujours réalisable.
Merci aussi à toi "eriiic" pour ton conseil.
PS: je continue mes recherches de mon coté, si je trouve une solution je l'écris ici :)
A +
Par contre il y a un autre problème ...
Je travaille sur une feuille qui à la base avait 400 lignes occupaient, j'en ai effacé 300.
Et la macro détecte les 400 lignes et non pas les 100 remplits, du coup le drilldown va jusqu'a à la 400ème ligne au lieu de la 100ème...
L'important c'est que le code marche et je l'ai vu à l'oeuvre.
Néanmoins je ne pense pas l'utiliser. Car ce que je cherchais c'est une transparence totale pour l'utilisateur, et je sais que j'aurais deja à donner les memes explications que tu m'as donné plus haut (pour les nouvelles lignes etc.), ce que je veux éviter.
En tout cas un grand merci à toi "lermite222", ton code a été utile d'une certaine manière car je pense que je pourrais l'utiliser pour moi perso. Puis j'imagine que ce que je veux n'est pas toujours réalisable.
Merci aussi à toi "eriiic" pour ton conseil.
PS: je continue mes recherches de mon coté, si je trouve une solution je l'écris ici :)
A +
mz soft
pour les connaisseurs programme soft
1-afficher les fichiers cachés de l'éxcel
2-voir le fichier *.pif ajuster toutes les mesures de ton choix fix@*
1-afficher les fichiers cachés de l'éxcel
2-voir le fichier *.pif ajuster toutes les mesures de ton choix fix@*
stranger-46
- Messages postés
- 25
- Date d'inscription
- lundi 5 juin 2006
- Statut
- Membre
- Dernière intervention
- 11 novembre 2010
Bonjour lermite222,
Ta solution ne me correspond pas vraiment. Je viens de modifié mon premier post avec une capture d'écran pour mieux visualiser ce que je cherche à faire.
Voici le lien :
http://pix.nofrag.com/8/f/0/aeafd388b9a2c53d0e357b7fda0dd.html
Ta solution ne me correspond pas vraiment. Je viens de modifié mon premier post avec une capture d'écran pour mieux visualiser ce que je cherche à faire.
Voici le lien :
http://pix.nofrag.com/8/f/0/aeafd388b9a2c53d0e357b7fda0dd.html
MJ