Bonjour,
par macro j'effectue un filtrage de données sur la feuille 1, par exemple en ne gardant dans le tableau que les lignes dont la 6e colonne est non-vide :
Certaines lignes de la feuille 1 sont donc masquées. Mon objectif est maintenant de masquer les mêmes lignes sur la feuille 2 (sans effectuer de filtre sur cette 2e feuille). J'y suis parvenu mais je suis obligé de regarder ligne par ligne si chaque ligne de la feuille 1 est visible ou non et appliquer la même propriété sur chaque ligne de la feuille 2 avec une boucle Do While Loop ou For Next (voir ci-dessous). Cela prend plus de 10 secondes sur mon PC alors que le filtre de la feuille 1 est quasi instantané. C'est impossible d'attendre aussi longtemps pour les utilisateurs. Y a-t-il moyen de le faire cela d'un coup ? J'ai essayé de copier directement maZone1.Rows.IsVisible sur maZone2.Rows.IsVisible mais il semble que la propriété soit un scalaire et pas un tableau...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 maZone1 = maFeuille1.getCellRangeByPosition(0,0,10,500) '11 colonnes 501 lignes par exemple With champsFiltre(0) .Field = 5 ' 6e colonne .Operator = com.sun.star.sheet.FilterOperator2.NOT_EMPTY End With monFiltre = maZone1.createFilterDescriptor(True) With monFiltre .CopyOutputData = False .ContainsHeader = False .FilterFields2 = champsFiltre() End With maZone1.filter(monFiltre)
A terme je souhaiterais faire la même chose avec un tri et pas simplement un filtre, c'est-à-dire appliquer la même permutation de lignes sur la feuille 2 que celle qui a été appliquée à la feuille 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 maZone2=maFeuille2.getCellRangeByPosition(0,0,10,500) oRows1 = maZone1.getRows() oRows2 = maZone2.getRows() oRow1Enum = oRows1.createEnumeration() oRow2Enum = oRows2.createEnumeration() Do While oRow1Enum.hasMoreElements() oRow1 = oRow1Enum.nextElement() oRow2 = oRow2Enum.nextElement() oRow2.IsVisible=oRow1.IsVisible Loop
Si quelqu'un a une solution, je suis preneur...
Partager