Excel - Ajuster Bare de défilement verticale. [Résolu]

Excel - Ajuster Bare de défilement verticale. Excel comment reduire la barre de defilement Curseur de défilement de cellule dans une page excel ScrollBar dans une cellule [Résolu] (Résolu) » Forum - Bureautique Trait vertical dans un graphique Excel (Résolu) » Forum - Excel Défilement vertical impossible sous Excel 2010 [Résolu] » Forum - Excel Excel ajustement auto taille de la cellule [Résolu] (Résolu) » Forum - Excel Word barre de defilement verticale disparue [Résolu] (Résolu) » Forum - Word

Bonjour,

Je cherche à faire une macro, pour que la barre de défilement verticale (à droite donc) s'ajuste automatiquement au nombre de lignes non vides.

Par exemple j'ai une base de donnée d'un milliers de lignes, par défaut ma barre verticale est bien ajustée, c'est à dire lorsque je la selectionne et la descend au plus bas, elle se retrouvera à la hauteur de ma 1000ème ligne. Mais si je fais une mauvaise manipulation (un "CTRL" + "Shift" + "Fleche en bas" sur une cellule vide), je me retrouve avec une sélection allant jusqu'à la ligne 65536. Dans ce cas, la barre verticale est ajutée en fonction et c'est assez compliqué de retrouver ma 1000ème ligne en passant par la barre de défilement verticale...

En cherchant un peu sur internet j'ai trouvé le code : scrollbar1.max=range("cellule").value sauf que chez moi ça ne marche pas, erreur : "Object required". Et puis rien ne garantit que c'est le bon code pour mon problème. D'autant plus que j'ai aussi trouvé la dénomination : "verticalscrollbar" qui à mon avis correspond plus à la barre de défilement verticale, mais comment lui associer une valeur?

Quelqu'un aurait-il une idée?

PS: je suis plutot nul en VBA, donc excusez-moi si j'ai fais des erreurs.

Merci par avance.

Forum

Excel - Ajuster Bare de défilement verticale. Excel comment reduire la barre de defilement Curseur de défilement de cellule dans une page excel ScrollBar dans une cellule [Résolu] (Résolu) » Forum - Bureautique Trait vertical dans un graphique Excel (Résolu) » Forum - Excel Défilement vertical impossible sous Excel 2010 [Résolu] » Forum - Excel Excel ajustement auto taille de la cellule [Résolu] (Résolu) » Forum - Excel Word barre de defilement verticale disparue [Résolu] (Résolu) » Forum - Word

Web: www.shapebootstrap.net

32 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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...

Merci BlackPearl 96

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 25903 internautes ce mois-ci

Reply
réponses:
  • auteur

  • auteur

    Merci beaucoup pour l'info, super

  • auteur

    parfait, merci beaucoup!!!

  • auteur

    Sauvée !! Merci.

  • auteur

    Même cinq ans plus tard, ça m'a bien aidé !

    Merci ;)

  • auteur

    Cette fois, j'ai un fichier sur lequel ça ne fonctionne pas :-(

    C'est un .xlsm ça pourrait en être la cause ?

  • auteur

    Merci

  • auteur

    Merci !

  • auteur

    thks !

  • auteur

    Merci !

  • auteur

    Un grand merci

  • auteur

    MERCI ça a super bien marché

  • auteur

    Merci beaucoup !!

  • auteur

    Merci, ça marche toujours avec Excel 2013

  • auteur

    Merci ! Le coup de supprimer les cellules je m'en doutais, mais il suffisait de quitter et revenir sur le fichier et ça marche ! Gratitude !!! d:-)

  • auteur

    Trop fort, merci :)

  • auteur

    Çà marche toujours autant merci !

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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+

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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.

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Beh y faut adapté la plage au nombre de ligne et colonne
Sheets("LaFeuille").ScrollArea = Range("A1").SpecialCells(xlCellTypeLastCell).address

Reply
réponses:
  • stranger-46

    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.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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))

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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.

Reply
réponses:
  • eriiic

    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

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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.

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+

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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?

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

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+

Reply
réponses:
  • yacine090910

    salut;
    merci pour prg pour limité la feuil hor. / verti. c'est réussi

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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 +

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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 [email protected]*

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed