Accéder a la derniere ligne d'un tableau à l'ouverture d'un onglet

Bonjour ,

J'ai trouvé dans mes recherches comment écrire une macro pour accéder a la dernière ligne d'un tableau en partant du haut .

Mon soucis est que j'ai plusieurs tableau les uns en dessous des autres ( un tableau par mois de l'année ) et la fonction s'arrête au 1er tableau.

J'ai ensuite tenté en partant du bas de la feuille excel mais dans ce cas ma recherche s'arrete au bord bas du tableau, meme si les 10 dernieres lignes du tableau sont vides.

Dans le code je lance la recherche sur la colonne "B"

voici ce que j'ai essayé:

 Sub RechercheDerniereLigne()

  Cells(ActiveSheet.Rows.Count, 2).End(xlUp).Offset(1, 0).Selec

End Sub

Auriez vous une astuce pour soit que la recherche (xlDown) ne s'arrete pas au 1er tableau ou que la recherche (xlUp) ne s'arrete pas à la limite du tableau ?

Merci

Bonjour rocofolie,

Auriez vous une astuce

Oui, il suffit d'utiliser les outils que nous propose Excel. Utilise des tableaux structurés, tu n'auras aucun mal à récupérer la dernière ligne du tableau souhaité !

Bonne journée,

Baboutz

Bonjour ,

Merci pour ta réponse.

Quand tu parles de tableaux structurés, tu parles de mise sous forme de tableau avec des entête et un nom par tableau ?

Car de c'est de cette façon que j'ai procédé.

Bonne journée

Super !

Dans ce cas là, ce code te donne le N° de ligne de la dernière ligne du tableau :

    With Range("Nom_Tableau").ListObject
        MsgBox .ListRows(.ListRows.Count).Range.Row
    End With

Par contre ça te donne la limite du tableau. Donc si tu as des lignes vides, ça ne marche pas. Quels est l'intérêt d'avoir des lignes vides dans un tableau structuré ?

En fait j'ai plusieurs utilisateurs chacun à sa feuille avec ses 12 tableaux ( 1 par mois ).

Je récupère les données de chaque tableau pour faire une synthèse mensuelle.

J'ai figé la taille pour que chacun ai 30 lignes a disposition et que tout le monde ai la même structure.

Le fichier est protégé d'ailleurs pour éviter que chacun y aille de sa préférence et je gagne ainsi du temps pour la synthèse.

Re,

Dans ce cas là, ce code te donnera la dernière ligne non vide d'un tableau structuré :

Range("Nom_Tableau").ListObject.ListColumns(1).Range.Find("", SearchDirection:=xlNext).Row - 1

Ne pas oublier de renseigner le nom du tableau en question !

Bonne soirée,

Baboutz

Merci pour ton aide.

Mais le soucis c'est que je n'ai pas qu'un seul tableau.

J'ai un tableau pour Janvier , un tableau pour Février etc.... donc la j'aimerai arrivé a la dernière ligne non vide de Juillet lorsque j'ouvre la feuille.

Et pour le moment c'est la dernière ligne de Janvier qui est selectionnée.

