Figer la barre de défilement suivant condition

Bonjour,

Je souhaite créer un code VBA pour figer la barre de défilement horizontal et verticale automatiquement sur tout le classeur suivant :

- dernière cellule non vide +1 de la feuille

(l'idée est de ne pas pouvoir défiler vers le bas ou vers la droite si les cellule sont vide)

J'ai commencé un code mais sans succès...

Merci d'avance pour votre aide

Private Sub worksheet_activate()
Dim DerniereCelluleRemplie
DerniereCelluleRemplie = Columns("g:g").Find("*", Range("g1"), , , xlByRows, xlPrevious).Rows
Range("A1" & DerniereCelluleRemplie).ActiveSheet.ScrollArea
End Sub

Bonjour

Essayez comme ceci

Private Sub worksheet_activate()
With ActiveSheet
    .ScrollArea = .UsedRange.Address
End With
End Sub

si ok -->

Cordialement

Edit : Où ceci aussi par rapport à votre code

Private Sub worksheet_activate()
Dim DerniereCelluleRemplie as long
DerniereCelluleRemplie = Range("G" & Rows.Count).End(xlUp).Row
ScrollArea = Range("A" & DerniereCelluleRemplie).Address
End Sub

Super ça marche bien merci!

Par contre j'ai deux question :

- comment on fait pour désactiver l'action?

- peut on faire cette action sur toutes les feuilles du classeur?

Merci d'avance

- comment on fait pour désactiver l'action?

Vous pouvez exécuter ce code

Sub test()
With ActiveSheet
    .ScrollArea = .Cells.Address
End With
End Sub

- peut on faire cette action sur toutes les feuilles du classeur?

Oui. Placez ce code dans Thisworkbook au lieu du précédent qui se plaçait dans les feuilles

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim DerniereCelluleRemplie as long
With ActiveSheet
    DerniereCelluleRemplie = Range("G" & Rows.Count).End(xlUp).Row
    .ScrollArea = Range("A" & DerniereCelluleRemplie).Address
End With
End Sub

Crdlt

Bonjour Dan,

Merci pour votre réponse, seulement la barre de défilement ce fige a la dernière cellule non vide et rend impossible le défilement!

Merci pour votre réponse

Bonjour

Si vous regardez ce lien --> https://forum.excel-pratique.com/s/goto/1057804. Je vous ai proposé une autre solution. Cela donne ceci :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
With ActiveSheet
    .ScrollArea = .UsedRange.Address
End With
End Sub

Cordialement

Bonjour Dan,

Je m'excuse mais le code ci-dessous ne fonctionne pas.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
With ActiveSheet
    .ScrollArea = .UsedRange.Address
End With
End Sub

Le code ci-dessous fige toutes la page a la dernière cellule non vide de la colonne "G"

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim DerniereCelluleRemplie as long
With ActiveSheet
    DerniereCelluleRemplie = Range("G" & Rows.Count).End(xlUp).Row
    .ScrollArea = Range("A" & DerniereCelluleRemplie).Address
End With
End Sub

Idéalement j'aimerai :

- figer la barre de défilement de haut en bas suivant la dernière cellule non vide +1 de la colonne "G"

- figer la barre de défilement latérale de la colonne "A" jusqu'à la colonne "G" +1.

Merci d'avance pour votre retour

Bonjour,

Je m'excuse mais le code ci-dessous ne fonctionne pas.

Si il fonctionne très bien (je l'ai d'ailleurs utilisé pendant des années pour mon travail). Il utilise la plage remplie de votre feuille
Vous avez bien placé ce code dans Thisworbook ?

- figer la barre de défilement de haut en bas suivant la dernière cellule non vide +1 de la colonne "G"
- figer la barre de défilement latérale de la colonne "A" jusqu'à la colonne "G" +1.

Essayez ceci :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim DerniereCelluleRemplie As Long
With ActiveSheet
    DerniereCelluleRemplie = .Range("G" & Rows.Count).End(xlUp).Row + 1
    .ScrollArea = "A1:H" & DerniereCelluleRemplie
End With
End Sub

si ok-->

Cordialement

Bonjour Dan,

Merci pour votre réponse c'est effectivement fonctionnel dans "thisworbook".

Par contre si cela s'applique à tous les onglets, les dernières lignes et les dernières colonnes sont variable et doivent avoir 1 ligne et 1 colonne supplémentaire.

J'ai essayé de modifier votre code dans ce sens, mais sans résultat probant.

Pouvez-vous m'aider?

Merci de votre retour.

Bah alors il faut alors connaitre le nom des feuilles où cela doit s'appliquer ou non pour ajouter des conditions dans le code

Ben pour le coup il faudrait l'appliquer à tous les onglets!

Et donc dans chaque onglets, il faut trouver la dernière ligne rempli de toutes les colonnes et la dernière colonne remplie de toutes les lignes?

Et donc dans chaque onglets, il faut trouver la dernière ligne rempli de toutes les colonnes et la dernière colonne remplie de toutes les lignes?

En gros oui. Sans voir votre fichier c'est difficile de vous donner une réponse exacte

Rechercher des sujets similaires à "figer barre defilement suivant condition"