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 :

Manipulation d'Excel


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut Manipulation d'Excel
    Mes salutations ,
    J'ai un problème avec la manipulation d'excel sous Delphi , j'arrive pas à modifier les formats (Police) des cellules , Delphi toujours m'indique que les identificateurs (Font,Color,Background,...) sont inconnus
    En outre , est ce qu'il est possible d'avoir un classeur d'excel bien personalisé déja au corps de mon projet delphi , cela veut dire qu'il va faire partie de logiciel et qu'il va etre un exemple qu'à chaque fois le logiciel l'utlise, est il une solution ?
    Vos idées SVP !

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Bonjour, et bienvenue !

    Expose ton code qui ne fonctionne pas, qu'on puisse mieux te guider.

    Pour l'utilisation d'un modèle de fichier Excel par ton application, il lui suffit de charger un fichier Excel et de l'enregistrer sous un nom particulier, puis de le modifier, et de le sauver à nouveau. Ou de le copier sous un nom particulier, puis de l'ouvrir pour le modifier.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    Bonjour ,
    Oui j'ai déjà fais ce truc là mais il me semble pas professionnel !
    En bref , je suis en train de développer une application qui gère les bulletins des élèves , en faite , elle fait appel à un classeur excel , ce dernier doit être prêt pour juste saisir les notes et les moyennes seront être calculées automatiquement , donc je dois faire quelque chose de pro pour satisfaire ce projet là , surtout qu'il va être représenté et ainsi de suite (n'est pas personnel)
    Donc je veux automatiser les étapes de création et de mise en forme de classeur à partir de mon application ...
    Ci_dessous un exemple de bulletin qui doit être automatisée
    J'espère bien que j'avais passé bien mes idées à vous
    Je ne parle pas bien le français , vraiment je m'excuse ...
    Nom : Sketch.png
