IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

pilotage OLE excel filtre avec deux critères


Sujet :

Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Points : 50
    Points
    50
    Par défaut pilotage OLE excel filtre avec deux critères
    Bonjour,
    dans une feuille excel 365 (delphi 10.3), j'ai une colonne avec des dates.
    j'aimerais filtrer cette colonne dont le résultat sera compris entre deux dates.
    j'arrive a filtrer >,<,=
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    excel.sheets[1].range['U1'].autofilter(21,'>01/09/2020');
    pour un critère mais entre deux dates je bloque complètement !
    j'ai beau essayer plein de combinaisons mais rien ne marche. Je n'arrive pas a trouver l'info
    Un truc du genre aurait été bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    excel.sheets[1].range['U1'].autofilter(21,'>01/09/2020 AND <10/09/2020');
    mais ...

    Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 660
    Points : 25 444
    Points
    25 444
    Par défaut
    la documentation n'évoque pas de formule complexe mais c'est peut-être en respecte du Pattern Décorateur qui est cumulatif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    excel.sheets[1].range['U1'].autofilter(21,'>01/09/2020').autofilter(21,'<10/09/2020');
    le 21 c'est un offset, voir si ne doit pas à être à 1 pour le second autofilter

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Points : 50
    Points
    50
    Par défaut
    Bonjour ShaiLeTroll,

    j'ai essayé les deux solutions (avec 21 et 1 comme offset de colonne pour le deuxième critère) mais une opération sur variant incorrect apparait.
    dans le fichier excel, un filtre a quand même été pris en compte. C'est le premier autofilter !?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 660
    Points : 25 444
    Points
    25 444
    Par défaut
    en bas de la doc, il y a ceci

    Cet exemple filtre un tableau, Tableau1, sur Feuil1, afin d’afficher toutes les entrées correspondant à Janvier 2019 et Février 2019 dans le premier champ. Il n’est pas nécessaire d’avoir une ligne contenant le 31 janvier.
    VB

    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter _
     Field:=1, _
     Criteria2:=Array(1, "1/31/2019", 1, "2/28/2019")
    faut viser Criteria2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    excel.sheets[1].range['U1'].autofilter(21, Unassigned, Unassigned, VarArrayOf([1, '01/09/2020', 2, '10/09/2020')));
    voir aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    excel.sheets[1].range['U1'].autofilter(Field := 21, Criteria2 := VarArrayOf([1, '01/09/2020', 2, '10/09/2020')));
    sinon Opérateur c'est plein de chose dont un ET logique, ainsi que plein d'autres options
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    excel.sheets[1].range['U1'].autofilter(21, '>01/09/2020', xlAnd, '<10/09/2020')));

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Points : 50
    Points
    50
    Par défaut
    Voici le code qui fonctionne pour mon cas.
    j'ai repris le code de ShaiLeTroll pour ceux que cela intéresse.

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    excel.sheets[1].range['A1'].autofilter(21,'>01/09/2020',1,'<10/09/2020');
    - le premier chiffre est l'offset de la colonne par rapport a A1. Ici ma colonne U pour 21
    - le texte du premier critère. Ici toutes dates supérieures au 01 septembre
    - le 3ème argument est en fait l'opérateur que l'on veut lier au deuxième critère
    1 AND
    2 OR
    3 TOP 10
    4 BOTTOM 10
    5 ...
    https://docs.microsoft.com/fr-fr/off...filteroperator
    - le dernier argument est le texte du deuxième critère. Ici toutes dates inférieures au 10 septembre

    Merci a ShaiLeTroll

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pilotage OLE Excel avec C++ Builder 4
    Par Guy3052 dans le forum C++Builder
    Réponses: 9
    Dernier message: 14/03/2018, 15h27
  2. probléme filtre avec deux critéres?
    Par dj_techno dans le forum Bases de données
    Réponses: 9
    Dernier message: 31/05/2007, 09h57
  3. Pilotage OLE Excel et VBE
    Par Sunchaser dans le forum C++Builder
    Réponses: 34
    Dernier message: 25/02/2007, 20h49
  4. Piloter OLE Excel, VBE avec C++Builder
    Par Sunchaser dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 26/11/2006, 11h31
  5. Message d'attente pendant pilotage Ole Excel
    Par yottatiger dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/09/2005, 09h14

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