Discussion : Dernière cellule d'une colonne affichant une valeur Aux alentours du 13/12/1999 Requete initiale : Comment atteindre la dernière cellule d'une colonne affichant une valeur en sachant qu'il y a des cellules "faussement vides" comme par ex : * =SI(A1;"";"";A1) * =A1 n'affiche rien si A1 est vide alors que c'est égal à 0 (option...'afffichage des zéros) Reponses : activecell.end(xldown).select Une instruction : DerLigne = cells.find("*", [A1], , , xlByrows, xlPrevious).Row (par jim) C'est plus fiable que cells.specialcells(xlCelltypeLastCell), dans la mesure où cette dernière propriété renvoie la dernière cellule formaté de la feuille, même si celle-ci est vide. Macro : dim I As long for I = [A:A].find("*", [A1], , , , xlPrevious).Row to 1 Step -1 if cells(I, 1).Text <> "" And cells(I, 1).Text <> "0" then Exit for next I cells(I, 1).select ****************************************************************************** Autres solutions qui semblent-t-il ne résistent pas à un "faux vide" que représente le non affichage des valeurs 0 Sub lst() 'Inspiré de tom Ogilvy 'ok même si cellules vides col = "A" set rng = range(cells(1, col), cells(rows.count, col).end(xlUp)) 'cells(1, col) = A1, cells(rows.count, col) = A65536 'cells(rows.count, col).end(xlUp) si A65536 est vide, la dernière cell.non vide de col.A 'rng plage de A1 jusqu'à derniere cell. non vide de colonne A msgbox rng.address for each cell In rng 'on balaie la plage msgbox cell.value & " dans " & cell.address next end Sub ---------------------------------------------------------- Sub lst2() 'tom Ogilvy 'pas ok si cellules vides set rng = range(cells(1, "A"), cells(1, "A").end(xldown)) 'on s'arrête avant la première vide ... ou à la première non vide si début vide ! for each cell In rng msgbox cell.value & " dans " & cell.address next end Sub ---------------------------------------------------------- Sub lst3() 'tom Ogilvy 'ok même si cellules vides set rng = range(cells(1, "A"), cells(rows.count, "A").end(xlUp)) for i = 1 to rng.rows.count 'compteur égal au nombre de lignes de la plage msgbox rng(i).value & " dans " & rng(i).address next end Sub ---------------------------------------------------------- Sub lst4() 'tom Ogilvy 'pas ok si cellules vides set rng = range("A1") While Not IsEmpty(rng) 'on s'arrête sur 1ère cell. vide msgbox rng.value & " dans " & rng.address set rng = rng(2) 'passer à la cellule suivante ' or set rng = rng.Offset(1,0) Wend end Sub ---------------------------------------------------------- Sub dernCell() 'ça c'est moi tout seul :-( 'sauf si A65536 n'est pas vide col = activecell.Column lettreCol = Mid(Columns(col).address, 2, _ application.find(":", Columns(col).address) - 2) set finCol = cells(rows.count, col).end(xlUp) msgbox "dernière cellule col. " & col & " (col. " _ & lettreCol & ") = " & finCol.address _ & Chr$(10) & "valeur = " & finCol end Sub ---------------------------------------------------------- ****************************************************************************** De: Laurent longre Objet: Re: derniere valeur Date : jeudi 30 mars 2000 20:29 comment faire pour obtenir la derniere valeur d'une colonne qui est différent de 0. exemple en a400 je voudrais avoir le contenu de la derniere cellule en a1 et a366 différent de 0 Par exemple (pour la plage A1:A1000) : =INDEX(A:A;MAX((A1:A1000<>0)*LIGNE(A1:A1000))) formule à valider par Ctrl-Maj-Entré. De: dominique Objet: Re: Dernière donné d'une ligne Date : jeudi 30 mars 2000 16:48 On souhaite pouvoir sélectionner la dernière donnés d'une ligne. Réponse précieuse donné par Laurent il y a très peu de temps : Dernière valeur de la ligne 1 : =INDEX(1:1;MAX(COLONNE(1:1)*(1:1<>""))) formule à valider par la combinaison de touches Ctrl-Maj-Entré.