Rechercher : dans
Par :

Excel : Détection dernière ligne d'un tableau

Dernière réponse le 27 jun 2008 à 08:33:24 alainjjb, le 26 jun 2008 à 21:54:49 
 Signaler ce message aux modérateurs

Bonjour,
je viens de créer (vite dit car c'est un de vous qui me l'avez transmis) une macro d'insertion de ligne en fin de tableau Excel (2 méthodes qui réagissent de la même manière) :
1°) Sub insert1_ligne()
DerniereLigne = (Range("A1").SpecialCells(xlCellTypeLastCell).Row)
ligne = DerniereLigne - 1
Rows(ligne).Select
Selection.Insert Shift:=xlDown
2°) Sub insert2_ligne()
Dim ligne As Long
ligne = (Cells.SpecialCells(xlCellTypeLastCell).Row) - 1
Rows(ligne).Select
Selection.Insert Shift:=xlDown

Au début tout se passe à merveille. La ligne es insérée correctement. Mais lorsque je supprime des lignes du tableau, la dernière ligne est détectée comme si les lignes supprimées existaient tjs.

Quelqu'un peut-il me dire ce qui peut bien se passer ?

Merci d'avance

Alain

Configuration: Windows XP
Firefox 2.0.0.14

Meilleures réponses pour « Excel : Détection dernière ligne d'un tableau » dans :
Figer une ligne dans un tableau Excel VoirPour figer la ligne 1 (par exemple) dans une feuille excel : Sélectionnez la ligne 2, Puis allez dans le menu "Fenêtres" et option "Figer les volets".
Fichier CSV VoirFormat CSV Un fichier CSV est un fichier tableur, contenant des données sur chaque ligne séparés par un caractère de séparation (généralement une virgule ou un point-virgule). Comment lire un fichier CSV ? Il peut être lu avec un tableur tel que...

1

m@rina, le 26 jun 2008 à 22:26:21
  • +1

Bonsoir,

Le mieux est de partir d'en bas, afin d'atteindre la dernière cellule de la colonne :

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

C'est aussi simple que ça ! ;)

m@rina

Répondre à m@rina

2

alainjjb, le 26 jun 2008 à 22:54:47

Bonsoir M@rina,
c'est aussi simple que ça ... pour toi car je n'ai même pas compris le résultat de cette commande.
A65536 : ce nombre correspond à quoi ? (le nbre maxi de lignes d'un tableau ?)
Range("A65536").End(xlUp).Offset(1, 0).Select : me positionne sur la 1ère cellule de la dernière ligne valorisée ?

Merci pour ces futures précisions

Alain

Répondre à alainjjb

3

m@rina, le 26 jun 2008 à 23:41:42

Bonsoir Alain,

Oui 65536 est le nombre maximum de lignes d'un classeur Excel 2002-2003, car pour la version 2007, c''est 1048576 lignes !

Donc on part de la dernière ligne : Range("A65536")

End(xlUp) permet de se déplacer à la fin de la zone de l'objet Range prédéfini, avec une direction déterminée par Up (vers le haut). C'est comme si tu appuyais sur les touches Ctrl+Flèche Haut. Tu atteins donc la dernière cellule utilisée dans la colonne A à coup sûr puisque tu es parti du plus bas possible.

Offset(1, 0) permet de décaler la cellule d'une ligne et de 0 colonne, afin de descendre sur la première ligne se trouvant en dessous de la dernière ligne utilisée.

Euh... c'est plus clair ?.. ;))

m@rina

Répondre à m@rina

4

 alainjjb, le 27 jun 2008 à 08:33:24

Bonjour m@rina,
merci beaucoup pour ces explications. Si avec ça je n'ai tjs pas compris je me remets au crayon et au papier.
Bonne journée à toi
Alain

Répondre à alainjjb
Collection CommentÇaMarche.net