Bonjour Denis et le forum,
Est-il possible de masquer des lignes selon la valeur d'une cellule sans boucler sur la plage ?
L'idée est quelque chose du genre (mais qui ne fonctionne pas bien sÍ»r !!!) :
Sub test()
With Feuil1
With .Range("A1:A8")
If .Value = "x" Then .EntireRow.Hidden = True
End With
End With
End Sub
Merci d'avance Í tout généreux contributeur !!
Bon week-end,
ThierryP
Bonjour Denis et le forum,
Est-il possible de masquer des lignes selon la valeur d'une cellule sans boucler sur la plage ?
L'idée est quelque chose du genre (mais qui ne fonctionne pas bien sÍ»r !!!) :
Sub test()
With Feuil1
With .Range("A1:A8")
If .Value = "x" Then .EntireRow.Hidden = True
End With
End With
End Sub
Merci d'avance Í tout généreux contributeur !!
Bon week-end,
ThierryP
Bonjour Denis et le forum,
Est-il possible de masquer des lignes selon la valeur d'une cellule sans boucler sur la plage ?
L'idée est quelque chose du genre (mais qui ne fonctionne pas bien sÍ»r !!!) :
Sub test()
With Feuil1
With .Range("A1:A8")
If .Value = "x" Then .EntireRow.Hidden = True
End With
End With
End Sub
Merci d'avance Í tout généreux contributeur !!
Bon week-end,
ThierryP
'--------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim X As Variant, Adr As String
Dim T As String
With Feuil1
   Set Rg = .Range("A1:A8")
End With
'X la valeur dont la ligne doit être masquée
X = 1
With Rg
   Set Trouve = .Find(What:=X, LookIn:=xlValues, Lookat:=xlPart)
   If Not Trouve Is Nothing Then
       Adr = Trouve.Address
       Do
           T = T & "," & Trouve.Address
           Set Trouve = .FindNext(Trouve)
       Loop Until Trouve.Address = Adr
   End If
End With
T = Right(T, Len(T) - 1)
With Feuil1
   .Range(T).EntireRow.Hidden = True
End With
End Sub
'--------------------------------------
'--------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim X As Variant, Adr As String
Dim T As String
With Feuil1
   Set Rg = .Range("A1:A8")
End With
'X la valeur dont la ligne doit être masquée
X = 1
With Rg
   Set Trouve = .Find(What:=X, LookIn:=xlValues, Lookat:=xlPart)
   If Not Trouve Is Nothing Then
       Adr = Trouve.Address
       Do
           T = T & "," & Trouve.Address
           Set Trouve = .FindNext(Trouve)
       Loop Until Trouve.Address = Adr
   End If
End With
T = Right(T, Len(T) - 1)
With Feuil1
   .Range(T).EntireRow.Hidden = True
End With
End Sub
'--------------------------------------
'--------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim X As Variant, Adr As String
Dim T As String
With Feuil1
   Set Rg = .Range("A1:A8")
End With
'X la valeur dont la ligne doit être masquée
X = 1
With Rg
   Set Trouve = .Find(What:=X, LookIn:=xlValues, Lookat:=xlPart)
   If Not Trouve Is Nothing Then
       Adr = Trouve.Address
       Do
           T = T & "," & Trouve.Address
           Set Trouve = .FindNext(Trouve)
       Loop Until Trouve.Address = Adr
   End If
End With
T = Right(T, Len(T) - 1)
With Feuil1
   .Range(T).EntireRow.Hidden = True
End With
End Sub
'--------------------------------------
Le 22/04/22 Í 11:18, MichD a écrit :'--------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim X As Variant, Adr As String
Dim T As String
With Feuil1
    Set Rg = .Range("A1:A8")
End With
'X la valeur dont la ligne doit être masquée
X = 1
With Rg
    Set Trouve = .Find(What:=X, LookIn:=xlValues, Lookat:=xlPart)
    If Not Trouve Is Nothing Then
        Adr = Trouve.Address
        Do
            T = T & "," & Trouve.Address
            Set Trouve = .FindNext(Trouve)
        Loop Until Trouve.Address = Adr
    End If
End With
T = Right(T, Len(T) - 1)
With Feuil1
    .Range(T).EntireRow.Hidden = True
End With
End Sub
'--------------------------------------
Légère modification afin d'éviter une erreur, si tu n’as aucune
occurrence du nombre recherché dans la plage de cellules.
'--------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim X As Variant, Adr As String
Dim T As String
With Feuil1
   Set Rg = .Range("A1:A8")
End With
'X la valeur dont la ligne doit être masquée
X = 1
With Rg
   Set Trouve = .Find(What:=X, LookIn:=xlValues, Lookat:=xlPart)
   If Not Trouve Is Nothing Then
       Adr = Trouve.Address
       Do
           T = T & "," & Trouve.Address
           Set Trouve = .FindNext(Trouve)
       Loop Until Trouve.Address = Adr
   End If
  T = Right(T, Len(T) - 1)
  With Feuil1
     .Range(T).EntireRow.Hidden = True
 End With
