Malgré mes recherches et tentatives, je n'arrive pas à résoudre mon besoin suivant, Le contexte :
Je filtre en sélectionnant un critère "cellule A3". Pour l'exemple, j'ai 240 lignes au total. Mon besoin Sélectionner la ligne après la dernière ligne NON VIDE, c’est-à-dire à partir de la ligne 241en gardant les lignes filtrées SANS ANNULER LE FILTRAGE Je ne suis pas certain que ce soit possible !
Auriez-vous la solution ? ça m'arrangerait bien
Je joins un fichier test.
Avec mes remerciements,
Je vous souhaite une belle journée,
Amicalement,
lionel
Sub Confi_ture1(Optional Covid19MakeMeDumb)
With ActiveSheet
pf = Split(.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Address, "$")
MsgBox pf(UBound(pf)) + 1
End With
End Sub
Reste la question du pourquoi de la chose
Si on applique un filtre, pour chercher une cellule qui ne réponds pas au critère du filtre, c'est qu'elle n'a intrinsèquement pas d’intérêt puisque non filtrée, non ?
[/Confinement - jour 1]
Merci à vous pour m'avoir répondu @Marcel32
Tes codes sélectionnent bien la 1ère ligne vide (241) cellule A ... mais lol, je voudrais écrire dans la cellule A241 et ça écrit dans la dernière ligne filtrée @patrick ... pareil
JM
Ton code m'affiche un msg avec le chiffre 175 qui ne correspond pas à la ligne à atteindre et ce n'est pas un msg dont j'ai besoin mais de la sélection de A241 en gardant les lignes filtrées.
PS : c'est qu'elle n'a intrinsèquement pas d’intérêt puisque non filtrée, non ? : ce serait trop long à expliquer mais SI, dans mon procès, le filtrage est bon et doit être conservé. Et il me faut atteindre et écrire dans la 1ère ligne dans NON vide (filtrage maintenu).
Je remets le fichier test à jour de vos codes
Je continue mes recherches.
lionel
Un barbatruc (ce que tu es) sait qu'une MsgBox sert souvent pour faire des tests.
Un barbatruc saura donc adapter le code en conséquence
Un barbatruc sait aussi lire entre les lignes
(Et aura par exemple remarqué le nom que j'ai donné à ma macro )
•>Arthour973
Voici pourquoi je trouve 17
(et si on prend cette exemple , tu aurais voulu 28, non ?)
[Confinement - jour 1 - m5]
VB:
Sub CaptainSayWhat()
[A1:D1].Formula = "=""ITEM_""&COLUMN()": [A2:D27] = "=ROW()*COLUMN()"
[A1].CurrentRegion = [A1].CurrentRegion.Value
[C8:C16] = 1600
ActiveSheet.Range("$A$1:$D$27").AutoFilter Field:=3, Criteria1:="1600"
End Sub
Sub Confi_ture1(Optional Covid19MakeMeDumb)
With ActiveSheet
pf = Split(.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Address, "$")
MsgBox pf(UBound(pf)) + 1
End With
End Sub
[/Confinement - jour 1 - m5]
A tester sur une feuille vierge en lançant d'abord la première macro.
JM, avec toi c'est trop compliqué et trop de "parlottes"
Je n'ai pas le temps, même maintenant, de philosopher (sur un barbatruc), et d'expliquer les raisons de mon besoin ...... de faire des tests sur fichiers vierges etc....
J'ai, je crois, émis un besoin clairementexpliqué avec un fichier test à l'appui sur lequel je travaille !
PS : en toute amitié je te précise que tu n'es pas obligé de répondre à mes demandes
lionel,
•>arthour973
Je ne réponds pas à la question
Mais je poste juste une suggestion (j'ai le droit?)
En théorie, ceci devrait suffire, non ?
[Confinement - jour 1 - m6]
VB:
Sub critere1()
If [a3] <> "" Then Rows(4).AutoFilter 1, [a3].Value2
End Sub
•>arthour973
Alors? Pas de commentaires sur le code proposé au message#10?
Je l'ai pourtant écrit et testé sur ton fichier du post#5
Et le résultat de mon test: cellule A241
C'est le but visé ou pas?
Re-Bonjour JM,
Merci pour ton code post #10
Il fonctionne et c'est super si on sélectionne en A3 "OK RdV Bientôt"
Malheureusement, ça ne fonctionne plus si on sélectionne un autre texte ou ça écrit trop bas.
Il faudrait que ça écrive toujours sur la ligne 241, quel que soit le texte sélectionné.
Mais merci vraiment pour ce code c'est déjà une belle avancée
Je remets le fichier avec ton code et je continue mes recherches en partant de ton code auquel je ne comprends rien lol
lionel,
PS : t'as quand même bien fait de me répondre et je t'en remercie
Sub Pêche_à_la_Ligne_II()
Dim ToGo As Range, Ligne&
Set ToGo = Cells(Rows.Count, 1).End(3)(2)
Ligne = ToGo.Row + (241 - ToGo.Row)
Application.Goto Cells(Ligne, 1), True
End Sub