Microsoft 365 sélection 1ère ligne vide sans annuler le filtre

Usine à gaz

XLDnaute Barbatruc
Bonsoir à toutes et à tous,

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 241
en 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
 

Pièces jointes

  • filtre_test.xlsm
    32.8 KB · Affichages: 8

Usine à gaz

XLDnaute Barbatruc
Re JM :)
Les 2 codes fonctionnent ... c'est super et ça me rend un très gros service.
Un grand merci à toi, vraiment !
Protège bien le neurone que tu as ajouté lol
Tu vois quand on y va "direct" c'est vraiment mieux et ça devient un vrai plaisir :)
Merci JM
lionel :)
 

Staple1600

XLDnaute Barbatruc
Re

Donc tu comprends alors pourquoi je prends mon temps sur XLD. ;)
Sur ce , je retourne savourer les affres du confinement.

(PS : Pour le moment, pas de Covid19 par chez toi? Sans doute une histoire de climat. Il fait combien de ° à ta fenêtre? ;))
 

Usine à gaz

XLDnaute Barbatruc
"Donc tu comprends alors pourquoi je prends mon temps sur XLD. ;) "
On a souvent tendance à penser que tout le monde pense comme soi et que tout le monde est dans les mêmes conditions que soi ... mais chaque humain est unique lol
" pas de Covid19 par chez toi "
Et si, comme partout je pense. Le pays (la Tunisie) prend des mesures de plus en plus avec fermetures des aéroports, couvre feu de 18 h à 6 heures du matin et certainement très bientôt confinement comme partout.
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
@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
Mes deux lignes de code ne servent qu'à trouver la ligne que tu voulais trouver.

Après, à toi d'écrire la suite pour que ta macro écrive dans la bonne ligne maintenant que tu sais comment trouver ladite ligne.
 

job75

XLDnaute Barbatruc
Bonjour Lionel, le fil,

Quand une feuille est filtrée j'utilise souvent Application.Match :
VB:
Sub Test()
Dim derlig&, derlig1&
On Error Resume Next
derlig = Application.Match("zzz", [A:A])
derlig1 = Application.Match([9^99], [A:A])
derlig = IIf(derlig > derlig1, derlig, derlig1)
Range("A" & derlig + 1).Select
MsgBox derlig + 1 'pour tester
End Sub
A+
 

Usine à gaz

XLDnaute Barbatruc
Re-Bonjour, Gérard, Marcel, Patrick, JM, le Forum,

@Gérard
Ton code fonctionne également super bien ... mon problème est "plusss" que Résolu :)
Merci à toi et et à vous :)

Dans le fichier que je joins avec mise à jour des codes, j'ai un peu modifié l'action :
Il s'agit maintenant de sélectionner un critère "cellule A3" et de copier la ligne 4 après la dernière ligne NON VIDE en gardant les lignes filtrées SANS ANNULER LE FILTRAGE.

Le principe reste le même que la demande initiale.
Amicalement,
lionel,
 

Pièces jointes

  • filtre_ajoutLign_test.xlsm
    37.6 KB · Affichages: 3
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re

bonjour
arthour j'ai essayé mes deux code et je tombe bien sur la 241

et il me semble t'avoir donné plus q'un indice

alors en fait tu a adopté une pratique comme beaucoup d'autres a la quelle perso j’adhère pas
c'est laisser excel décider de la plage a filtrer en sélectionnant simplement la première ligne


si bien que tu ne sais pas la dimension de la plage qui est filtrée
heureusement (du moins je croyais) t'avoir donné un indice suffisamment évident

il est quand même possible de déterminer la plage filtrée même en ayant laisser excel décider

si plage explicite

VB:
Sub testsaucisse()
    With ActiveSheet
        If .FilterMode = True Then .ShowAllData
    End With
    With ActiveSheet.Range("A4", Cells(Rows.Count, "A").End(xlUp))'plage explicite
        .AutoFilter Field:=1, Criteria1:=[A3]
        MsgBox ActiveSheet.AutoFilter.Range.Address
        MsgBox .Cells(.Cells.Count).Offset(1).Address
        With .Cells(.Cells.Count).Offset(1)
            .EntireRow.Hidden = False
            .Value = "Arthour mange trop d'andouillette"
        End With
    End With

End Sub


si plage non explicite
VB:
Sub andouilletteépicé()
    With ActiveSheet
        If .FilterMode = True Then .ShowAllData
    End With
    If [A3] <> "" Then
        Rows("4:4").Select'plage non explicite !!!!!
        Selection.AutoFilter Field:=1, Criteria1:=Format(Range("a3"))
    End If
    Set plagefiltrée = ActiveSheet.AutoFilter.Range
    With plagefiltrée.Offset(1).Columns(1)
        MsgBox ActiveSheet.AutoFilter.Range.Address
        MsgBox .Cells(.Cells.Count).Address
        .Cells(.Cells.Count).Value = "Arthour mange trop d'andouillette"
    End With
    'Set plagefiltrée = ActiveSheet.AutoFilter.Range.Offset(1).Columns(1)
    'With plagefiltrée: MsgBox .Cells(.Cells.Count).Address: End With
End Sub
demo3.gif
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Il s'agit maintenant de sélectionner un critère "cellule A3" et d'ajouter une ligne après la dernière ligne NON VIDE en gardant les lignes filtrées SANS ANNULER LE FILTRAGE.
Tu veux dire quoi par "ajouter" une ligne ???

Maintenant que tu as plusieurs solutions pour trouver la première ligne vide, tu ne devrais pas galérer trop longtemps pour trouver la ligne qui se trouve juste en-dessous. ;)
 
Dernière édition:

Discussions similaires

Réponses
10
Affichages
634

Statistiques des forums

Discussions
315 080
Messages
2 116 008
Membres
112 636
dernier inscrit
fred 1969