Atteindre la dernière ligne non vide d'un tableau

Bonjour

Je voudrais d'abord souhaiter à tous un joyeux noël et une bonne année.

Je suis actuellement sur l'élaboration d'une applic de compte et je me trouve confronté à un Pb du genre :

j''incrémente des lignes de dépenses et périodiquement je fais mon rapprochement. Mais quand je fais fin de rapprochement le tableau se positionne en cellule 3 (début de tableau) et moi je voudrais que le curseur se positionne dans la dernière cellule non vide de la dernière colonne (J dans mon cas) . Avec 20 lignes pas de Pb mais avec 600 lignes c'est une perte de temps et pas gracieux de le faire avec l'ascenseur. Attention je veux atteindre la dernière cellule non vide et pas la dernière cellule du tableaux qui lui compte 1500 liges pré remplie avec des formules .

Je vous remercie pour votre aide.

Daniel

Bonjour,

Merci de joindre un fichier exemple.

Je ne te demande pas si tu utilises un tableau (tel qu'il est proposé avec Excel 2007).

A te relire, peut-être.

Cdlt.

nota : tu disposes de 1048576 lignes. Pourquoi te limiter a des formule pré-établies sur 1500 lignes?

Voir copie du fichier joint.

160copie-compte.xlsm (170.50 Ko)

bonsoir Jean Eric, gardan et le forum

gardan ton fichier est protégé si tu veux de l'aide ce n'est pas comme cela qu'il faut procédé

Pascal

effectivement je n'ai pas enlevé le MtP

made2015

Re,

Voir fichier modifié et me redire.

Cdlt.

85copie-compte.xlsm (50.35 Ko)
Option Explicit
'Option Private Module

Public Sub Onglets_consolider()
Dim ws As Worksheet, wsTotal As Worksheet
Dim lo As ListObject
Dim lRow As Long

    Application.ScreenUpdating = False

    Set wsTotal = Worksheets("Total")

    With wsTotal
        Set lo = .ListObjects(1)
        If Not lo.DataBodyRange Is Nothing Then lo.DataBodyRange.Delete
    End With

    lRow = 2

    'For Each ws In Worksheets(Array("CA-courant", "CE-courant ", "CA-carte", "Especes"))
        Set ws = Worksheets("CA-courant")
        Set lo = ws.ListObjects(1)
        lo.DataBodyRange.Offset(1, 0).Resize(lo.ListRows.Count - 1, lo.ListColumns.Count - 1).Copy
        With wsTotal
            .Cells(lRow, 1).PasteSpecial xlPasteValues
            lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
        End With
        Application.CutCopyMode = False
    'Next ws

    With wsTotal
        .PivotTables(1).PivotCache.Refresh
        .ListObjects(1).ShowAutoFilter = False
    End With

    Set lo = Nothing
    Set wsTotal = Nothing

End Sub

rebonjour

Merci pour le code, mais j'ai essayé de le coller dans les macro existantes mais cela ne marche pas . Merci quand même

Bonjour,

Tu pourrais peut-être dire ce qui ne fonctionne pas?

Cdlt.

Bonjour

Désolé pour le manque d'info

je n'ai pas vu la ligne avec sub donc j'ai rajouté sub croyant que cette macro pouvait être autonome. , ce n'était pas ça.

J'ai rajouté le code dans la macro "finCArapportCarte" et ça ne marche pas non plus.

Bonjour

Je vois que ce Pb n'est pas peut être pas si simple aussi je vais chercher une autre voie pour contourner le Pb.

Merci quand même pour les réponses apportées.

Bonjour et bonne année,

Copie ce code, dans ton vrai classeur. Les modifications apportées sont surlignées.

A te relire.

Cdlt.

Option Explicit
'Option Private Module

Public Sub Onglets_consolider()
Dim ws As Worksheet, wsTotal As Worksheet
Dim lo As ListObject
Dim lRow As Long

    Application.ScreenUpdating = False

    Set wsTotal = Worksheets("Total")

    With wsTotal
        Set lo = .ListObjects(1)
        If Not lo.DataBodyRange Is Nothing Then lo.DataBodyRange.Delete
    End With

    lRow = 2

    For Each ws In Worksheets(Array("CA-courant", "CE-courant ", "CA-carte", "Especes"))
        Set lo = ws.ListObjects(1)
        lo.DataBodyRange.Offset(1, 0).Resize(lo.ListRows.Count - 1, lo.ListColumns.Count - 1).Copy
        With wsTotal
            .Cells(lRow, 1).PasteSpecial xlPasteValues
            lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
        End With
        Application.CutCopyMode = False
    Next ws

    With wsTotal
        .PivotTables(1).PivotCache.Refresh
        .ListObjects(1).ShowAutoFilter = False
       .Cells(lRow - 1, 9).Select
        MsgBox ActiveCell
    End With

    Set lo = Nothing
    Set wsTotal = Nothing

End Sub

Bonjour

Je viens de trouver sur le blog une solution qui marche impec. C'est avec la macro suivante.

Sub bas_de_page()

'

' bas_de_page Macro

'

'

With Sheets("Feuil1")

Set plage = Range("A7:A" & Cells(Rows.Count, 1).End(xlUp).Row)

plage.SpecialCells(xlCellTypeBlanks).Cells(1, 1).Select

End With

End Sub

Je remercie tous ceux qui m'ont répondu.

Daniel

Rechercher des sujets similaires à "atteindre derniere ligne vide tableau"