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

Bases de données Delphi Discussion :

Trier Une Fiche Excel au RunTime :Delphi


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 18
    Par défaut Trier Une Fiche Excel au RunTime :Delphi
    J'aimerais effectuer a l'execution de mon application le tri de la fiche ,comme je le fais sous Excel;mais je ne parviens pas a decouvrir le code ,je signale que la feuille est deja connectée avec l'appli Delphi.

    Sous Excel j'ouvre la boite de tri et je choisi:

    champ4 : croissant
    et
    champ2 : croissant

    Pouvez vous m'indiquer un procedure s'il vous plait.

    Merci par avance.

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Salut;

    Peux-tu nous montrer le code, que tu as fait, s'il te plait?

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 18
    Par défaut
    Citation Envoyé par Kelloucheaeh Voir le message
    Salut;

    Peux-tu nous montrer le code, que tu as fait, s'il te plait?
    Avec plaisir voici ma procédure que j'ai réalisé depuis les exemples de la FAQ DELPHI:http://delphi.developpez.com/faq/?pa...#excelplatrier pour le tri.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    procedure TForm1.CvsVersExcel;
      // ouverir fichier CSV dans Excel;
    var
        MonClasseur :_workbook;
        MaFeuille :_Worksheet;
        ovFeuille: OLEvariant;
     
    begin
     
        //Importation et ouverture fichier CSV dans Excel;
    MonClasseur:=ExcelApplication1.Workbooks.Open('C:\Documents and Settings\Mes documents\RAD Studio\Projects\majExcel-ACCESS\Donnees\donnees.csv',False,False,
        EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
    EmptyParam,EmptyParam,EmptyParam,0);
     
        //Rendre Excel Visible;
    ExcelApplication1.Visible[0]:=true;
        //Tri sur colones Feuille EXCEL variables;
    MaFeuille:=MonClasseur.Worksheets[1] as _worksheet;
    ovFeuille:=MaFeuille;
     
        //colone D;
    ovFeuille.Range['A1','AF500'].Sort(MaFeuille.Range['D1','D1'], xlAscending,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,xlGuess, 1, False, xlTopToBottom, EmptyParam);
        //colone B;
    //ovFeuille.Range['A1','AF500'].Sort(MaFeuille.Range['B1','B1'], xlAscending,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,xlGuess, 1, False, xlTopToBottom, EmptyParam);
     
        //Enregistrement fichier Excel dans CSV;
    MonClasseur.SaveAs('C:\Documents and Settings\Mes documents\RAD Studio\Projects\majExcel-ACCESS\Donnees\donnees.csv',
    EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
     xlNoChange,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
     
        //Rendre Excel Visible;
     ExcelApplication1.Visible[0]:=true;
        //Fermer Excel
    MonClasseur.Close(False, emptyparam,emptyparam,0);
     
    end;
    Une premiere chose:['A1','AF500']. ce serait super si je pouvais récupérer le nombre d'enregistrements directement sur ma feuille, mais ....???? sait pas faire.

    secondo:ovFeuille.Range['A1','AF500'].Sort(MaFeuille.Range['D1','D1'], ;Delphi me met une erreur identifier sur le mot Sort,mais les calculs sont réalisés.

    En procédant comme expliqué sur le premier post, sous Excel j'obtiens le résultat attendu suivant;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    a        b       c         d
     
    035	1	LU	901
    036	1	VE	905
    036	1	LU	908
    037	1	VE	912
    037	2	VE	912
    037	1	LU	915
    037	2	LU	915
    038	1	VE	919
    038	2	VE	919
    038	1	LU	922
    038	2	LU	922
    Mais voici mes données dans le fichier CSV;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    a        b       c         d
     
    038	2	LU	922
    038	1	LU      922
    038	2	VE	919
    038	1	VE	919
    037	2	LU	915
    037	1	LU	915
    037	2	VE	912
    037	1	VE	912
    036	1	LU	908
    036	1	VE	905
    035	1	LU	901
    et avec mon code sous DELPHI je ne parviens pas a obtenir un résultat identique mais uniquement le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    a        b       c         d
     
    035	1	LU	901
    036	1	VE	905
    036	1	LU	908
    037	2	VE	912
    037	1	VE	912
    037	2	LU	915
    037	1	LU	915
    038	2	VE	919
    038	1	VE	919
    038	2	LU	922
    038	1	LU	922
    ceci montre que mon champ B n'est pas trié,car la valeur "1 en B pour Vendredi en C "doit figurer avant le "2 en B pour Ve en C ";
    Pire ;si j'effectue le tri sur le champ B comme indiqué sur le code , toutes les valeurs 1 de B vont se succéder, puis les valeurs 2.
    Jai essayé de lier les deux conditions de tri simplement par un ' AND' mais j'ai obtenu une erreur de 'interdiction sur ce genre de critéres ou arguments'.

    J'ai vu que l'on peut exécuter une macro Excel depuis l'appli Delphi mais je n'ai pas encore réalisé des macros Office.

    Une solution s'exécutant depuis une macro ACCESS ou un code SQL me satisfairait également car ses données sont destinées a celui-ci.

    PS:Comment réaliser une colonne (champ)auto incrémentée avec Excel ou ACCESS au runtime?

    Désolé pour la longueur du post

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Salut;

    Puisque tes résultats sont là dans un fichier texte tu n'as cas les trier sans trop penser à Excel.

    Tu les récupères puis tu les trie et pour cela plusieurs alternatives peuvent être proposées.

    Sauvegarder les résultats dans une base de données puis en mode consultation tu les trie par un simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select * form tatable 
    Order By column_a_trier
    Bon codage.

  5. #5
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 18
    Par défaut
    Citation Envoyé par Kelloucheaeh Voir le message
    Salut;

    Puisque tes résultats sont là ......

    Sauvegarder les résultats dans une base ......
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select * form tatable 
    Order By column_a_trier
    Bon codage.
    Bonjour Kelloucheaeh

    Probléme plus complexe a mon avis;car je dois mettre a jour une a deux fois par semaine,c'est pourquoi je veux realiser une apli qui s'occupe du tri automatiquement.

    Ce que je peux faire depuis ce matin en créant la macro en mode apprentissage d'EXCEL.

    J'aimerais maintenent le faire au runtime avec Delphi mais sous Excel l'utilisation de deux tris successifs ne me donne pas satisfaction car ma colone B aura tous les 1 puis tous les 2,j'ai peur d'obtenir la même chose avec SQL,je sais que c'est faisable mais moi je sais pas faire pour l'instant,sans doute au hazard avec la negation d'une fonction bolleenne mais pas evident pour moi en SQL sous Delphi.

    Si quelqu'un peux m'aider j'apprécierais.

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Re;

    une à deux fois par semaine n'est pas un accès très fréquent à ta feuille de données! en plus une feuille Excel c'est pas si grand même si elle est toute remplie de données.

Discussions similaires

  1. Trier une feuille excel
    Par lerg89 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/07/2013, 09h19
  2. Uen idée et aide pour créer une fiche excel
    Par Hitman_11 dans le forum Excel
    Réponses: 3
    Dernier message: 25/03/2011, 08h17
  3. récuperation d'un int d'une fiche excel
    Par ryoussef19 dans le forum Documents
    Réponses: 1
    Dernier message: 25/02/2008, 14h53
  4. Trier une table excel
    Par you_techni dans le forum Excel
    Réponses: 6
    Dernier message: 04/08/2006, 17h03
  5. trier une feuille excel en VBscript
    Par gritche dans le forum VBScript
    Réponses: 1
    Dernier message: 07/07/2006, 09h33

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