J'essaie en VBA d'effecture un tri sur un tableau situé sur un sheet et
affecter le résultat +/- 20 lignes sur 800 à une variable Tableau (TaBLODC
dans l'exemple ci-dessous).
En utilisant le code ci-dessous... rien à faire... le tableau après test ne
reprend que la 1er ligne de la sheet et pas de la selection
Quelqu'un aurait-il une idée ?
Un grand merci d'avance
a+++
Bruno
Selection.AutoFilter Field:=1, Criteria1:="Bruxelles"
Selection.AutoFilter Field:=3, Criteria1:="05"
'Range("a1").Select
Range(Cells(1, 1), Cells(NUMrows, 4)).SpecialCells(xlCellTypeVisible).Select
'NUMrows = nombre total de ligne soit +/- 800
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel
Bonjour. En mettant : Set taBLODC = Selection.SpecialCells(xlCellTypeVisible) Cordialement. Daniel "Bruno" a écrit dans le message de news: 434e8992$0$20816$
Bonjour à tous,
J'essaie en VBA d'effecture un tri sur un tableau situé sur un sheet et affecter le résultat +/- 20 lignes sur 800 à une variable Tableau (TaBLODC dans l'exemple ci-dessous). En utilisant le code ci-dessous... rien à faire... le tableau après test ne reprend que la 1er ligne de la sheet et pas de la selection Quelqu'un aurait-il une idée ?
Un grand merci d'avance a+++ Bruno Selection.AutoFilter Field:=1, Criteria1:="Bruxelles"
Selection.AutoFilter Field:=3, Criteria1:="05"
'Range("a1").Select
Range(Cells(1, 1), Cells(NUMrows, 4)).SpecialCells(xlCellTypeVisible).Select 'NUMrows = nombre total de ligne soit +/- 800
Bonjour.
En mettant :
Set taBLODC = Selection.SpecialCells(xlCellTypeVisible)
Cordialement.
Daniel
"Bruno" <Bruno.termonia@skynet.be> a écrit dans le message de news:
434e8992$0$20816$ba620e4c@news.skynet.be...
Bonjour à tous,
J'essaie en VBA d'effecture un tri sur un tableau situé sur un sheet et
affecter le résultat +/- 20 lignes sur 800 à une variable Tableau (TaBLODC
dans l'exemple ci-dessous).
En utilisant le code ci-dessous... rien à faire... le tableau après test
ne reprend que la 1er ligne de la sheet et pas de la selection
Quelqu'un aurait-il une idée ?
Un grand merci d'avance
a+++
Bruno
Selection.AutoFilter Field:=1, Criteria1:="Bruxelles"
Selection.AutoFilter Field:=3, Criteria1:="05"
'Range("a1").Select
Range(Cells(1, 1), Cells(NUMrows,
4)).SpecialCells(xlCellTypeVisible).Select 'NUMrows = nombre total de
ligne soit +/- 800
Bonjour. En mettant : Set taBLODC = Selection.SpecialCells(xlCellTypeVisible) Cordialement. Daniel "Bruno" a écrit dans le message de news: 434e8992$0$20816$
Bonjour à tous,
J'essaie en VBA d'effecture un tri sur un tableau situé sur un sheet et affecter le résultat +/- 20 lignes sur 800 à une variable Tableau (TaBLODC dans l'exemple ci-dessous). En utilisant le code ci-dessous... rien à faire... le tableau après test ne reprend que la 1er ligne de la sheet et pas de la selection Quelqu'un aurait-il une idée ?
Un grand merci d'avance a+++ Bruno Selection.AutoFilter Field:=1, Criteria1:="Bruxelles"
Selection.AutoFilter Field:=3, Criteria1:="05"
'Range("a1").Select
Range(Cells(1, 1), Cells(NUMrows, 4)).SpecialCells(xlCellTypeVisible).Select 'NUMrows = nombre total de ligne soit +/- 800
le problème du transfert de la plage vers un tableau quand il s'agit d'une plage de cellules non contigues c'est qu'il ne prend que la 1ere zone de cette plage . Or c'est souvent le cas d'une plage filtrée d'avoir plusieurs zones. Donc pour remplir un tableau à partir de cette plage filtrée , je te propose la proc suivante qui ne prend en compte que les cellules filtrées sans l'entête. Dasn ce qui suit on suppose qu'un filtre a eu lieu et que le filtre retourne au moins une valeur. Sinon , il faudra gérer l'erreur eventuelle.
Dim tablo()
With Range("_FilterDataBase") With .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count) nbcols = .Columns.Count
With .SpecialCells(xlCellTypeVisible) For Each are In .Areas nblignes = are.Columns(1).Cells.Count + nblignes Next
ReDim Preserve tablo(1 To nblignes, 1 To nbcols)
For I = 1 To .Areas.Count With .Areas(I).Columns(1) For K = 1 To .Cells.Count For J = 1 To nbcols tablo(aleph + K, J) = .Cells(K).Offset(0, J - 1) Next Next aleph = aleph + K - 1 End With Next
End With End With
End With
A+
Bonjour à tous,
J'essaie en VBA d'effecture un tri sur un tableau situé sur un sheet et affecter le résultat +/- 20 lignes sur 800 à une variable Tableau (TaBLODC dans l'exemple ci-dessous). En utilisant le code ci-dessous... rien à faire... le tableau après test ne reprend que la 1er ligne de la sheet et pas de la selection Quelqu'un aurait-il une idée ?
Un grand merci d'avance a+++ Bruno Selection.AutoFilter Field:=1, Criteria1:="Bruxelles"
Selection.AutoFilter Field:=3, Criteria1:="05"
'Range("a1").Select
Range(Cells(1, 1), Cells(NUMrows, 4)).SpecialCells(xlCellTypeVisible).Select 'NUMrows = nombre total de ligne soit +/- 800
le problème du transfert de la plage vers un tableau quand il s'agit
d'une plage de cellules non contigues c'est qu'il ne prend que la 1ere
zone de cette plage . Or c'est souvent le cas d'une plage filtrée
d'avoir plusieurs zones.
Donc pour remplir un tableau à partir de cette plage filtrée , je te
propose la proc suivante qui ne prend en compte que les cellules
filtrées sans l'entête.
Dasn ce qui suit on suppose qu'un filtre a eu lieu et que le filtre
retourne au moins une valeur. Sinon , il faudra gérer l'erreur eventuelle.
Dim tablo()
With Range("_FilterDataBase")
With .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count)
nbcols = .Columns.Count
With .SpecialCells(xlCellTypeVisible)
For Each are In .Areas
nblignes = are.Columns(1).Cells.Count + nblignes
Next
ReDim Preserve tablo(1 To nblignes, 1 To nbcols)
For I = 1 To .Areas.Count
With .Areas(I).Columns(1)
For K = 1 To .Cells.Count
For J = 1 To nbcols
tablo(aleph + K, J) = .Cells(K).Offset(0, J - 1)
Next
Next
aleph = aleph + K - 1
End With
Next
End With
End With
End With
A+
Bonjour à tous,
J'essaie en VBA d'effecture un tri sur un tableau situé sur un sheet et
affecter le résultat +/- 20 lignes sur 800 à une variable Tableau (TaBLODC
dans l'exemple ci-dessous).
En utilisant le code ci-dessous... rien à faire... le tableau après test ne
reprend que la 1er ligne de la sheet et pas de la selection
Quelqu'un aurait-il une idée ?
Un grand merci d'avance
a+++
Bruno
Selection.AutoFilter Field:=1, Criteria1:="Bruxelles"
Selection.AutoFilter Field:=3, Criteria1:="05"
'Range("a1").Select
Range(Cells(1, 1), Cells(NUMrows, 4)).SpecialCells(xlCellTypeVisible).Select
'NUMrows = nombre total de ligne soit +/- 800
le problème du transfert de la plage vers un tableau quand il s'agit d'une plage de cellules non contigues c'est qu'il ne prend que la 1ere zone de cette plage . Or c'est souvent le cas d'une plage filtrée d'avoir plusieurs zones. Donc pour remplir un tableau à partir de cette plage filtrée , je te propose la proc suivante qui ne prend en compte que les cellules filtrées sans l'entête. Dasn ce qui suit on suppose qu'un filtre a eu lieu et que le filtre retourne au moins une valeur. Sinon , il faudra gérer l'erreur eventuelle.
Dim tablo()
With Range("_FilterDataBase") With .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count) nbcols = .Columns.Count
With .SpecialCells(xlCellTypeVisible) For Each are In .Areas nblignes = are.Columns(1).Cells.Count + nblignes Next
ReDim Preserve tablo(1 To nblignes, 1 To nbcols)
For I = 1 To .Areas.Count With .Areas(I).Columns(1) For K = 1 To .Cells.Count For J = 1 To nbcols tablo(aleph + K, J) = .Cells(K).Offset(0, J - 1) Next Next aleph = aleph + K - 1 End With Next
End With End With
End With
A+
Bonjour à tous,
J'essaie en VBA d'effecture un tri sur un tableau situé sur un sheet et affecter le résultat +/- 20 lignes sur 800 à une variable Tableau (TaBLODC dans l'exemple ci-dessous). En utilisant le code ci-dessous... rien à faire... le tableau après test ne reprend que la 1er ligne de la sheet et pas de la selection Quelqu'un aurait-il une idée ?
Un grand merci d'avance a+++ Bruno Selection.AutoFilter Field:=1, Criteria1:="Bruxelles"
Selection.AutoFilter Field:=3, Criteria1:="05"
'Range("a1").Select
Range(Cells(1, 1), Cells(NUMrows, 4)).SpecialCells(xlCellTypeVisible).Select 'NUMrows = nombre total de ligne soit +/- 800