Affichages : 3129
Taille : 146,9 Ko

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 593
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Citation Envoyé par Ayoub98 Voir le message
    Oui j'ai déjà fais ce truc là mais il me semble pas professionnel !
    En bref , je suis en train de développer une application qui gère les bulletins des élèves
    Ce qui ne paraît pas professionnel c'est d'utiliser EXCEL pour ce genre de choses, plusieurs raisons
    1- MonoPoste (si en soit ce n'est pas un mal cela peut être dérangeant)
    2- Selon votre image écran : un feuille ou tableau par élève, par mois etc...
    3- une sécurité plutôt limite
    A mon avis vous confondez édition/présentation du bulletin et programme de saisie des résultats.

    Pensez à une base de données (de préférence un SGBD robuste : évitez Paradox, Access), pensez déjà réseau au besoin
    en gros vous avez besoin (au minimum)
    1- d'un fichier élève
    2- un fichier matières
    3- un fichier notes
    donc à minima 3 écrans, comptez plutôt 6 pour afficher à la "mode tableur" grâce à des DBGrids
    et d'un écran de sélection d'édition + l'édition sensu stricto

    à cela pour faire pro j'y rajouterais , une gestion des années scolaires, des classes etc... et on se rapprochera d'outils déjà existants
    Analyse faite en 5mn avec les éléments fournis qui est loin d'être un cahier des charges digne de ce nom.

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    Ce qui ne paraît pas professionnel c'est d'utiliser EXCEL pour ce genre de choses, plusieurs raisons
    1- MonoPoste (si en soit ce n'est pas un mal cela peut être dérangeant)
    2- Selon votre image écran : un feuille ou tableau par élève, par mois etc...
    3- une sécurité plutôt limite
    A mon avis vous confondez édition/présentation du bulletin et programme de saisie des résultats.

    Pensez à une base de données (de préférence un SGBD robuste : évitez Paradox, Access), pensez déjà réseau au besoin
    en gros vous avez besoin (au minimum)
    1- d'un fichier élève
    2- un fichier matières
    3- un fichier notes
    donc à minima 3 écrans, comptez plutôt 6 pour afficher à la "mode tableur" grâce à des DBGrids
    et d'un écran de sélection d'édition + l'édition sensu stricto

    à cela pour faire pro j'y rajouterais , une gestion des années scolaires, des classes etc... et on se rapprochera d'outils déjà existants
    Analyse faite en 5mn avec les éléments fournis qui est loin d'être un cahier des charges digne de ce nom.
    Je vous remercie bien pour votre effort , mais pouvez vous mieux expliquer , parc ce qu'en faite je suis - soit disant - débutant
    tous ce que j'ai compris que je dois créer une base de donnée et la lier avec l'application .... ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 593
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    parc ce qu'en faite je suis - soit disant - débutant
    Ca ne nous donne pas beaucoup d'information, sur le niveau informatique, quant au "soit-disant" cela ne fait que jeter un peu plus de doute
    Débutant Delphi ou autre ? les informations de votre profil (étudiant, 18 ans : si elles sont juste) laissent à penser que vous débutez l'informatique , pas la pratique des programmes "standards" (MS Office) mais l'analyse et la programmation d'outils de gestion. Peut être avez vous déjà programmé avec peu de données (genre des calculs complexes), ce que l'on apprend en général à nos débuts mais là vous vous confrontez plutôt au genre inverse, c'est à dire : beaucoup de données peu de calculs

    Citation Envoyé par Ayoub98 Voir le message
    tout ce que j'ai compris que je dois créer une base de donnée et la lier avec l'application .... ?
    C'est exactement ça. Et cela vous apportera de nombreuses possibilités (pour peu que ce soit un SGBD digne de ce nom) comme :
    Calculer les moyennes trimestrielles, annuelles etc..., obtenir le classement par classe, par niveau etc... faire des statistiques, dégager la moyenne de la classe du niveau et que sais-je encore.
    Citation Envoyé par Ayoub98 Voir le message
    mais pouvez vous mieux expliquer
    pas facile, je ne vous parlerais pas de méthode Merise etc... qui permettrait de réellement de définir les traitements et les données. En vieux routard, j'ai fait rapidement cette analyse à partir de votre image écran, et ce ne dégageant les différents ensembles : Élèves, Classes, Matières, Notes (tout ce qui est calculé est inutile). Comme tout le monde, je suis passé sur les bancs de l'école, et même pour ma part quelques temps devant ces mêmes bancs, je sais donc q'un bulletin est mensuel /trimestriel/ annuel il est donc évident qu'il fallait rajouter une gestion des Années Scolaires voire des périodes de bulletin et que comme il y a souvent plusieurs classes pour un même niveau il est à prévoir peut être de rajouter cette gestion.

    Il faut ensuite dégager à partir du bulletin, les différentes propriétés de chaque ensemble ( oh, ça ressemble à des objets )
    par exemple Élève a les cellules A1,A2,C1 évidentes mais est lié à une classe E1, pour ce qui est de l'année scolaire ou du lycée je manque d'informations.
    C'est à ça que sert la phase 2 d'une analyse, obtenir les informations manquantes en posant des questions telles que :
    Est-ce pour un seul Lycée ?
    Est-ce que c'est pour plusieurs années scolaires ?
    Même si certaines réponses peuvent être évidentes, elles doivent être posées

    Une fois dégagé ces différents ensembles (je vais lâcher un gros mot : le MODELE CONCEPTUEL DE DONNEES) vous pouvez alors passer au niveau logique etc...
    (j'ai dit au début que je ne parlerai pas de méthode )

    Mon expérience m'a donc fait déduire le nombre d'écrans qui semblaient nécessaires.

    Pour essayer d'expliquer concrètement

    créez un programme vierge. Dans la fiche principale posez un Tpagecontrol et ajoutez autant de panneaux que vous avez d'écrans/fonctions du programmes (du coup cela ressemble un peu a un tableau excel (sans grille) avec plusieurs feuilles (surtout si vous indiquez de mettre les tabsets en bas).
    il ne vous reste plus qu'à (facile à dire) dessiner l'interface de chaque fonctionnalités par exemple pour les élèves :
    - Voir la liste des élèves : un DBGrid ou un TListView (mais pourquoi pas un TreeView ou mieux encore un VirtualTreeView)
    - Editer une fiche élève : un fiche avec seulement les informations à saisir en les contrôlant
    etc...
    Bien sûr pour les interfaces utilisateurs il y a plein de possibilités (dépendant entre autres de la version de Delphi et des Composants Tiers que vous pouvez utiliser) et je ne propose dans cet exemple que du basique (ou presque), l'important est que l'utilisateur final soit "consulté avant" et pas "mis devant"

  7. #7
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 086
    Par défaut
    Citation Envoyé par Ayoub98 Voir le message
    En outre , est ce qu'il est possible d'avoir un classeur d'excel bien personalisé déja au corps de mon projet delphi , cela veut dire qu'il va faire partie de logiciel et qu'il va etre un exemple qu'à chaque fois le logiciel l'utlise, est il une solution ?
    Cela s'appelle un modèle et tu peux l'inclure en ressources au programme (voir FAQ et les fichiers RC)
    Tu crée des zones nommées (c'est mieux que de connaitre la position genre B5, C6 ...), ensuite via OLE, tu n'as qu'une seule chose à faire, c'est changer ou lire la valeur de chaque cellule nommée.
    Je l'ai plutôt faire générer des fichiers Excel avec un Design complexe et un tas de formule embarquée et cela fonctionne très bien.
    Les données provenaient pour la plupart des projets d'une Base de Données très riche que des personnes se chargeait de qualifier, un travail pour deux, trois personnes à plein temps selon la population étudiée (des applications médicales)
    Pour d'autres, cela mixait une Base de Données et des EDI avec des systèmes de Laboratoire ou même directement des machines d'analyse ( par densité optique par exemple)

    Citation Envoyé par Ayoub98 Voir le message
    En bref , je suis en train de développer une application qui gère les bulletins des élèves , en faite , elle fait appel à un classeur excel , ce dernier doit être prêt pour juste saisir les notes et les moyennes seront être calculées automatiquement , donc
    En fait, tu n'as pas besoin de Delphi !
    Ton fichier Excel peut tout faire lui même y compris accéder à une base ACCESS ou même ORACLE via ODBC !

    L'objectif d'une application Delphi dans ton cas serait de permettre la saisie puis proposer un export vers EXCEL
    Cela peut aussi se faire par Rave Report, Fast Report ... qui te sortira plutôt du PDF mais avec un aspect similaire si tu le travailles bien
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    Vraiment je vous remercie beaucoup pour vos efforts , vous m'avez inspiré de faire quelques chose de pro
    Mais une dernière question : Pourquoi les instructions de mise en forme des cellules sont toujours inacceptable par le delphi ?
    exemple : feuille.Range['A1','C5'].Font.Name := 'Tahoma' ;
    et ainsi de suite des intsructions de modification de police
    Ou est le problème ?

  9. #9
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 509
    Par défaut
    Bonjour,

    avec range, cela fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      ExcelApp.Range['B16:M26'].Font.Size := 12;
      ExcelApp.Range['B16:M26'].Font.Color := clRed;
      ExcelApp.Range['B16:M26'].value := 'AAAAA' ;
      ExcelApp.Range['B16:M26'].Font.Name := 'Tahoma';
    A+
    Charly

  10. #10
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 509
    Par défaut
    Voici un code complet qui fonctionne :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComObj, StdCtrls ;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
     
    var
        Form1: TForm1;
      ExcelApp: OleVariant;
     
    implementation
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    const
      // SheetType
      xlChart = -4109;
      xlWorksheet = -4167;
      // WBATemplate
      xlWBATWorksheet = -4167;
      xlWBATChart = -4109;
      // Page Setup
      xlPortrait = 1;
      xlLandscape = 2;
      xlPaperA4 = 9;
      // Format Cells
      xlBottom = -4107;
      xlLeft = -4131;
      xlRight = -4152;
      xlTop = -4160;
      // Text Alignment
      xlHAlignCenter = -4108;
      xlVAlignCenter = -4108;
      // Cell Borders
      xlThick = 4;
      xlThin = 2;
    var
      ColumnRange: OleVariant;
     
    begin
      try
        ExcelApp := GetActiveOleObject('Excel.Application');
      except
        try
          ExcelApp := CreateOleObject('Excel.Application');
        except
          ShowMessage('Impossible d''ouvrir Excel ?');
          Exit;
        end;
      end;
     
      // Ouverture du fichier Excel
      ExcelApp.Workbooks.Open(ExtractFilePath(application.Exename)+'Test.xls');
     
      // Renommage de la feuille 1
      ExcelApp.Workbooks[1].WorkSheets[1].Name := 'Doc 1';
     
      // Insertion de texte cellule par cellule
      ExcelApp.Cells[1, 1].Value := 'Test Excel';
      ExcelApp.Cells[2, 1].Value := 'Format de cellules';
      ExcelApp.Cells[3, 1].Value := FormatDateTime('dd-mmm-yyyy', Now);
     
      // Série de valeurs
      ExcelApp.Range['A2', 'D2'].Value := VarArrayOf([1, 10, 100, 1000]);
     
      // Alignement
      ExcelApp.Cells[2, 1].HorizontalAlignment := xlright;
     
      // Largeur colonnes
      ColumnRange := ExcelApp.Workbooks[1].WorkSheets[1].Columns;
      ColumnRange.Columns[1].ColumnWidth := 20;
      ColumnRange.Columns[2].ColumnWidth := 40;
     
      // Hauteur de ligne
      ExcelApp.Rows[1].RowHeight := 15.75;
     
      // Fusion de cellule
      ExcelApp.Range['B3:D3'].Mergecells := True;
     
      // Bordures
      ExcelApp.Range['A14:C14'].Borders.Weight := xlThick; // Think line/ Dicke Linie
      ExcelApp.Range['A14:C14'].Borders.Weight := xlThin;  // Thin line Dünne Linie
      ExcelApp.Range['B16:C20'].Font.Bold := True;
      ExcelApp.Range['B16:C20'].Font.Size := 12;
      ExcelApp.Range['B16:C20'].Font.Color := clRed;
      ExcelApp.Range['B16:C20'].value := 'AAAAA' ;
      ExcelApp.Range['B16:C20'].Font.Name := 'Tahoma';
     
      //Alignement à droite
      ExcelApp.Cells[9, 6].HorizontalAlignment := xlright;
     
      // horizontal-aligned text, horizontale Zentrierung
      ExcelApp.Range['B14:C26'].HorizontalAlignment := xlHAlignCenter;
     
      // Effacer la grille
      ExcelApp.ActiveWindow.DisplayGridlines := False;
     
      // Afficher Excel:
      ExcelApp.Visible := True;
    end;
    { ==================================================================== }
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      // Quitter Excel
      if not VarIsEmpty(ExcelApp) then
      begin
        ExcelApp.DisplayAlerts := False;
        ExcelApp.Quit;
      end;
    end;
    { ==================================================================== }
    end.
    avec Form1 et Button1

    A+
    Charly

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    Bonjour ,
    C'est vraiment ennuyeux , j'ai testé toutes les possibilités de modification de code mais je n'arrive pas à identifier les erreurs
    SVP Corrigez le
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    unit USuivant1;
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.FileCtrl , ComObj;
     
    type
      TForm1 = class(TForm)
        Label1: TLabel;
        Edit1: TEdit;
        Label2: TLabel;
        Edit2: TEdit;
        Label3: TLabel;
        Edit3: TEdit;
        Label4: TLabel;
        Edit4: TEdit;
        Label5: TLabel;
        Edit5: TEdit;
        Label6: TLabel;
        Edit6: TEdit;
        Button1: TButton;
        Button2: TButton;
        Label7: TLabel;
        Edit7: TEdit;
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
      excel, classeur , feuille : variant ;
     
    implementation
     
    {$R *.dfm}
    procedure TForm1.Button1Click(Sender: TObject);
    var verif : boolean ; chemin , ch , chs : string ; i : integer ;
    begin
    verif := true ;
    if ((Edit1.Text ='') and (Edit2.Text ='') and (Edit3.Text='')) then
     begin
       verif := false ;
       Showmessage ('If faut remplir tout les champs pour créer votre bulletin !!');
     end;
    if verif then
    begin
      ForceDirectories  (Edit7.Text) ;
      excel := CreateOleObject ('Excel.Application') ;
      excel.visible := true ;
      classeur := excel.workbooks ;
      if (Edit4.Text = 'Techniques') then
      feuille := classeur.open ('C:\BD\Tech.xls')
      Else if (Edit4.Text = 'Science de l''informatique') then
      feuille := classeur.open ('C:\BD\SI.xls')
      Else if (Edit4.Text = 'Mathématiques') then
      feuille := classeur.open ('C:\BD\Math.xls')
      Else if (Edit4.Text = 'Economie et Gestion') then
      feuille := classeur.open ('C:\BD\Eco_Gest.xls')
      Else if (Edit4.Text = 'Lettres') then
      feuille := classeur.open ('C:\BD\Lettres.xls')
      Else   feuille := classeur.open ('C:\BD\SE.xls') ;
      excel.ActiveWorkbook.SaveAs (Edit7.Text+'\'+Edit1.Text+'_'+Edit2.Text+'.xls') ;
      excel.Range['B16:M26'].Font.Size := 12;                 // des 
      excel.Range['B16:M26'].Font.Color := clRed;           // exemples 
      excel.Range['B16:M26'].value := 'AAAAA' ;              // juste 
      excel.Range['B16:M26'].Font.Name := 'Tahoma';     // pour tester
      excel.cells[1,2].value := Edit1.Text ;
      excel.cells[2,2].value := Edit2.Text ;
      excel.cells[1,4].value  := Edit3.Text ;
      excel.cells[1,6].value  := Edit4.Text ;
      excel.cells[2,4].value  := Edit5.Text ;
      excel.cells[2,6].value  := Edit6.Text ;
      excel.ActiveWorkbook.Save;
    end;
     
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    excel.Workbooks.Close ;
    excel.quit ;
    excel := unassigned ;
    Form1.Close;
    end;
     
    end.
    Le problème est toujours au niveau d'affectation des valeurs au cellules , et de modification de police
    Merci

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

Discussions similaires

  1. aidez moi svp à créer une petite application sous VB 2008
    Par delphibr dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/04/2009, 08h44

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