[VBA] - Délimitation d'un tableau à partir des cellules visibles

Bonjour,

J'essaie de délimiter après filtrage un tableau dans une variable tableau, mais je ne sais pas comment m'y prendre.

J'ai fait quelques essais, mais je sens que ça va me prendre de nombreuses heures de recherche, là où il est probable que vous aillez la solution en tête.

Je joins un fichier, avec la délimitation d'un tableau normal et l'autre filtré, et le calcul de leurs dimension ; vous verrez que les 2 font la même taille, alors que le second n'a que 3 lignes visibles.

Je vous remercie de votre attention,

Bonne fin de journée !

Bonjour,

...vous verrez que les 2 font la même taille, alors que le second n'a que 3 lignes visibles...

Pas vraiment !! Reprenons votre code :

With ActiveSheet
 aa = .Cells(1, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 1)
 bb = .Cells(1, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 1).SpecialCells(xlCellTypeVisible)

MsgBox "Nbr ligne feuille Test1 : " & UBound(aa) & "; Nbr ligne feuille Test2 : " & UBound(bb)
End With

On récupère les 2 nombres de lignes dans la même ActiveSheet .....!!

Ca ne devrait pas vous prendre plus de quelques minutes pour rectifier l'étourderie...

Bon Week-End

Ah mince, en voulant faire vite pour l'exemple j'ai fait l'erreur de n'utiliser que la feuille active.

Le problème est le même si on fait la recherche dans les 2 feuilles.

Je teste demain quand j'aurai mon ordi, mais de souvenir j'ai ce problème sur mon document de travail, sur lequel je ne traite qu'une feuille.

Merci pour votre remarque :)

Bonne soirée !

Bonjour,

Voici une autre version de mon fichier test.

Actuellement, la délimitation du tableau sur la feuille "Test 2" n'est pas bonne.
Il est indiqué que le tableau fait 2 lignes, alors qu'en fait il contient 4 lignes.

J'ai l'impression qu'il s'arrête de compter à la première ligne filtrée (soit la n°2).

Bonne journée !

Bonjour,

M'y étant penché un petit peut hier soir, vos plages n'étant pas contigües, je pense que vous ne chargez que la 1ère plage dans l'array (à confirmer). Ci contre un code donnant le résultat escompté :

Private Sub CommandButton1_Click()
With Sheets("Test 1")
aa = .Cells(1, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 1)
End With
With Sheets("Test 2")
    Set PLAG = .Cells(1, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 1).SpecialCells(xlCellTypeVisible) 'Defini la plage discontinue
    ReDim bb(1 To PLAG.Cells.Count) 'Redimensionne l'array bb en fonction du nombre de cellule dans la plage
    L = 1 'Initie l'indice de la table a 1
    For Each CELL In PLAG.Cells 'Pour chaque cellule de la plage discontinue
        bb(L) = CELL 'charge la cellule dans l'array ligne L
        L = L + 1 'incrémente la ligne de l'array
    Next CELL
End With
MsgBox "Nbr ligne feuille Test1 : " & UBound(aa) & "; Nbr ligne feuille Test2 : " & UBound(bb)
End Sub

Cdlt,

Bonjour,

Merci beaucoup pour votre réponse !

Effectivement le résultat obtenu est bon. A partir d'ici je pense que je n'aurai plus de problème pour terminer ce projet !

Bonne journée !

Rechercher des sujets similaires à "vba delimitation tableau partir visibles"