C'est pour cette raison que j'envisageais de faire l'inverse avec un xlUp mais il s'arrête à la 1ere ligne vide en en bas du tableau de décembre :(

C'est logique , mais il faudrait qu'il s'arrête a la premiere ligne non vide de la colonne B en partant du bas.

Il est possible de modifier ce code pour qu'il s'arrête sur la 1ere cellule non vide de la colonne B ?

ActiveSheet.Range("B485").End(xlUp).Offset(1, 0).Select

Bonne journée

Bonjour,

Tu m'as dit :

Quand tu parles de tableaux structurés, tu parles de mise sous forme de tableau avec des entête et un nom par tableau ?

Car de c'est de cette façon que j'ai procédé.

Donc tu as des noms de tableaux. Donc il suffit de renseigner le nom du tableau de juillet dans la formule que je t'ai donnée pour avoir ton résultat...

Range("Nom_Tableau").ListObject.ListColumns(2).Range.Find("", SearchDirection:=xlNext).Row - 1

Avec un fichier anonymisé, je pourrai t'aider plus rapidement..

Bonne journée,

Baboutz

Bonjour tout le monde,

... je gagne ainsi du temps pour la synthèse.

Ça c'est ce que tu penses, mais il y a fort à parier que c'est très loin d'être le cas.

Rien ne justifie de mettre 12 tableaux structurés les uns sous les autres sur la même feuille. Rien (ou presque) ne justifie de laisser des lignes vides dans un tableau structuré (comme essaie de te le faire remarquer Baboutz depuis quelques posts).

Tu es donc pour le moment limité et embêté par la structure douteuse de ton fichier (comme dans bien des cas).

Bonjour à tous,

Voici un essai pour déterminer la première ligne vide dans un tableau structuré, en supposant que les saisies se suivent (sinon, il faut la déterminer autrement) :

with range("nomtableau")
    nvl = .rows.count - application.countblank(.columns(1)) + 1
end with

Je rejoins mes camarades. Si possible, il ne faut pas avoir de lignes vides, le tableau se restructurant seul (il faut faire confiance aux utilisateurs), et y ajouter une colonne "Mois" pour passer de 12 tableaux à un seul. Pour les synthèses, on choisit un TCD ou on ajoute une condition supplémentaire dans les formules SOMME.SI.ENS ou SOMMEPROD.

Cdlt,

Merci pour vos réponses.

J'ai bien conscience de ne pas m'y prendre comme il se doit avec les tableaux, je prend note de vos remarque et je vais revoir ma copie, en essayant de faire 1 seul tableau par an et par personne ?

Et mon soucis est de "figer" les tableaux , car j'ai déjà fais confiance aux utilisateurs mais ça ne fonctionne pas dans ce cas présent et ça me pose soucis de reporting.

J'ai fais un fichier neutre, protections ôtées, pour expliquer le soucis, même si je retravaille mon fichier par la suite, ça pourra toujours m'être utile .

Donc à l'ouverture de la feuille je remonte en testant sur la colonne A mais seulement jusqu'à la dernière cellule du dernier tableau, pas sur la dernière cellule non vide.

9tableaux-test.xlsm (58.94 Ko)

Effectivement, le mieux reste un seul et unique tableau. Tu as fixé la limite à 30, c'est par rapport au nombre de jours dans le mois ou aucun rapport ?

On peut voir quelque chose comme ça :

image

Pour chaque personne. Et après tu pourrai jouer avec un TCD, un Power Pivot, un segment, des combinaisons de ces outils... Afin de réaliser une synthèse, et crois-moi, ce sera bien plus efficace !

Bonjour,

Les 30 lignes n'ont pas de rapport avec les jours du mois.

Comme un tableau ne doit pas comporter de ligne vide mais que je dois protéger les feuilles , je pense ajouter un bouton pour l'ajout de ligne et une nouvelle colonne avec l'ajout automatique du mois en cours et de l'année lors de l'ajout de la nouvelle ligne.

Merci

Bonjour,

Déjà une douzaine d'échange et on n'a toujours pas avancé d'un millimètre.

Et si tu nous donnais un classeur en expliquant ce que tu envisages (c'est le but qui nous intéressent : pas les moyens fumeux que tu envisages ) :

On pourrait surement te dire comment le faire...

A+

Bonjour ,

Et merci pour le côté agréable de la réponse.

Donc, pour ton information, dans la douzaine d'échange j'ai donné un classeur mais effectivement il faut lire les échanges qui ne sont pas intéressant pour les experts je peux le concevoir.

Ca a avancé de plus d'un millimètre car j'utilisais mal les tableaux et en revoyant l'utilisation le problème est résolu.

J'en profite pour remercier les contributeurs Baboutz, JoyeuxNoel et 3GB, car ca me permet d'avancer vers d'autres problématique mais on sort du sujet de base.

Je vais donc indiquer ce problème comme résolu.

Bonne journée

Rechercher des sujets similaires à "acceder derniere ligne tableau ouverture onglet"