Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Remplir un tableau après une tri en VBA

2 réponses
Avatar
Bruno
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



TaBLODC = Selection.SpecialCells(xlCellTypeVisible).Value 'Selection
devrait compter +/- 20 lignes

2 réponses

Avatar
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



TaBLODC = Selection.SpecialCells(xlCellTypeVisible).Value 'Selection
devrait compter +/- 20 lignes






Avatar
anonymousA
bonjour,

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



TaBLODC = Selection.SpecialCells(xlCellTypeVisible).Value 'Selection
devrait compter +/- 20 lignes