[Résolu]Se placer sur la dernière cellule ne renvoyant pas "" (formule)

  • Initiateur de la discussion Initiateur de la discussion Kiriko
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Kiriko

XLDnaute Occasionnel
Bonjour à tous !
Dans ma colonne A, j'ai des formules, qui renvoient diverses données, ou alors un "" lorsqu'elles ne trouvent pas.
Je cherche un code (ou une astuce avec des formules??) pour me placer sur la cellule juste en dessous de la dernière cellule ne renvoyant pas un "".
En fait, aucune cellule de A n'est réellement "vide", même si elles n'affichent rien, car il y a des formules...

Merci par avance de l'attention portée.

Un petit fichier exemple est joint, plus probant que mes explications je pense....
Je suis persuadé que le sujet a déjà été abordé, mais je n'ai pas réussi à formuler une requête efficace dans mes recherches, je ne trouve pas...
 

Pièces jointes

Dernière édition:
Re : Se placer sur la dernière cellule ne renvoyant pas "" (formule)

Bonjour Kiriko

Vois si cela te convient
 

Pièces jointes

Re : Se placer sur la dernière cellule ne renvoyant pas "" (formule)

Bonjour Kiriko,

Dans la feuille le n° de la ligne recherchée est donné par :

Code:
=MAX(SI(NBCAR(A1:A1000);LIGNE(A1:A1000)))+1
C'est une formule matricielle à valider par Ctrl+Maj+Entrée.

Utilisée en VBA cela donne :

Code:
Sub DerLigne()
Dim lig As Long
lig = Evaluate("MAX(IF(LEN(A1:A1000),ROW(A1:A1000)))+1")
MsgBox lig 'pour tester
Cells(lig, 1).Select
End Sub

Edit 1 : ah bonjour cher pierrejean, pas rafraîchi 🙂

Edit 2 : on peut aussi utiliser, toujours en matriciel :

Code:
=MAX(SIGNE(NBCAR(A1:A1000))*LIGNE(A1:A1000))+1
Concernant A1:A1000, si c'est insuffisant prendre A1:A10000...

A+
 
Dernière édition:
Re : Se placer sur la dernière cellule ne renvoyant pas "" (formule)

Re,

Formule matricielle utilisant une plage dynamique (évolutive) :

Code:
=MAX(SIGNE(NBCAR(DECALER(A1;;;NBVAL(A:A))))*LIGNE(DECALER(A1;;;NBVAL(A:A))))+1
Transposée en VBA :

Code:
Sub DerLigne()
Dim lig As Long
lig = Evaluate("MAX(SIGN(LEN(OFFSET(A1,,,COUNTA(A:A))))*ROW(OFFSET(A1,,,COUNTA(A:A))))+1")
MsgBox lig 'pour tester
Cells(lig, 1).Select
End Sub
On devrait avoir fait ainsi le tour de la qustion.

A+
 
Re : Se placer sur la dernière cellule ne renvoyant pas "" (formule)

Re,

Non, pas fini, car ceci est plus simple :

Code:
=EQUIV(99;LN(NBCAR(DECALER(A1;;;NBVAL(A:A)))))+1
Code:
Sub DerLigne()
Dim lig As Long
lig = Evaluate("MATCH(99,LN(LEN(OFFSET(A1,,,COUNTA(A:A)))))+1")
MsgBox lig 'pour tester
Cells(lig, 1).Select
End Sub
A+
 
Re : Se placer sur la dernière cellule ne renvoyant pas "" (formule)

Bonjour pierrejean, bonjour job75 !
Merci de votre aide, et aussi de la rapidité de vos réponses !
A mon petit niveau, je cherchais surtout à me placer sur la dite cellule, et non pas avoir ces coordonnées, même si c'est sans doute une étape... Et même si les formules matricielles (auxquelles je ne comprends rien pour l'instant) m'intéressent.
En ce point, le fichier de pierrejean "clef en main" est parfait pour moi, encore merci !
Si d'aventure vous auriez quelques instants à m'accorder encore, je cherche le paramètre à modifier (ou ajouter) si je veux sélectionner la ligne entière et non pas la seule cellule... Mais sans doute pourrais-je trouver comment faire en fouillant si vous n'aviez pas le temps, car je ne pense pas que cela soit très compliqué...
La cerise sur le gâteau serait de faire fonctionner le code sur la colonne qui est sélectionnée avant de le lancer (par exemple, si la cellule H5 est sélectionnée, faire la recherche sur la colonne H)...
Copie du code initial de pierrejean :
Code:
Sub select_vide()
For n = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
 If Range("A" & n) <> "" Then
   Range("A" & n + 1).Select
   Exit Sub
 End If
Next
End Sub

Avec encore tous mes reconnaissants remerciements à vous deux !
Cordialement,
 
Re : Se placer sur la dernière cellule ne renvoyant pas "" (formule)

Re,

Je vous ai donné aussi du code VBA 🙂

Le voici adapté à ce que vous voulez faire :

Code:
Sub DerLigne()
Dim plage As Range, lig As Long
Set plage = Intersect(ActiveCell.EntireColumn, Range("A1", ActiveSheet.UsedRange))
On Error Resume Next 'si la colonne est vide
lig = Evaluate("MATCH(99,LN(LEN(" & plage.Address & ")))+1")
Rows(lig).Select
End Sub
A+
 
Dernière édition:
Re : Se placer sur la dernière cellule ne renvoyant pas "" (formule)

Re,

Ceci est mieux :

Code:
Sub DerLigne()
Dim plage As Range
On Error Resume Next 'si la colonne est vide
Set plage = Intersect(ActiveCell.EntireColumn, Range("A1", ActiveSheet.UsedRange))
If plage.Count = 1 Then Set plage = plage.Resize(2) 'il faut au moins 2 éléments
Rows(Evaluate("MATCH(99,LN(LEN(" & plage.Address & ")))+1")).Select
If Err Then MsgBox "Colonne vide..."
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

J
Réponses
9
Affichages
1 K
juicelink
J
V
  • Question Question
Réponses
0
Affichages
782
Varona Rodriguez
V
A
Réponses
1
Affichages
6 K
G
Réponses
17
Affichages
4 K
G
Retour