Recherche dernier n° de ligne d'un tableau Excel filtré [Résolu]

Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
30 octobre 2011
- - Dernière réponse : cs_GG72
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
30 octobre 2011
- 25 août 2011 à 20:14
Bonjour,

Je travaille sur un tableau Excel qui se présente de la façon suivante:

1 T1 T2 T3
2 12 28 A
3 45 37 D
4 58 44 E
5 45 24 C
6 67 87 C

Si j'applique un filtre sur la colonne A (par exemple valeur 45) j'obtiens donc ceci:

1 T1 T2 T3
3 45 37 D
5 45 24 C
7

Maintenant si j'utilise Range("A65536").End(xlUp).Row pour connaitre la dernière ligne de mon tableau, j'obtiens la valeur 5 soit la dernière ligne affichée et non 6 (numéro réel de la dernière ligne).

Je pense qu'une solution doit exister sans être obligé de supprimer le filtre. Si vous pouviez m'aider, merci.
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Ah.
Je comprends. Tu voulais simplement me dire pourquoi tu ne pouvais pas toujours relever à l'avance de manière sure le dernier n° de ligne avant filtrage.
Bon.
Je te suggère alors pour l'instant ceci :
titi = Range("A1:A" & Rows.Count).SpecialCells(xlCellTypeConstants).Address
derlig = Val(Mid(titi, InStrRev(titi, "$") + 1))
MsgBox derlig


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
Comprends pas le problème.
Si c'est vraiment là cxe que tu cherches : détermine donc d'ABORD la dernière ligne PUIS applique ton filtre !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
30 octobre 2011
0
Merci
Voilà le problème:

Sur ma sheet Excel, j'ai une zone où sont listées toutes les données. Toutes les cellules de cette zone sont verrouillées et ne peuvent être modifiées que par le code.

J'ai sur cette même sheet, une zone de saisie (non verrouillée) + un bouton de commande qui permettent d'ajouter les données saisies (après vérification de leur validité) dans ma zone de données (dernière ligne + 1).

Si l'utilisateur clique par mégarde sur le bouton de commande alors qu'un filtre est appliqué, les nouvelles données écraseront des données déjà existantes soit ligne 6 dans l'exemple de mon précédent message.

Le filtre peut être appliqué à tout moment suivant la volonté ou les besoins de l'utilisateur.

J'espère avoir été assez clair.
Encore merci.
Commenter la réponse de cs_GG72
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Ce que tu nous dis maintenant n'a rien à voir avec ce qui a été exprimé précédemment !
T'en rends-tu bien compte ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
30 octobre 2011
0
Merci
Dans mon premier message, j'évoquais le problème que je rencontrais pour connaitre le N° de la dernière ligne d'un tableau Excel lorsqu'un filtre était appliqué.

A partir du moment où ce problème est résolu, tout le reste ne me pose aucun problème.
Toute la partie vérification et ajout dans la liste des données est déjà en place et fonctionne correctement (sauf évidemment le cas évoqué).

Dans mon 2ème message, j'expliquais les tenant et aboutissant du tableau Excel, et surtout pourquoi je désirais connaître ce fameux n° de ligne.
En effet, l'écrasement des données s'est déjà produit suite au N° de ligne "erroné" renvoyé par End(xlUp) et je voudrais éviter que çà ne se reproduise.

Donc si vous pouviez m'aider, j'en serais plus que ravi.
Commenter la réponse de cs_GG72
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
30 octobre 2011
0
Merci
Bonjour,

Je viens de tester tes lignes de code et ça me semble tout simplement parfait.

Je te suggère alors pour l'instant ceci :

Est-ce à dire que tu peux me proposer encore mieux?

Je vais enfin pouvoir rectifier mon code pour une meilleure sécurité.

En définitive, je trouve pour ma part l'utilisation de End(xlUp) pas très fiable.

Ceci dit, merci beaucoup et peut-être à bientôt.
Commenter la réponse de cs_GG72
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Est-ce à dire que tu peux me proposer encore mieux?

Je n'en sais à ce stade rigoureusement rien.
La seule chose que je sais avec certitude (connaissant mon caractère et ma curiosité), est que je vais m'obstiner à chercher si d'autres mécanismes ne pourraient pas être utilisés.
Si j'en trouve d'autres (ce qui n'est pas forcément acquis), je te les ferai connaître.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Et comme cela va toujours mieux après un bon café, ===>>>
essaye :
derlig = UsedRange.Row + UsedRange.Rows.Count - 1
MsgBox derlig

Je n'en cherche pas d'autres, car celle-ci me parait assez simple d'utilisation.
Bonne journée.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Attention, cependant :
Ce dernier code sera tout-à-fait adapté dans ton cas actuel.
N'en fais pas pour autant une astuce à utiliser dans tous les cas de figure. Surtout pas.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
30 octobre 2011
0
Merci
Merci beaucoup pour toutes ces recherches.

Je n'ai pas le temps de tester pour l'instant. Boulot oblige.

Je verrai ça ce soir et je te tiens au courant.

Bonne journée à toi aussi.

Super sympa.
Commenter la réponse de cs_GG72
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
30 octobre 2011
0
Merci
Je viens d'essayer ta 2ème solution.

Ca ne fonctionne pas correctement et pour cause.
J'ai des cellules vides en contenu mais qui comportent bordures et couleur de fond sur plusieurs lignes. Elles font donc partie de UsedRange.

J'ai aussi essayé avec SpecialCells(xlCellTypeLastCell).Row mais le résultat est identique.

Tout ça n'est pas bien grave. Je vais adopter ta première proposition qui elle, fonctionne impeccablement.

Merci encore et bonne soirée.
Commenter la réponse de cs_GG72

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.