End With
End Sub
'--------------------------------------
MichD
Le 22/04/22 Í 11:18, MichD a écrit :
'--------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim X As Variant, Adr As String
Dim T As String
With Feuil1
    Set Rg = .Range("A1:A8")
End With
'X la valeur dont la ligne doit être masquée
X = 1
With Rg
    Set Trouve = .Find(What:=X, LookIn:=xlValues, Lookat:=xlPart)
    If Not Trouve Is Nothing Then
        Adr = Trouve.Address
        Do
            T = T & "," & Trouve.Address
            Set Trouve = .FindNext(Trouve)
        Loop Until Trouve.Address = Adr
    End If
End With
T = Right(T, Len(T) - 1)
With Feuil1
    .Range(T).EntireRow.Hidden = True
End With
End Sub
'--------------------------------------
Légère modification afin d'éviter une erreur, si tu n’as aucune
occurrence du nombre recherché dans la plage de cellules.
'--------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim X As Variant, Adr As String
Dim T As String
With Feuil1
   Set Rg = .Range("A1:A8")
End With
'X la valeur dont la ligne doit être masquée
X = 1
With Rg
   Set Trouve = .Find(What:=X, LookIn:=xlValues, Lookat:=xlPart)
   If Not Trouve Is Nothing Then
       Adr = Trouve.Address
       Do
           T = T & "," & Trouve.Address
           Set Trouve = .FindNext(Trouve)
       Loop Until Trouve.Address = Adr
   End If
  T = Right(T, Len(T) - 1)
  With Feuil1
     .Range(T).EntireRow.Hidden = True
 End With
End With
End Sub
'--------------------------------------
MichD
Le 22/04/22 Í 11:18, MichD a écrit :'--------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim X As Variant, Adr As String
Dim T As String
With Feuil1
    Set Rg = .Range("A1:A8")
End With
'X la valeur dont la ligne doit être masquée
X = 1
With Rg
    Set Trouve = .Find(What:=X, LookIn:=xlValues, Lookat:=xlPart)
    If Not Trouve Is Nothing Then
        Adr = Trouve.Address
        Do
            T = T & "," & Trouve.Address
            Set Trouve = .FindNext(Trouve)
        Loop Until Trouve.Address = Adr
    End If
End With
T = Right(T, Len(T) - 1)
With Feuil1
    .Range(T).EntireRow.Hidden = True
End With
End Sub
'--------------------------------------
Légère modification afin d'éviter une erreur, si tu n’as aucune
occurrence du nombre recherché dans la plage de cellules.
'--------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim X As Variant, Adr As String
Dim T As String
With Feuil1
   Set Rg = .Range("A1:A8")
End With
'X la valeur dont la ligne doit être masquée
X = 1
With Rg
   Set Trouve = .Find(What:=X, LookIn:=xlValues, Lookat:=xlPart)
   If Not Trouve Is Nothing Then
       Adr = Trouve.Address
       Do
           T = T & "," & Trouve.Address
           Set Trouve = .FindNext(Trouve)
       Loop Until Trouve.Address = Adr
   End If
  T = Right(T, Len(T) - 1)
  With Feuil1
     .Range(T).EntireRow.Hidden = True
 End With
