Bonsoir le forum,
J'utilise excel2000 sous XP et je rencontre un problème sur une macro (adapté depuis celle du membre Skoobi) que j'ai souhaité modifer.
Il s'agit de pouvoir masquer les lignes qui ont une valeur numérique inférieure à celle tapée dans l'encadré.
Je prévois une action jusqu'à la ligne 65536 d'où l'aspect de la macro et l'utilisation de "Plage" et de Union() pour plus de rapidité.
Un bouton sert à lancer l'action, mais une erreur survient soit au lancement soit lorsque je rappuie pour réafficher tout.
voici l'erreur : "Erreur d'éxécution 91 : variable d'objet ou variable de bloc With non définie" et ça pointe ensuite sur la variable "plage" (ligne en rouge) pourtant bien définie 😕😕
Je mets ci-dessous le texte, le fichier test simplifié où j'ai rencontré ce problème est encore trop lourd (>48Ko). je peux voir pour tenter de le réduire au besoin.
NOTA : ne pas tenir compte du nom du bouton (j'ai gardé l'ancien)
Private Sub ToggleMasq_Click()
If ToggleMasq.Caption = "AFFICHER QUE LES X" Then
ToggleMasq.BackColor = &H80FFFF
Macro1
ToggleMasq.Caption = "REAFFICHER TOUT"
Else
ToggleMasq.BackColor = &H80FF80
Macro2
ToggleMasq.Caption = "AFFICHER QUE LES X"
End If
End Sub
Sub Macro1()
Application.ScreenUpdating = False
'Ne garde que les lignes <valeur dans E3
Dim i As Long, plage As Range
For i = 5 To Range("A65536").End(xlUp).Row
If Range("D" & i) < Range("E3") Then
If plage Is Nothing Then
Set plage = Rows(i)
Else
Set plage = Union(plage, Rows(i))
End If
End If
Next i
plage.EntireRow.Hidden = True
Application.ScreenUpdating = True
End Sub
Sub Macro2()
Application.ScreenUpdating = False
'Réaffiche TOUT
Dim i As Long, plage As Range
For i = 5 To Range("A65536").End(xlUp).Row
Rows(i).Hidden = False
Next i
Application.ScreenUpdating = True
End Sub
Qq'un peut-il m'aider ?? Il s'agit surement d'un problème de syntaxe...
Merci par avance et bonne soirée !!! 🙂
ccdouble6.
J'utilise excel2000 sous XP et je rencontre un problème sur une macro (adapté depuis celle du membre Skoobi) que j'ai souhaité modifer.
Il s'agit de pouvoir masquer les lignes qui ont une valeur numérique inférieure à celle tapée dans l'encadré.
Je prévois une action jusqu'à la ligne 65536 d'où l'aspect de la macro et l'utilisation de "Plage" et de Union() pour plus de rapidité.
Un bouton sert à lancer l'action, mais une erreur survient soit au lancement soit lorsque je rappuie pour réafficher tout.
voici l'erreur : "Erreur d'éxécution 91 : variable d'objet ou variable de bloc With non définie" et ça pointe ensuite sur la variable "plage" (ligne en rouge) pourtant bien définie 😕😕
Je mets ci-dessous le texte, le fichier test simplifié où j'ai rencontré ce problème est encore trop lourd (>48Ko). je peux voir pour tenter de le réduire au besoin.
NOTA : ne pas tenir compte du nom du bouton (j'ai gardé l'ancien)
Private Sub ToggleMasq_Click()
If ToggleMasq.Caption = "AFFICHER QUE LES X" Then
ToggleMasq.BackColor = &H80FFFF
Macro1
ToggleMasq.Caption = "REAFFICHER TOUT"
Else
ToggleMasq.BackColor = &H80FF80
Macro2
ToggleMasq.Caption = "AFFICHER QUE LES X"
End If
End Sub
Sub Macro1()
Application.ScreenUpdating = False
'Ne garde que les lignes <valeur dans E3
Dim i As Long, plage As Range
For i = 5 To Range("A65536").End(xlUp).Row
If Range("D" & i) < Range("E3") Then
If plage Is Nothing Then
Set plage = Rows(i)
Else
Set plage = Union(plage, Rows(i))
End If
End If
Next i
plage.EntireRow.Hidden = True
Application.ScreenUpdating = True
End Sub
Sub Macro2()
Application.ScreenUpdating = False
'Réaffiche TOUT
Dim i As Long, plage As Range
For i = 5 To Range("A65536").End(xlUp).Row
Rows(i).Hidden = False
Next i
Application.ScreenUpdating = True
End Sub
Qq'un peut-il m'aider ?? Il s'agit surement d'un problème de syntaxe...
Merci par avance et bonne soirée !!! 🙂
ccdouble6.