Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 utiliser la ligne +1 des lignes filtrées

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,
Je vous souhaite un beau dimanche

Je coince encore sur un code que je n'arrive pas à faire :
dans l'exemple fichier joint
exemple : filtre appliqué sur col B chiffre 1
je voudrais que si la cellule NON VISIBLE "B17" - soit lignes filtrées + 1
Si "B17" (NON VISIBLE = "OK" écrire "OK" en "F9"

Malgré mes recherches et tentatives, je n'ai pas réussi
Auriez-vous la solution ?
Avec mes remerciements,
Amicalement,
lionel,
 

Pièces jointes

  • derniereLigne+1_filtre.xlsm
    20.5 KB · Affichages: 16

pierrejean

XLDnaute Barbatruc
Bonjour usine à gaz
VB:
Sub FindingLastRow()
    Dim Plage As Range
    Set Plage = Range("b1:B" & Range("b65536").End(xlUp).Row).SpecialCells(xlVisible)
    x = Split(Plage.Address, "$")
    derlinvisible = x(UBound(x))
    If Range("B" & derlinvisible + 1) = "OK" Then Range("F9") = "OK"
End Sub
 

Usine à gaz

XLDnaute Barbatruc
Re PierreJean
ca ne fonctionne pas bien.
car si je filtre sur 2, il me donne tjrs "ok"
J'ai refait un fichier test que je joins,
lionel,
 

Pièces jointes

  • derniereLigne+1_filtre.xlsm
    31 KB · Affichages: 1

Usine à gaz

XLDnaute Barbatruc
Re encore

Après re-test ça semble bon
VB:
Sub FindingLastRow_PierreJean()
    Dim Plage As Range
    Set Plage = Range("b1:B" & Range("b65536").End(xlUp).Row).SpecialCells(xlVisible)
    x = Split(Plage.Address, "$")
    derlinvisible = x(UBound(x))
    If Range("B" & derlinvisible + 1) = [f4] Then Range("F9") = [f4]
End Sub
Merci à toi
Je vais voir comment l'intégrer dans mon fichier de travail,
lionel,
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Lionel, Pierre,

Voyez dans le fichier joint cette fonction VBA (volatile) :
VB:
Function FindingLastRow$(colonne As Range)
Application.Volatile
If colonne(colonne.Count).End(xlUp)(2) = "OK" Then FindingLastRow = "OK"
End Function
Le code doit être impérativement dans un module standard.

Formule en F9 =FindingLastRow(B:B)

A+
 

Pièces jointes

  • derniereLigne+1_filtre(1).xlsm
    16.9 KB · Affichages: 2

job75

XLDnaute Barbatruc
Ah je ne le croyais pas mais il n'est pas nécessaire que la fonction soit volatile, fichier (2) :
VB:
Function FindingLastRow$(colonne As Range)
If colonne(colonne.Count).End(xlUp)(2) = "OK" Then FindingLastRow = "OK"
End Function
 

Pièces jointes

  • derniereLigne+1_filtre(2).xlsm
    16.8 KB · Affichages: 4

Usine à gaz

XLDnaute Barbatruc
Bonjour PierreJean, Bonjour Gérard, le Forum,
Je reviens sur ce fil car j'avais mal formulé mon besoin (une fois de plus)

Mon besoin revu est le suivant :
si je filtre sur 1 la ligne 16 devient visible
si je filtre sur 2 la ligne 24 devient visible
si je filtre sur 3 la ligne 32 devient visible
si je filtre sur 4 la ligne 39 devient visible

Pour l'exemple j'ai écrit : "OK - c'est bon - Pourquoi ? - Parce que"
mais dans mon classeur de travail elle sont vides
j'ai juste besoin qu'elles deviennent visibles.


J'ai continué à chercher mais je n'ai pas trouvé jusqu'à maintenant !
Auriez-vous la solution ?
Je joins le fichier test,
Avec mes remerciements,
Je vous souhaite un beau dimanche,
lionel,
 

Pièces jointes

  • derniereLigne+1_filtre.xlsm
    17.4 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonjour Lionel,

Fichier (3) avec cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
Rows(16).Hidden = Rows(15).Hidden
Rows(24).Hidden = Rows(23).Hidden
Rows(32).Hidden = Rows(31).Hidden
Rows(39).Hidden = Rows(38).Hidden
Application.EnableEvents = True
End Sub
La formule volatile en F2 est indispensable pour que le filtrage crée l'évènement Calculate.

A+
 

Pièces jointes

  • derniereLigne+1_filtre(3).xlsm
    17.9 KB · Affichages: 3

Discussions similaires

Réponses
22
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…