End With
End Sub
'--------------------------------------
MichD
Bonjour Denis,
Toujours ausi efficace !
Merci pour le coup de main !
ThierryP
Bonjour Denis,
Toujours ausi efficace !
Merci pour le coup de main !
ThierryP
Bonjour Denis,
Toujours ausi efficace !
Merci pour le coup de main !
ThierryP
Dans la procédure soumise, il y a une limitation. La variable "T"
contenant les adresses des cellules contenant la valeur recherchée ne
peut pas excéder 255 caractères, cela limite est limitatif sur une
grande plage de cellule o͹ la variable "T" pourrait être plus grande que
255 caractères.
Dans la procédure soumise, il y a une limitation. La variable "T"
contenant les adresses des cellules contenant la valeur recherchée ne
peut pas excéder 255 caractères, cela limite est limitatif sur une
grande plage de cellule o͹ la variable "T" pourrait être plus grande que
255 caractères.
Dans la procédure soumise, il y a une limitation. La variable "T"
contenant les adresses des cellules contenant la valeur recherchée ne
peut pas excéder 255 caractères, cela limite est limitatif sur une
grande plage de cellule o͹ la variable "T" pourrait être plus grande que
255 caractères.
Re-bonjour !
Oui, je m'en suis aperçu et je m'en suis sorti en déclarant T en tant que Range et tout roule !
Encore merci !
ThierryPDans la procédure soumise, il y a une limitation. La variable "T"
contenant les adresses des cellules contenant la valeur recherchée ne
peut pas excéder 255 caractères, cela limite est limitatif sur une
grande plage de cellule o͹ la variable "T" pourrait être plus grande que
255 caractères.
Re-bonjour !
Oui, je m'en suis aperçu et je m'en suis sorti en déclarant T en tant que Range et tout roule !
Encore merci !
ThierryP
Dans la procédure soumise, il y a une limitation. La variable "T"
contenant les adresses des cellules contenant la valeur recherchée ne
peut pas excéder 255 caractères, cela limite est limitatif sur une
grande plage de cellule o͹ la variable "T" pourrait être plus grande que
255 caractères.
Re-bonjour !
Oui, je m'en suis aperçu et je m'en suis sorti en déclarant T en tant que Range et tout roule !
Encore merci !
ThierryPDans la procédure soumise, il y a une limitation. La variable "T"
contenant les adresses des cellules contenant la valeur recherchée ne
peut pas excéder 255 caractères, cela limite est limitatif sur une
grande plage de cellule o͹ la variable "T" pourrait être plus grande que
255 caractères.
Bonjour Denis,
Voici :
'-----------------------------------------------------------------
Private Sub Cache_Click()
Dim Rg As Range, Trouve As Range
Dim X As Variant, Adr As String
Dim T As Range
Application.ScreenUpdating = False
With Feuil2
Derlig = .Range("A1000000").End(xlUp).Row
DerCol = Split(Columns(.Range("$ZZ$2").End(xlToLeft).Column + 1).Address(ColumnAbsolute:úlse), ":")(1)
Set Rg = .Range("$S$2:$" & DerCol & Derlig)
If Cache Then
Cache.Caption = "Tout"
With Rg
Set T = .Find(What:="x", LookIn:=xlFormulas, LookAt:=xlPart)
Set Trouve = .Find(What:="x", LookIn:=xlFormulas, LookAt:=xlPart)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
Set T = Union(T, Trouve)
Set Trouve = .FindNext(Trouve)
Loop Until Trouve.Address = Adr
End If
End With
T.EntireRow.Hidden = True
Else
Cache.Caption = "Non soldées"
Rg.EntireRow.Hidden = False
End If
End With
End Sub
'-------------------------------------------------------------
ThierryP
Bonjour Denis,
Voici :
'-----------------------------------------------------------------
Private Sub Cache_Click()
Dim Rg As Range, Trouve As Range
Dim X As Variant, Adr As String
Dim T As Range
Application.ScreenUpdating = False
With Feuil2
Derlig = .Range("A1000000").End(xlUp).Row
DerCol = Split(Columns(.Range("$ZZ$2").End(xlToLeft).Column + 1).Address(ColumnAbsolute:úlse), ":")(1)
Set Rg = .Range("$S$2:$" & DerCol & Derlig)
If Cache Then
Cache.Caption = "Tout"
With Rg
Set T = .Find(What:="x", LookIn:=xlFormulas, LookAt:=xlPart)
Set Trouve = .Find(What:="x", LookIn:=xlFormulas, LookAt:=xlPart)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
Set T = Union(T, Trouve)
Set Trouve = .FindNext(Trouve)
Loop Until Trouve.Address = Adr
End If
End With
T.EntireRow.Hidden = True
Else
Cache.Caption = "Non soldées"
Rg.EntireRow.Hidden = False
End If
End With
End Sub
'-------------------------------------------------------------
ThierryP
Bonjour Denis,
Voici :
'-----------------------------------------------------------------
Private Sub Cache_Click()
Dim Rg As Range, Trouve As Range
Dim X As Variant, Adr As String
Dim T As Range
Application.ScreenUpdating = False
With Feuil2
Derlig = .Range("A1000000").End(xlUp).Row
DerCol = Split(Columns(.Range("$ZZ$2").End(xlToLeft).Column + 1).Address(ColumnAbsolute:úlse), ":")(1)
Set Rg = .Range("$S$2:$" & DerCol & Derlig)
If Cache Then
Cache.Caption = "Tout"
With Rg
Set T = .Find(What:="x", LookIn:=xlFormulas, LookAt:=xlPart)
Set Trouve = .Find(What:="x", LookIn:=xlFormulas, LookAt:=xlPart)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
Set T = Union(T, Trouve)
Set Trouve = .FindNext(Trouve)
Loop Until Trouve.Address = Adr
End If
End With
T.EntireRow.Hidden = True
Else
Cache.Caption = "Non soldées"
Rg.EntireRow.Hidden = False
End If
End With
End Sub
'-------------------------------------------------------------
ThierryP
Bonjour,
C'est bien. Le seul bémol, c'est cette ligne de code:
Set T = Union(T, Trouve)
Lorsque tu augmentes l'étendue de la plage "T", cela (union) augmente le
temps d'exécution. Ça va pour une petite plage.
MichD
Bonjour,
C'est bien. Le seul bémol, c'est cette ligne de code:
Set T = Union(T, Trouve)
Lorsque tu augmentes l'étendue de la plage "T", cela (union) augmente le
temps d'exécution. Ça va pour une petite plage.
MichD
Bonjour,
C'est bien. Le seul bémol, c'est cette ligne de code:
Set T = Union(T, Trouve)
Lorsque tu augmentes l'étendue de la plage "T", cela (union) augmente le
temps d'exécution. Ça va pour une petite plage.
MichD