OVH Cloud OVH Cloud

Filtre

2 réponses
Avatar
Guillaume
Bonjour,

Pourquoi lorsqu'on utilise la fonction resize, on ne peut depasser un nombre
de ligne superieur à 200... Apres sa plante?

J'ai 850 ligne a filtrer ca marche, mais pour les exporter la ca va plus...

Au secours!

Guillaume


Set MaPlage = Sheets("Feuil1").AutoFilter.Range

'Set MaPlage = MaPlage.Offset(1, 0).Resize(MaPlage.Rows.Count - 1,
MaPlage.Rows.Count)

2 réponses

Avatar
michdenis
Bonjour Guillaume,

Essaie ceci :

Dans la procédure,

Set MaPlage = Sheets("Feuil1").AutoFilter.Range

la ligne de code précédente va faire planter la procédure si le filtre automatique n'est pas en place.



Set MaPlage = Sheets("Feuil1").Range("_FilterDatabase")
Cette ligne va toujours désigner la plage de cellules de la feuille où le filtre automatique a été exécuté pour la
dernière fois.
Évidemment, il faut que le filtre ait déjà été exécuté au moins une fois pour que la plage existe....


Utilise 2 objets de type range ....

'----------------------------------
Sub Filtre_Test()

Dim MaPlage As Range
Dim MaPlage1 As Range

Set MaPlage = Sheets("Feuil1").Range("_FilterDatabase")

Set MaPlage1 = MaPlage.Offset(1, 0). _
Resize(MaPlage.Rows.Count - 1, _
MaPlage.Columns.Count).SpecialCells(xlCellTypeVisible)

MsgBox MaPlage1.Address
End Sub
'----------------------------------


Salutations!



"Guillaume" a écrit dans le message de news:
Bonjour,

Pourquoi lorsqu'on utilise la fonction resize, on ne peut depasser un nombre
de ligne superieur à 200... Apres sa plante?

J'ai 850 ligne a filtrer ca marche, mais pour les exporter la ca va plus...

Au secours!

Guillaume


Set MaPlage = Sheets("Feuil1").AutoFilter.Range

'Set MaPlage = MaPlage.Offset(1, 0).Resize(MaPlage.Rows.Count - 1,
MaPlage.Rows.Count)
Avatar
michdenis
En supplément, attention si aucun enregistrement n'est trouvé par le filtre ...

'------------------------------
Sub Filtre_Test()

Dim MaPlage As Range
Dim MaPlage1 As Range
Dim A As Long 'Variable contenant
'le Nombre d'enregistrements trouvés

'Set t = Sheets("Feuil1").AutoFilter.Range
'MsgBox t.Address

Set MaPlage = Sheets("Feuil1").Range("_FilterDatabase")

A = Application.Subtotal(3, Range("A:A")) - 1

If A > 0 Then
Set MaPlage1 = MaPlage.Offset(1, 0). _
Resize(MaPlage.Rows.Count - 1, _
MaPlage.Columns.Count).SpecialCells(xlCellTypeVisible)

MsgBox MaPlage1.Address
Else
MsgBox "Aucun enregistrement trouvé."
End If

End Sub
'------------------------------


Salutations!



"michdenis" a écrit dans le message de news:
Bonjour Guillaume,

Essaie ceci :

Dans la procédure,

Set MaPlage = Sheets("Feuil1").AutoFilter.Range

la ligne de code précédente va faire planter la procédure si le filtre automatique n'est pas en place.



Set MaPlage = Sheets("Feuil1").Range("_FilterDatabase")
Cette ligne va toujours désigner la plage de cellules de la feuille où le filtre automatique a été exécuté pour la
dernière fois.
Évidemment, il faut que le filtre ait déjà été exécuté au moins une fois pour que la plage existe....


Utilise 2 objets de type range ....

'----------------------------------
Sub Filtre_Test()

Dim MaPlage As Range
Dim MaPlage1 As Range

Set MaPlage = Sheets("Feuil1").Range("_FilterDatabase")

Set MaPlage1 = MaPlage.Offset(1, 0). _
Resize(MaPlage.Rows.Count - 1, _
MaPlage.Columns.Count).SpecialCells(xlCellTypeVisible)

MsgBox MaPlage1.Address
End Sub
'----------------------------------


Salutations!



"Guillaume" a écrit dans le message de news:
Bonjour,

Pourquoi lorsqu'on utilise la fonction resize, on ne peut depasser un nombre
de ligne superieur à 200... Apres sa plante?

J'ai 850 ligne a filtrer ca marche, mais pour les exporter la ca va plus...

Au secours!

Guillaume


Set MaPlage = Sheets("Feuil1").AutoFilter.Range

'Set MaPlage = MaPlage.Offset(1, 0).Resize(MaPlage.Rows.Count - 1,
MaPlage.Rows.Count)