Code pour remonter en haut d'une liste

Bonjour,

Je suis débutant en BVA et nouveau sur ce forum

Je veux créer une macro pour selectionner la première cellule d'une colonne (simplement pour remonter à la 1ère ligne rapidement)

(Pour atteindre le bas mon tableau le code

Selection.End(xlDown).Select

fontionne)

J'ai essayé enregistrant une macro en utilisant ctrl et la flèche bas droite/haut gauche. Mais le code ainsi créé est

Range("A5").Select

Ce qui me convient quand mon tableau est entièrement visible mais si je ne selectionne qu'une partie des lignes (et cache la 5ème ligne), la cellule A5 masquée est atteinte sans pour autant faire remonter mon tableau en haut.

Pas très facile d'expliquer mon problème, j'espère avoir tout de même été assez clair...

Merci à celle ou celui qui pourra m'aider

Bonjour,

Avec un fichier ce serait plus facile de comprendre sinon essayez plutot ceci pour déterminer la dernière ligne. Exemple en colonne A

Range("A" & rows.count).end(xlup).row

Cordialement

Bonjour pierregrall, le fil (Dan)

J'ajoute... Wilco et

Pour connaitre la dernière colonne "non vide"

Columns.Count.End(xlToLeft).Column

Pour aller à la colonne "non vide suivante"

End(xlToRight).column

bonjour,

"Ce qui me convient quand mon tableau est entièrement visible mais si je ne selectionne qu'une partie des lignes (et cache la 5ème ligne), la cellule A5 masquée est atteinte sans pour autant faire remonter mon tableau en haut."

Normallement vous arrivez dans A4, quand A5 est "filtré" (or la ligne 5 is "hidden = hauteur 0), c'est ça que vous voulez, ou c'est A5 ?

DernierLigneColonneA = [max(if(a:a<>"",row(a:a),0))]
DerniereColonneLigne1 = [max(if(1:1<>"",column(1:1),0))]

Bonjour et merci à vous trois pour vos réponses rapides.

Sans fichier ma question ne devait pas être claire, je vous le joints donc.

Sur la feuille "liste biomet à faire" j'ai un bouton haut et un autre bas, pour atteindre d'un clic le haut ou le bas de ma liste.

En cliquant sur les entêtes, on selectionne toute la liste ou une partie.

le bouton bas fonctionne, pas le haut (qui ne fonctionne qu'avec la liste entière.

Je vous souhaite une bonne journée ensoleillée

Déjà vous devriez supprimer les modules qui ne servent pas. Il y en a 32 !!!

essayez ceci pour le bas

Range("A" & Range("A" & Rows.Count).End(xlUp).Row).Select

pas le haut (qui ne fonctionne qu'avec la liste entière.

Oui logique. Que voulez-vous ? Avoir la première ligne visible sélectionnée ?

Cordialement

Edit : pour le haut essayez ceci. A noter que votre feuille était protégée

Dim plage As Range

With ThisWorkbook.ActiveSheet
    .Unprotect
    Set plage = .Range("A5:A" & Range("A" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
    plage.Cells(1).Select
    .Protect
End With
End sub

Si ok -_>

Cordialement

Re bonjour,

Merci Dan ! Vos lignes de code fonctionnent très bien !

Quant aux modules, je vais chercher sur la toile comment ça marche et supprimer tous ceux qui sont vides...j'ai encore beaucoup à apprendre.

Et merci à tous ceux qui m'ont répondu

bonjour,

si vous ajoutez ceci dans "thisworkbook", vous pouvez oublier tous ces "protect" et "unprotect" dans les macros

Private Sub Workbook_Open()
     With Sheets("liste biomet a faire")
          .Unprotect
          .Protect userinterfaceonly:=True     'VBA peut functionner dans cette feuille protégée
     End With
End Sub

Alors, le code de @Dan, sans unprotect et protect doit fonctionner.

La premiere ligne vide au bout de vos données

Sub NouvelleLigne()
     '**************************************************************************************
     'pour se positionner dans la même colonne que l'activecell, mais dans la ligne suivante la derniere A-cellule non-vide
     '**************************************************************************************
     dernierlignecolonneA = [max(if(a:a<>"",row(a:a),0))]
     With ActiveCell
          Application.Goto .Offset(dernierlignecolonneA - .Row, 1 - .Column), 1     'A-cellule de cette ligne a gauche et au top
          Application.Goto .Offset(dernierlignecolonneA - .Row), 0     'puis va vers la colonne active
     End With
End Sub
Rechercher des sujets similaires à "code remonter haut liste"