Bonsoir
J'essaie de mettre en oeuvre quelque chose de ce genre afin de sélectionner
les cellules visibles après un tri
Sheets("Travail").Range("A4:F500").SpecialCells(xlCellTypeVisible).Select
Je vous remercie
Arnaud
Bonsoir
J'essaie de mettre en oeuvre quelque chose de ce genre afin de sélectionner
les cellules visibles après un tri
Sheets("Travail").Range("A4:F500").SpecialCells(xlCellTypeVisible).Select
Je vous remercie
Arnaud
Bonsoir
J'essaie de mettre en oeuvre quelque chose de ce genre afin de sélectionner
les cellules visibles après un tri
Sheets("Travail").Range("A4:F500").SpecialCells(xlCellTypeVisible).Select
Je vous remercie
Arnaud
bonnjour,
des infos sur la plagevisible suite à un filtre. Tu pioches pour voir ce
qui t'interesse
Set plagefiltre = ActiveSheet.AutoFilter.Range 'permet de repérer
l'ensemble de la zone sur laquelle s'applique le filtre de base
'autre méthode: en effet, par défaut Excel nomme toujours la plage filtre
_FilterDatabase. p.e si c'est la feuille 1 : Feuil1!_FilterDatabase.
'Si on veut l'atteindre quand on est sur la feuille1, il s'uffit d'écrire
Range("_FilterDatabase"). Si on est sur une autre feuille ou sur
'un autre classeur, il faut écrire
Set rng = Workbooks("toto.xls").Sheets(1).Range("_FilterDatabase")
Set plagefiltre = Range("_FilterDatabase")
Set plagefiltrevisible = plagefiltre.Offset(1,
0).Resize(plagefiltre.Rows.Count - 1,
plagefiltre.Columns.Count).SpecialCells(xlCellTypeVisible)
'méthode2 plus simple encore pour atteindre uniquement cellule d'une
colonne donnéé
'imaginons que la plage à filtre soit toujours plagefiltre donc débute en
A1.
'on veut atteindre la colonne décalée de I de A et on veut ne garder
qu'une seule
'colonne. On écrira alors
'Set plagefiltrevisible = plagefiltre.Offset(1,
I).Resize(plagefiltre.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
'dans ces conditions on fait un décalage de I et on ne garde qu'une
colonne avec le resize
'ensuite il faut juste faire for each c in plagefiltrevisible et le tour
est joué.
'on pourrait aussi écrire pour faire l'économie de set plagefiltre =
ActiveSheet.AutoFilter.Range
'With ActiveSheet.AutoFilter.Range
' Set plagefiltrevisible = .Offset(1, I).Resize(.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
'End With
'pour retrouver le range du filtre de base et eventuellement le nombre de
ligne sou autre
'Worksheets("nom feuille").AutoFilter.Filters(1).Parent.Range.Rows.Count
'*************************************************************************************************************
'Méthode pour trouver la 1ere ligne et la dernière ligne vivible après un
filtre
On Error Resume Next 'le on error est là pour préserver le fait que la
plage visible n'a peut être pas de cellules
With Range("_FilterDatabase")
'ici définit la plage filtrée visible
Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1,
.Columns.Count).SpecialCells(xlCellTypeVisible)
'on pourrait obetnir la 1ere ligne de la plage filtrée visible en
écrivant
'plagefiltrevisible.areas(1).rows(1) 'correspond à la 1ere ligne de la
1ere zone de la plagefiltrevisible
'ici on cherche la dernière ligne de la plage filtrée visible en
écrivant
With plagefiltrevisible
.Areas(.Areas.Count).Rows(.Areas(.Areas.Count).Rows.Count).Select
End With
End With
'****************************************************************************************************************
'méthode1 pour atteindre les cellules de la colonne 5
For Each C In plagefiltrevisible
If C.Column = 5 Then
C.Select
MsgBox C.value
End If
Next
Dim plagevisible As Range
'méthode 3 sur la base des areas
'Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
'MsgBox plagevisible.Count
'
'For J = 1 To plagevisible.Areas.Count
' For i = 1 To plagevisible.Areas(J).Cells.Count
' MsgBox plagevisible.Areas(J).Cells(i).Address
' Next
'Next
Exit Sub
'méthode 4 pour trouver le nbre de lignes visibles
'méthode 4.1
Set Plage =
ActiveSheet.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
For Each ar In Plage.Areas
nblignes = ar.Rows.Count + nblignes
Next
MsgBox nblignes - 1 ' (-1 car on suppose que la ligne d'entete étant en
A1, cette ligne sera comptée evidemment)
'méthode 4.2
For Each cell In Selection
If Rows(cell.Row).Hidden = False Then
Ctr = Ctr + 1
End If
Next
Amuses-toi bien
A+Bonsoir
J'essaie de mettre en oeuvre quelque chose de ce genre afin de
sélectionner les cellules visibles après un tri
Sheets("Travail").Range("A4:F500").SpecialCells(xlCellTypeVisible).Select
Je vous remercie
Arnaud
bonnjour,
des infos sur la plagevisible suite à un filtre. Tu pioches pour voir ce
qui t'interesse
Set plagefiltre = ActiveSheet.AutoFilter.Range 'permet de repérer
l'ensemble de la zone sur laquelle s'applique le filtre de base
'autre méthode: en effet, par défaut Excel nomme toujours la plage filtre
_FilterDatabase. p.e si c'est la feuille 1 : Feuil1!_FilterDatabase.
'Si on veut l'atteindre quand on est sur la feuille1, il s'uffit d'écrire
Range("_FilterDatabase"). Si on est sur une autre feuille ou sur
'un autre classeur, il faut écrire
Set rng = Workbooks("toto.xls").Sheets(1).Range("_FilterDatabase")
Set plagefiltre = Range("_FilterDatabase")
Set plagefiltrevisible = plagefiltre.Offset(1,
0).Resize(plagefiltre.Rows.Count - 1,
plagefiltre.Columns.Count).SpecialCells(xlCellTypeVisible)
'méthode2 plus simple encore pour atteindre uniquement cellule d'une
colonne donnéé
'imaginons que la plage à filtre soit toujours plagefiltre donc débute en
A1.
'on veut atteindre la colonne décalée de I de A et on veut ne garder
qu'une seule
'colonne. On écrira alors
'Set plagefiltrevisible = plagefiltre.Offset(1,
I).Resize(plagefiltre.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
'dans ces conditions on fait un décalage de I et on ne garde qu'une
colonne avec le resize
'ensuite il faut juste faire for each c in plagefiltrevisible et le tour
est joué.
'on pourrait aussi écrire pour faire l'économie de set plagefiltre =
ActiveSheet.AutoFilter.Range
'With ActiveSheet.AutoFilter.Range
' Set plagefiltrevisible = .Offset(1, I).Resize(.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
'End With
'pour retrouver le range du filtre de base et eventuellement le nombre de
ligne sou autre
'Worksheets("nom feuille").AutoFilter.Filters(1).Parent.Range.Rows.Count
'*************************************************************************************************************
'Méthode pour trouver la 1ere ligne et la dernière ligne vivible après un
filtre
On Error Resume Next 'le on error est là pour préserver le fait que la
plage visible n'a peut être pas de cellules
With Range("_FilterDatabase")
'ici définit la plage filtrée visible
Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1,
.Columns.Count).SpecialCells(xlCellTypeVisible)
'on pourrait obetnir la 1ere ligne de la plage filtrée visible en
écrivant
'plagefiltrevisible.areas(1).rows(1) 'correspond à la 1ere ligne de la
1ere zone de la plagefiltrevisible
'ici on cherche la dernière ligne de la plage filtrée visible en
écrivant
With plagefiltrevisible
.Areas(.Areas.Count).Rows(.Areas(.Areas.Count).Rows.Count).Select
End With
End With
'****************************************************************************************************************
'méthode1 pour atteindre les cellules de la colonne 5
For Each C In plagefiltrevisible
If C.Column = 5 Then
C.Select
MsgBox C.value
End If
Next
Dim plagevisible As Range
'méthode 3 sur la base des areas
'Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
'MsgBox plagevisible.Count
'
'For J = 1 To plagevisible.Areas.Count
' For i = 1 To plagevisible.Areas(J).Cells.Count
' MsgBox plagevisible.Areas(J).Cells(i).Address
' Next
'Next
Exit Sub
'méthode 4 pour trouver le nbre de lignes visibles
'méthode 4.1
Set Plage =
ActiveSheet.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
For Each ar In Plage.Areas
nblignes = ar.Rows.Count + nblignes
Next
MsgBox nblignes - 1 ' (-1 car on suppose que la ligne d'entete étant en
A1, cette ligne sera comptée evidemment)
'méthode 4.2
For Each cell In Selection
If Rows(cell.Row).Hidden = False Then
Ctr = Ctr + 1
End If
Next
Amuses-toi bien
A+
Bonsoir
J'essaie de mettre en oeuvre quelque chose de ce genre afin de
sélectionner les cellules visibles après un tri
Sheets("Travail").Range("A4:F500").SpecialCells(xlCellTypeVisible).Select
Je vous remercie
Arnaud
bonnjour,
des infos sur la plagevisible suite à un filtre. Tu pioches pour voir ce
qui t'interesse
Set plagefiltre = ActiveSheet.AutoFilter.Range 'permet de repérer
l'ensemble de la zone sur laquelle s'applique le filtre de base
'autre méthode: en effet, par défaut Excel nomme toujours la plage filtre
_FilterDatabase. p.e si c'est la feuille 1 : Feuil1!_FilterDatabase.
'Si on veut l'atteindre quand on est sur la feuille1, il s'uffit d'écrire
Range("_FilterDatabase"). Si on est sur une autre feuille ou sur
'un autre classeur, il faut écrire
Set rng = Workbooks("toto.xls").Sheets(1).Range("_FilterDatabase")
Set plagefiltre = Range("_FilterDatabase")
Set plagefiltrevisible = plagefiltre.Offset(1,
0).Resize(plagefiltre.Rows.Count - 1,
plagefiltre.Columns.Count).SpecialCells(xlCellTypeVisible)
'méthode2 plus simple encore pour atteindre uniquement cellule d'une
colonne donnéé
'imaginons que la plage à filtre soit toujours plagefiltre donc débute en
A1.
'on veut atteindre la colonne décalée de I de A et on veut ne garder
qu'une seule
'colonne. On écrira alors
'Set plagefiltrevisible = plagefiltre.Offset(1,
I).Resize(plagefiltre.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
'dans ces conditions on fait un décalage de I et on ne garde qu'une
colonne avec le resize
'ensuite il faut juste faire for each c in plagefiltrevisible et le tour
est joué.
'on pourrait aussi écrire pour faire l'économie de set plagefiltre =
ActiveSheet.AutoFilter.Range
'With ActiveSheet.AutoFilter.Range
' Set plagefiltrevisible = .Offset(1, I).Resize(.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
'End With
'pour retrouver le range du filtre de base et eventuellement le nombre de
ligne sou autre
'Worksheets("nom feuille").AutoFilter.Filters(1).Parent.Range.Rows.Count
'*************************************************************************************************************
'Méthode pour trouver la 1ere ligne et la dernière ligne vivible après un
filtre
On Error Resume Next 'le on error est là pour préserver le fait que la
plage visible n'a peut être pas de cellules
With Range("_FilterDatabase")
'ici définit la plage filtrée visible
Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1,
.Columns.Count).SpecialCells(xlCellTypeVisible)
'on pourrait obetnir la 1ere ligne de la plage filtrée visible en
écrivant
'plagefiltrevisible.areas(1).rows(1) 'correspond à la 1ere ligne de la
1ere zone de la plagefiltrevisible
'ici on cherche la dernière ligne de la plage filtrée visible en
écrivant
With plagefiltrevisible
.Areas(.Areas.Count).Rows(.Areas(.Areas.Count).Rows.Count).Select
End With
End With
'****************************************************************************************************************
'méthode1 pour atteindre les cellules de la colonne 5
For Each C In plagefiltrevisible
If C.Column = 5 Then
C.Select
MsgBox C.value
End If
Next
Dim plagevisible As Range
'méthode 3 sur la base des areas
'Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
'MsgBox plagevisible.Count
'
'For J = 1 To plagevisible.Areas.Count
' For i = 1 To plagevisible.Areas(J).Cells.Count
' MsgBox plagevisible.Areas(J).Cells(i).Address
' Next
'Next
Exit Sub
'méthode 4 pour trouver le nbre de lignes visibles
'méthode 4.1
Set Plage =
ActiveSheet.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
For Each ar In Plage.Areas
nblignes = ar.Rows.Count + nblignes
Next
MsgBox nblignes - 1 ' (-1 car on suppose que la ligne d'entete étant en
A1, cette ligne sera comptée evidemment)
'méthode 4.2
For Each cell In Selection
If Rows(cell.Row).Hidden = False Then
Ctr = Ctr + 1
End If
Next
Amuses-toi bien
A+Bonsoir
J'essaie de mettre en oeuvre quelque chose de ce genre afin de
sélectionner les cellules visibles après un tri
Sheets("Travail").Range("A4:F500").SpecialCells(xlCellTypeVisible).Select
Je vous remercie
Arnaud
Bonsoir AnonymousA
Je suis confondu par tant de connaissances , t'es vraiment trop balèze !
Je vais imprimer tout cela, et l'étudier attentivement.
Un très grand MERCI !!!
Bonne soirée
Arnaud
"anonymousA" a écrit dans le message de news:
42dd3e3d$0$3136$bonnjour,
des infos sur la plagevisible suite à un filtre. Tu pioches pour voir ce
qui t'interesse
Set plagefiltre = ActiveSheet.AutoFilter.Range 'permet de repérer
l'ensemble de la zone sur laquelle s'applique le filtre de base
'autre méthode: en effet, par défaut Excel nomme toujours la plage filtre
_FilterDatabase. p.e si c'est la feuille 1 : Feuil1!_FilterDatabase.
'Si on veut l'atteindre quand on est sur la feuille1, il s'uffit d'écrire
Range("_FilterDatabase"). Si on est sur une autre feuille ou sur
'un autre classeur, il faut écrire
Set rng = Workbooks("toto.xls").Sheets(1).Range("_FilterDatabase")
Set plagefiltre = Range("_FilterDatabase")
Set plagefiltrevisible = plagefiltre.Offset(1,
0).Resize(plagefiltre.Rows.Count - 1,
plagefiltre.Columns.Count).SpecialCells(xlCellTypeVisible)
'méthode2 plus simple encore pour atteindre uniquement cellule d'une
colonne donnéé
'imaginons que la plage à filtre soit toujours plagefiltre donc débute en
A1.
'on veut atteindre la colonne décalée de I de A et on veut ne garder
qu'une seule
'colonne. On écrira alors
'Set plagefiltrevisible = plagefiltre.Offset(1,
I).Resize(plagefiltre.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
'dans ces conditions on fait un décalage de I et on ne garde qu'une
colonne avec le resize
'ensuite il faut juste faire for each c in plagefiltrevisible et le tour
est joué.
'on pourrait aussi écrire pour faire l'économie de set plagefiltre =
ActiveSheet.AutoFilter.Range
'With ActiveSheet.AutoFilter.Range
' Set plagefiltrevisible = .Offset(1, I).Resize(.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
'End With
'pour retrouver le range du filtre de base et eventuellement le nombre de
ligne sou autre
'Worksheets("nom feuille").AutoFilter.Filters(1).Parent.Range.Rows.Count
'*************************************************************************************************************
'Méthode pour trouver la 1ere ligne et la dernière ligne vivible après un
filtre
On Error Resume Next 'le on error est là pour préserver le fait que la
plage visible n'a peut être pas de cellules
With Range("_FilterDatabase")
'ici définit la plage filtrée visible
Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1,
.Columns.Count).SpecialCells(xlCellTypeVisible)
'on pourrait obetnir la 1ere ligne de la plage filtrée visible en
écrivant
'plagefiltrevisible.areas(1).rows(1) 'correspond à la 1ere ligne de la
1ere zone de la plagefiltrevisible
'ici on cherche la dernière ligne de la plage filtrée visible en
écrivant
With plagefiltrevisible
.Areas(.Areas.Count).Rows(.Areas(.Areas.Count).Rows.Count).Select
End With
End With
'****************************************************************************************************************
'méthode1 pour atteindre les cellules de la colonne 5
For Each C In plagefiltrevisible
If C.Column = 5 Then
C.Select
MsgBox C.value
End If
Next
Dim plagevisible As Range
'méthode 3 sur la base des areas
'Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
'MsgBox plagevisible.Count
'
'For J = 1 To plagevisible.Areas.Count
' For i = 1 To plagevisible.Areas(J).Cells.Count
' MsgBox plagevisible.Areas(J).Cells(i).Address
' Next
'Next
Exit Sub
'méthode 4 pour trouver le nbre de lignes visibles
'méthode 4.1
Set Plage =
ActiveSheet.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
For Each ar In Plage.Areas
nblignes = ar.Rows.Count + nblignes
Next
MsgBox nblignes - 1 ' (-1 car on suppose que la ligne d'entete étant en
A1, cette ligne sera comptée evidemment)
'méthode 4.2
For Each cell In Selection
If Rows(cell.Row).Hidden = False Then
Ctr = Ctr + 1
End If
Next
Amuses-toi bien
A+Bonsoir
J'essaie de mettre en oeuvre quelque chose de ce genre afin de
sélectionner les cellules visibles après un tri
Sheets("Travail").Range("A4:F500").SpecialCells(xlCellTypeVisible).Select
Je vous remercie
Arnaud
Bonsoir AnonymousA
Je suis confondu par tant de connaissances , t'es vraiment trop balèze !
Je vais imprimer tout cela, et l'étudier attentivement.
Un très grand MERCI !!!
Bonne soirée
Arnaud
"anonymousA" <anonymousA@wanadoo.fr> a écrit dans le message de news:
42dd3e3d$0$3136$8fcfb975@news.wanadoo.fr...
bonnjour,
des infos sur la plagevisible suite à un filtre. Tu pioches pour voir ce
qui t'interesse
Set plagefiltre = ActiveSheet.AutoFilter.Range 'permet de repérer
l'ensemble de la zone sur laquelle s'applique le filtre de base
'autre méthode: en effet, par défaut Excel nomme toujours la plage filtre
_FilterDatabase. p.e si c'est la feuille 1 : Feuil1!_FilterDatabase.
'Si on veut l'atteindre quand on est sur la feuille1, il s'uffit d'écrire
Range("_FilterDatabase"). Si on est sur une autre feuille ou sur
'un autre classeur, il faut écrire
Set rng = Workbooks("toto.xls").Sheets(1).Range("_FilterDatabase")
Set plagefiltre = Range("_FilterDatabase")
Set plagefiltrevisible = plagefiltre.Offset(1,
0).Resize(plagefiltre.Rows.Count - 1,
plagefiltre.Columns.Count).SpecialCells(xlCellTypeVisible)
'méthode2 plus simple encore pour atteindre uniquement cellule d'une
colonne donnéé
'imaginons que la plage à filtre soit toujours plagefiltre donc débute en
A1.
'on veut atteindre la colonne décalée de I de A et on veut ne garder
qu'une seule
'colonne. On écrira alors
'Set plagefiltrevisible = plagefiltre.Offset(1,
I).Resize(plagefiltre.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
'dans ces conditions on fait un décalage de I et on ne garde qu'une
colonne avec le resize
'ensuite il faut juste faire for each c in plagefiltrevisible et le tour
est joué.
'on pourrait aussi écrire pour faire l'économie de set plagefiltre =
ActiveSheet.AutoFilter.Range
'With ActiveSheet.AutoFilter.Range
' Set plagefiltrevisible = .Offset(1, I).Resize(.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
'End With
'pour retrouver le range du filtre de base et eventuellement le nombre de
ligne sou autre
'Worksheets("nom feuille").AutoFilter.Filters(1).Parent.Range.Rows.Count
'*************************************************************************************************************
'Méthode pour trouver la 1ere ligne et la dernière ligne vivible après un
filtre
On Error Resume Next 'le on error est là pour préserver le fait que la
plage visible n'a peut être pas de cellules
With Range("_FilterDatabase")
'ici définit la plage filtrée visible
Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1,
.Columns.Count).SpecialCells(xlCellTypeVisible)
'on pourrait obetnir la 1ere ligne de la plage filtrée visible en
écrivant
'plagefiltrevisible.areas(1).rows(1) 'correspond à la 1ere ligne de la
1ere zone de la plagefiltrevisible
'ici on cherche la dernière ligne de la plage filtrée visible en
écrivant
With plagefiltrevisible
.Areas(.Areas.Count).Rows(.Areas(.Areas.Count).Rows.Count).Select
End With
End With
'****************************************************************************************************************
'méthode1 pour atteindre les cellules de la colonne 5
For Each C In plagefiltrevisible
If C.Column = 5 Then
C.Select
MsgBox C.value
End If
Next
Dim plagevisible As Range
'méthode 3 sur la base des areas
'Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
'MsgBox plagevisible.Count
'
'For J = 1 To plagevisible.Areas.Count
' For i = 1 To plagevisible.Areas(J).Cells.Count
' MsgBox plagevisible.Areas(J).Cells(i).Address
' Next
'Next
Exit Sub
'méthode 4 pour trouver le nbre de lignes visibles
'méthode 4.1
Set Plage =
ActiveSheet.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
For Each ar In Plage.Areas
nblignes = ar.Rows.Count + nblignes
Next
MsgBox nblignes - 1 ' (-1 car on suppose que la ligne d'entete étant en
A1, cette ligne sera comptée evidemment)
'méthode 4.2
For Each cell In Selection
If Rows(cell.Row).Hidden = False Then
Ctr = Ctr + 1
End If
Next
Amuses-toi bien
A+
Bonsoir
J'essaie de mettre en oeuvre quelque chose de ce genre afin de
sélectionner les cellules visibles après un tri
Sheets("Travail").Range("A4:F500").SpecialCells(xlCellTypeVisible).Select
Je vous remercie
Arnaud
Bonsoir AnonymousA
Je suis confondu par tant de connaissances , t'es vraiment trop balèze !
Je vais imprimer tout cela, et l'étudier attentivement.
Un très grand MERCI !!!
Bonne soirée
Arnaud
"anonymousA" a écrit dans le message de news:
42dd3e3d$0$3136$bonnjour,
des infos sur la plagevisible suite à un filtre. Tu pioches pour voir ce
qui t'interesse
Set plagefiltre = ActiveSheet.AutoFilter.Range 'permet de repérer
l'ensemble de la zone sur laquelle s'applique le filtre de base
'autre méthode: en effet, par défaut Excel nomme toujours la plage filtre
_FilterDatabase. p.e si c'est la feuille 1 : Feuil1!_FilterDatabase.
'Si on veut l'atteindre quand on est sur la feuille1, il s'uffit d'écrire
Range("_FilterDatabase"). Si on est sur une autre feuille ou sur
'un autre classeur, il faut écrire
Set rng = Workbooks("toto.xls").Sheets(1).Range("_FilterDatabase")
Set plagefiltre = Range("_FilterDatabase")
Set plagefiltrevisible = plagefiltre.Offset(1,
0).Resize(plagefiltre.Rows.Count - 1,
plagefiltre.Columns.Count).SpecialCells(xlCellTypeVisible)
'méthode2 plus simple encore pour atteindre uniquement cellule d'une
colonne donnéé
'imaginons que la plage à filtre soit toujours plagefiltre donc débute en
A1.
'on veut atteindre la colonne décalée de I de A et on veut ne garder
qu'une seule
'colonne. On écrira alors
'Set plagefiltrevisible = plagefiltre.Offset(1,
I).Resize(plagefiltre.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
'dans ces conditions on fait un décalage de I et on ne garde qu'une
colonne avec le resize
'ensuite il faut juste faire for each c in plagefiltrevisible et le tour
est joué.
'on pourrait aussi écrire pour faire l'économie de set plagefiltre =
ActiveSheet.AutoFilter.Range
'With ActiveSheet.AutoFilter.Range
' Set plagefiltrevisible = .Offset(1, I).Resize(.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
'End With
'pour retrouver le range du filtre de base et eventuellement le nombre de
ligne sou autre
'Worksheets("nom feuille").AutoFilter.Filters(1).Parent.Range.Rows.Count
'*************************************************************************************************************
'Méthode pour trouver la 1ere ligne et la dernière ligne vivible après un
filtre
On Error Resume Next 'le on error est là pour préserver le fait que la
plage visible n'a peut être pas de cellules
With Range("_FilterDatabase")
'ici définit la plage filtrée visible
Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1,
.Columns.Count).SpecialCells(xlCellTypeVisible)
'on pourrait obetnir la 1ere ligne de la plage filtrée visible en
écrivant
'plagefiltrevisible.areas(1).rows(1) 'correspond à la 1ere ligne de la
1ere zone de la plagefiltrevisible
'ici on cherche la dernière ligne de la plage filtrée visible en
écrivant
With plagefiltrevisible
.Areas(.Areas.Count).Rows(.Areas(.Areas.Count).Rows.Count).Select
End With
End With
'****************************************************************************************************************
'méthode1 pour atteindre les cellules de la colonne 5
For Each C In plagefiltrevisible
If C.Column = 5 Then
C.Select
MsgBox C.value
End If
Next
Dim plagevisible As Range
'méthode 3 sur la base des areas
'Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
'MsgBox plagevisible.Count
'
'For J = 1 To plagevisible.Areas.Count
' For i = 1 To plagevisible.Areas(J).Cells.Count
' MsgBox plagevisible.Areas(J).Cells(i).Address
' Next
'Next
Exit Sub
'méthode 4 pour trouver le nbre de lignes visibles
'méthode 4.1
Set Plage =
ActiveSheet.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
For Each ar In Plage.Areas
nblignes = ar.Rows.Count + nblignes
Next
MsgBox nblignes - 1 ' (-1 car on suppose que la ligne d'entete étant en
A1, cette ligne sera comptée evidemment)
'méthode 4.2
For Each cell In Selection
If Rows(cell.Row).Hidden = False Then
Ctr = Ctr + 1
End If
Next
Amuses-toi bien
A+Bonsoir
J'essaie de mettre en oeuvre quelque chose de ce genre afin de
sélectionner les cellules visibles après un tri
Sheets("Travail").Range("A4:F500").SpecialCells(xlCellTypeVisible).Select
Je vous remercie
Arnaud
je te remercie , mais comme l'a écrit Twinley aujourd'hui, le mot qui
convient pour ce type de connaissances est d'abord travail qu'il faut
coupler à curiosité ( parce qu'il y a un paquet de sites avec un paquet
d'auteurs ).Parallèlement, il faut bien sur aussi du temps , que tu gagnes
aujourd'hui gâce à tous les contributeurs de ce forum.
Bon courage.
Cordialement,
A+Bonsoir AnonymousA
Je suis confondu par tant de connaissances , t'es vraiment trop balèze !
Je vais imprimer tout cela, et l'étudier attentivement.
Un très grand MERCI !!!
Bonne soirée
Arnaud
"anonymousA" a écrit dans le message de news:
42dd3e3d$0$3136$bonnjour,
des infos sur la plagevisible suite à un filtre. Tu pioches pour voir ce
qui t'interesse
Set plagefiltre = ActiveSheet.AutoFilter.Range 'permet de repérer
l'ensemble de la zone sur laquelle s'applique le filtre de base
'autre méthode: en effet, par défaut Excel nomme toujours la plage filtre
_FilterDatabase. p.e si c'est la feuille 1 : Feuil1!_FilterDatabase.
'Si on veut l'atteindre quand on est sur la feuille1, il s'uffit
d'écrire Range("_FilterDatabase"). Si on est sur une autre feuille ou sur
'un autre classeur, il faut écrire
Set rng = Workbooks("toto.xls").Sheets(1).Range("_FilterDatabase")
Set plagefiltre = Range("_FilterDatabase")
Set plagefiltrevisible = plagefiltre.Offset(1,
0).Resize(plagefiltre.Rows.Count - 1,
plagefiltre.Columns.Count).SpecialCells(xlCellTypeVisible)
'méthode2 plus simple encore pour atteindre uniquement cellule d'une
colonne donnéé
'imaginons que la plage à filtre soit toujours plagefiltre donc débute en
A1.
'on veut atteindre la colonne décalée de I de A et on veut ne garder
qu'une seule
'colonne. On écrira alors
'Set plagefiltrevisible = plagefiltre.Offset(1,
I).Resize(plagefiltre.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
'dans ces conditions on fait un décalage de I et on ne garde qu'une
colonne avec le resize
'ensuite il faut juste faire for each c in plagefiltrevisible et le tour
est joué.
'on pourrait aussi écrire pour faire l'économie de set plagefiltre =
ActiveSheet.AutoFilter.Range
'With ActiveSheet.AutoFilter.Range
' Set plagefiltrevisible = .Offset(1, I).Resize(.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
'End With
'pour retrouver le range du filtre de base et eventuellement le nombre de
ligne sou autre
'Worksheets("nom feuille").AutoFilter.Filters(1).Parent.Range.Rows.Count
'*************************************************************************************************************
'Méthode pour trouver la 1ere ligne et la dernière ligne vivible après un
filtre
On Error Resume Next 'le on error est là pour préserver le fait que la
plage visible n'a peut être pas de cellules
With Range("_FilterDatabase")
'ici définit la plage filtrée visible
Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1,
.Columns.Count).SpecialCells(xlCellTypeVisible)
'on pourrait obetnir la 1ere ligne de la plage filtrée visible en
écrivant
'plagefiltrevisible.areas(1).rows(1) 'correspond à la 1ere ligne de
la 1ere zone de la plagefiltrevisible
'ici on cherche la dernière ligne de la plage filtrée visible en
écrivant
With plagefiltrevisible
.Areas(.Areas.Count).Rows(.Areas(.Areas.Count).Rows.Count).Select
End With
End With
'****************************************************************************************************************
'méthode1 pour atteindre les cellules de la colonne 5
For Each C In plagefiltrevisible
If C.Column = 5 Then
C.Select
MsgBox C.value
End If
Next
Dim plagevisible As Range
'méthode 3 sur la base des areas
'Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
'MsgBox plagevisible.Count
'
'For J = 1 To plagevisible.Areas.Count
' For i = 1 To plagevisible.Areas(J).Cells.Count
' MsgBox plagevisible.Areas(J).Cells(i).Address
' Next
'Next
Exit Sub
'méthode 4 pour trouver le nbre de lignes visibles
'méthode 4.1
Set Plage =
ActiveSheet.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
For Each ar In Plage.Areas
nblignes = ar.Rows.Count + nblignes
Next
MsgBox nblignes - 1 ' (-1 car on suppose que la ligne d'entete étant en
A1, cette ligne sera comptée evidemment)
'méthode 4.2
For Each cell In Selection
If Rows(cell.Row).Hidden = False Then
Ctr = Ctr + 1
End If
Next
Amuses-toi bien
A+Bonsoir
J'essaie de mettre en oeuvre quelque chose de ce genre afin de
sélectionner les cellules visibles après un tri
Sheets("Travail").Range("A4:F500").SpecialCells(xlCellTypeVisible).Select
Je vous remercie
Arnaud
je te remercie , mais comme l'a écrit Twinley aujourd'hui, le mot qui
convient pour ce type de connaissances est d'abord travail qu'il faut
coupler à curiosité ( parce qu'il y a un paquet de sites avec un paquet
d'auteurs ).Parallèlement, il faut bien sur aussi du temps , que tu gagnes
aujourd'hui gâce à tous les contributeurs de ce forum.
Bon courage.
Cordialement,
A+
Bonsoir AnonymousA
Je suis confondu par tant de connaissances , t'es vraiment trop balèze !
Je vais imprimer tout cela, et l'étudier attentivement.
Un très grand MERCI !!!
Bonne soirée
Arnaud
"anonymousA" <anonymousA@wanadoo.fr> a écrit dans le message de news:
42dd3e3d$0$3136$8fcfb975@news.wanadoo.fr...
bonnjour,
des infos sur la plagevisible suite à un filtre. Tu pioches pour voir ce
qui t'interesse
Set plagefiltre = ActiveSheet.AutoFilter.Range 'permet de repérer
l'ensemble de la zone sur laquelle s'applique le filtre de base
'autre méthode: en effet, par défaut Excel nomme toujours la plage filtre
_FilterDatabase. p.e si c'est la feuille 1 : Feuil1!_FilterDatabase.
'Si on veut l'atteindre quand on est sur la feuille1, il s'uffit
d'écrire Range("_FilterDatabase"). Si on est sur une autre feuille ou sur
'un autre classeur, il faut écrire
Set rng = Workbooks("toto.xls").Sheets(1).Range("_FilterDatabase")
Set plagefiltre = Range("_FilterDatabase")
Set plagefiltrevisible = plagefiltre.Offset(1,
0).Resize(plagefiltre.Rows.Count - 1,
plagefiltre.Columns.Count).SpecialCells(xlCellTypeVisible)
'méthode2 plus simple encore pour atteindre uniquement cellule d'une
colonne donnéé
'imaginons que la plage à filtre soit toujours plagefiltre donc débute en
A1.
'on veut atteindre la colonne décalée de I de A et on veut ne garder
qu'une seule
'colonne. On écrira alors
'Set plagefiltrevisible = plagefiltre.Offset(1,
I).Resize(plagefiltre.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
'dans ces conditions on fait un décalage de I et on ne garde qu'une
colonne avec le resize
'ensuite il faut juste faire for each c in plagefiltrevisible et le tour
est joué.
'on pourrait aussi écrire pour faire l'économie de set plagefiltre =
ActiveSheet.AutoFilter.Range
'With ActiveSheet.AutoFilter.Range
' Set plagefiltrevisible = .Offset(1, I).Resize(.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
'End With
'pour retrouver le range du filtre de base et eventuellement le nombre de
ligne sou autre
'Worksheets("nom feuille").AutoFilter.Filters(1).Parent.Range.Rows.Count
'*************************************************************************************************************
'Méthode pour trouver la 1ere ligne et la dernière ligne vivible après un
filtre
On Error Resume Next 'le on error est là pour préserver le fait que la
plage visible n'a peut être pas de cellules
With Range("_FilterDatabase")
'ici définit la plage filtrée visible
Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1,
.Columns.Count).SpecialCells(xlCellTypeVisible)
'on pourrait obetnir la 1ere ligne de la plage filtrée visible en
écrivant
'plagefiltrevisible.areas(1).rows(1) 'correspond à la 1ere ligne de
la 1ere zone de la plagefiltrevisible
'ici on cherche la dernière ligne de la plage filtrée visible en
écrivant
With plagefiltrevisible
.Areas(.Areas.Count).Rows(.Areas(.Areas.Count).Rows.Count).Select
End With
End With
'****************************************************************************************************************
'méthode1 pour atteindre les cellules de la colonne 5
For Each C In plagefiltrevisible
If C.Column = 5 Then
C.Select
MsgBox C.value
End If
Next
Dim plagevisible As Range
'méthode 3 sur la base des areas
'Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
'MsgBox plagevisible.Count
'
'For J = 1 To plagevisible.Areas.Count
' For i = 1 To plagevisible.Areas(J).Cells.Count
' MsgBox plagevisible.Areas(J).Cells(i).Address
' Next
'Next
Exit Sub
'méthode 4 pour trouver le nbre de lignes visibles
'méthode 4.1
Set Plage =
ActiveSheet.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
For Each ar In Plage.Areas
nblignes = ar.Rows.Count + nblignes
Next
MsgBox nblignes - 1 ' (-1 car on suppose que la ligne d'entete étant en
A1, cette ligne sera comptée evidemment)
'méthode 4.2
For Each cell In Selection
If Rows(cell.Row).Hidden = False Then
Ctr = Ctr + 1
End If
Next
Amuses-toi bien
A+
Bonsoir
J'essaie de mettre en oeuvre quelque chose de ce genre afin de
sélectionner les cellules visibles après un tri
Sheets("Travail").Range("A4:F500").SpecialCells(xlCellTypeVisible).Select
Je vous remercie
Arnaud
je te remercie , mais comme l'a écrit Twinley aujourd'hui, le mot qui
convient pour ce type de connaissances est d'abord travail qu'il faut
coupler à curiosité ( parce qu'il y a un paquet de sites avec un paquet
d'auteurs ).Parallèlement, il faut bien sur aussi du temps , que tu gagnes
aujourd'hui gâce à tous les contributeurs de ce forum.
Bon courage.
Cordialement,
A+Bonsoir AnonymousA
Je suis confondu par tant de connaissances , t'es vraiment trop balèze !
Je vais imprimer tout cela, et l'étudier attentivement.
Un très grand MERCI !!!
Bonne soirée
Arnaud
"anonymousA" a écrit dans le message de news:
42dd3e3d$0$3136$bonnjour,
des infos sur la plagevisible suite à un filtre. Tu pioches pour voir ce
qui t'interesse
Set plagefiltre = ActiveSheet.AutoFilter.Range 'permet de repérer
l'ensemble de la zone sur laquelle s'applique le filtre de base
'autre méthode: en effet, par défaut Excel nomme toujours la plage filtre
_FilterDatabase. p.e si c'est la feuille 1 : Feuil1!_FilterDatabase.
'Si on veut l'atteindre quand on est sur la feuille1, il s'uffit
d'écrire Range("_FilterDatabase"). Si on est sur une autre feuille ou sur
'un autre classeur, il faut écrire
Set rng = Workbooks("toto.xls").Sheets(1).Range("_FilterDatabase")
Set plagefiltre = Range("_FilterDatabase")
Set plagefiltrevisible = plagefiltre.Offset(1,
0).Resize(plagefiltre.Rows.Count - 1,
plagefiltre.Columns.Count).SpecialCells(xlCellTypeVisible)
'méthode2 plus simple encore pour atteindre uniquement cellule d'une
colonne donnéé
'imaginons que la plage à filtre soit toujours plagefiltre donc débute en
A1.
'on veut atteindre la colonne décalée de I de A et on veut ne garder
qu'une seule
'colonne. On écrira alors
'Set plagefiltrevisible = plagefiltre.Offset(1,
I).Resize(plagefiltre.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
'dans ces conditions on fait un décalage de I et on ne garde qu'une
colonne avec le resize
'ensuite il faut juste faire for each c in plagefiltrevisible et le tour
est joué.
'on pourrait aussi écrire pour faire l'économie de set plagefiltre =
ActiveSheet.AutoFilter.Range
'With ActiveSheet.AutoFilter.Range
' Set plagefiltrevisible = .Offset(1, I).Resize(.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
'End With
'pour retrouver le range du filtre de base et eventuellement le nombre de
ligne sou autre
'Worksheets("nom feuille").AutoFilter.Filters(1).Parent.Range.Rows.Count
'*************************************************************************************************************
'Méthode pour trouver la 1ere ligne et la dernière ligne vivible après un
filtre
On Error Resume Next 'le on error est là pour préserver le fait que la
plage visible n'a peut être pas de cellules
With Range("_FilterDatabase")
'ici définit la plage filtrée visible
Set plagefiltrevisible = .Offset(1, 0).Resize(.Rows.Count - 1,
.Columns.Count).SpecialCells(xlCellTypeVisible)
'on pourrait obetnir la 1ere ligne de la plage filtrée visible en
écrivant
'plagefiltrevisible.areas(1).rows(1) 'correspond à la 1ere ligne de
la 1ere zone de la plagefiltrevisible
'ici on cherche la dernière ligne de la plage filtrée visible en
écrivant
With plagefiltrevisible
.Areas(.Areas.Count).Rows(.Areas(.Areas.Count).Rows.Count).Select
End With
End With
'****************************************************************************************************************
'méthode1 pour atteindre les cellules de la colonne 5
For Each C In plagefiltrevisible
If C.Column = 5 Then
C.Select
MsgBox C.value
End If
Next
Dim plagevisible As Range
'méthode 3 sur la base des areas
'Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
'MsgBox plagevisible.Count
'
'For J = 1 To plagevisible.Areas.Count
' For i = 1 To plagevisible.Areas(J).Cells.Count
' MsgBox plagevisible.Areas(J).Cells(i).Address
' Next
'Next
Exit Sub
'méthode 4 pour trouver le nbre de lignes visibles
'méthode 4.1
Set Plage =
ActiveSheet.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
For Each ar In Plage.Areas
nblignes = ar.Rows.Count + nblignes
Next
MsgBox nblignes - 1 ' (-1 car on suppose que la ligne d'entete étant en
A1, cette ligne sera comptée evidemment)
'méthode 4.2
For Each cell In Selection
If Rows(cell.Row).Hidden = False Then
Ctr = Ctr + 1
End If
Next
Amuses-toi bien
A+Bonsoir
J'essaie de mettre en oeuvre quelque chose de ce genre afin de
sélectionner les cellules visibles après un tri
Sheets("Travail").Range("A4:F500").SpecialCells(xlCellTypeVisible).Select
Je vous remercie
Arnaud