1. #1
    Candidat au Club
    Homme Profil pro
    Responsable association
    Inscrit en
    mai 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable association

    Informations forums :
    Inscription : mai 2018
    Messages : 3
    Points : 2
    Points
    2

    Par défaut Appliquer le résultat d'un filtre/tri sur une deuxième feuille

    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 :
    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)
    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...

    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

    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.

    Si quelqu'un a une solution, je suis preneur...

  2. #2
    Membre du Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    octobre 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : octobre 2016
    Messages : 32
    Points : 52
    Points
    52

    Par défaut

    Bonjour,

    Citation Envoyé par DensGP33 Voir le message
    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.

    Si quelqu'un a une solution, je suis preneur...
    A part copier la colonne à trier en Feuille2 pour que toutes les lignes suivent le mouvement du tri, je ne vois pas trop comment tu pourrais t'en sortir simplement. A priori il n'existe pas de méthode implémentée pour faire cela car ce genre de pratique n'a rien de conventionnel pour ne pas dire logique. Idem pour le filtrage.

    Si tu pouvais en dire un peu plus sur la finalité de la chose, non seulement pour répondre à ma curiosité mais peut-être pour trouver un contournement efficace. Merci

    A+

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable association
    Inscrit en
    mai 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable association

    Informations forums :
    Inscription : mai 2018
    Messages : 3
    Points : 2
    Points
    2

    Par défaut

    Effectivement, c'est une solution. Je ne l'avais pas considérée jusqu'ici, pensant qu'il y avait plus simple.
    Concernant l'application, pour faire simple il s'agit de l'administration d'un centre de loisirs et chaque feuille (il y en a 4) correspond à un aspect des choses. Les lignes sont les mêmes enfants. La première feuille gère les inscriptions à l'année, la deuxième les réservations au jour le jour, la troisième les paiements et la quatrième les calculs de facturation qui sont complexes (dépendance au QF, tarification au temps passé,...)
    Merci.

Discussions similaires

  1. [XL-2010] VBA Tableau: appliquer filtre tri renvoyer une valeur d'une colonne
    Par jbonneval dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/12/2015, 12h44
  2. copie du résultat d'un filtre sur une autre feuille
    Par totogabi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2015, 16h39
  3. tri sur une liste de résultats calculés
    Par pierrickgosselin dans le forum Excel
    Réponses: 2
    Dernier message: 11/04/2014, 20h52
  4. [XL-2003] Exporter une liste de données sans doublons après un filtre sur une deuxième feuille
    Par mandrake57 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/07/2011, 13h36
  5. Réponses: 3
    Dernier message: 14/04/2007, 21h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo