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 :

delphi et word


Sujet :

Delphi

  1. #21
    Invité1
    Invité(e)
    Par défaut
    Citation Envoyé par lila23 Voir le message
    alors je peux faier une boucle sur les colonnes du dbgrid et dans le word mettre le nom des signets exwcatement le meme que le nom des champs ensuite les remplir!!!!
    merci
    quand tu selectionnes une ligne du DBGRID, ce meme enregistrement est selectionné dans ta table, donc quand tu utilises
    table1.fields[i].Value ces données sont les memes qui se trouvent dans ton DBGRID

  2. #22
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    le fait est que je ne comprend pa comment il va pointé ver l'enregistremen que je ve si je lui met la table je veux un renregistrement de ma table et je vai crée le document word pour cet enregistrement!!!

    j'ai ce message d'erreur c'est quoi:
    Exception class Evariant Invalid OpError 'Invalid variant operation' et je crois que ca concerne la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if vBookMarks.Exists('signet'+inttostr(i));
    encore merci de votre aide

  3. #23
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    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 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Re;

    1. Est-ce que tu as créé des signets dans ton document word ?
    2. Tu peux utiliser un Edit + un bouton, le Edit sert à entrer le matricule de l'employé et le bouton sert à faire une recherche si celle là aboutit alors tu as ton enregistrement et tu n'as qu'à lui passer le code précédent.


    Bonne chance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  4. #24
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    justement je crois que c'est dans word que je me trompe comme je n'ai jamais utilisé les signets je dois pas comme il faut

    est ce que vous pouvez m'aider???

    merci de votre patiente

  5. #25
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    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 401
    Points : 2 304
    Points
    2 304
    Par défaut
    OK

    alors tu fais Insertion --> signets et là tu as une boite de dialogue qui s'ouvre pour que tu fait rentrer le nom du signet. attention le signet va être placer là où tu as mis ton curseur. donc vaut mieux commencer par choisir son emplacement puis tu fais la petite manip. un autre conseil, donne des noms de signets parlant exemple : sg_nom_employe, sg_salaire (sg : signet). comme ça tu n'aura pas de problème pour te souvenir des signets afin de les mettre dans ton code. autre chose, n'hésite pas à jeter un coup d'œil sur l'aide MSWord pour te documenter sur l'utilité des signets.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  6. #26
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    c'est ce que j'ai fait tout a lheure mais j'ai tjs le message d'erreur que je vous ai montré tout a lheure !!!

    encore merci just_soft!

  7. #27
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    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 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Peux-tu transmettre le document word et poster le code source pour voir un peu plus claire.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  8. #28
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    le code est 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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    vMSWord, vWDocument, vWDocuments,vBookMarks,vBookMark, vContent: variant;
    aFileName : AnsiString;
    i:integer;
    begin
        vMSWord := CreateOleObject('Word.Application');  //demarrage de word
        vMSWord.Visible := true;
     
        aFileName:= extractfilepath(application.ExeName)+'C:\Program Files\Borland\Delphi7\Projects\rapport\fin contrat';   //ouverture du fichier model
        vWDocuments:= vMSWord.Documents;
        vWDocument:= vWDocuments.Open(aFileName);
     
     {   vBookMarks:= vWDocument.BookMarks;             //insertion du text dans un signet
        if vBookMarks.Exists('reference') then begin
            vBookMark := vBookMarks.Item('reference');
            vBookMark.Select;
            vContent := vBookMark.Range;
            vContent.InsertAfter(Jvdbgrid1.DataSource.DataSet.FieldByName('ref_dec').Value); }
     
            for i:=0 to  dec.FieldCount-1  do
     
      begin
          if vBookMarks.Exists('signet'+inttostr(i)) then
          begin
            vBookMark := vBookMarks.Item('signet'+inttostr(i));
            vBookMark.Select;
            vContent := vBookMark.Range;
            vContent.InsertAfter(dec.fields[i].Value);
          end;
     
       end;
    end;
    merci pour votre aide just_soft et dsl de vous déranger autant
    Fichiers attachés Fichiers attachés

  9. #29
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    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 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Re;

    j'ai eu le même message mais je l'ai contourné de la manière suivante.

    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
    procedure ouvre_word;
    var
      vMSWord, vWDocument, vWDocuments: Olevariant;
      aFileName : AnsiString;
      Signet, Zone : OleVariant;
    begin
      vMSWord := CreateOleObject('Word.Application');  //demarrage de word
      // vMSWord.Visible := true; pas besoin de ça
     
      if FileExists('C:\signet.doc') then
      begin
        aFileName := 'C:\signet.doc';   //ouverture du fichier model
        vWDocuments:= vMSWord.Documents;
        vWDocument:= vWDocuments.Open(aFileName);
        Signet:='signet1';
        Zone:= vMSWord.ActiveDocument.Bookmarks.Item(Signet).Range;
        Zone.Text := Form1.Table1.FieldByName('LastName').Value;
        Signet:='signet2';
        Zone:= vMSWord.ActiveDocument.Bookmarks.Item(Signet).Range;
        Zone.Text := Form1.Table1.FieldByName('FirstName').Value;
      end;
    end;
     
    procedure TForm1.FormActivate(Sender: TObject);
    begin
      ouvre_word;
    end;
    bien sûr tu dois adapter tes champs selon ta table. pour test j'ai utilisé la table employe de la DBDEMOS et ça à marcher très bien.

    Autre chose, tes signets sont sur le même emplacement, donc faudrait les mettre dans le bon endroit à cet effet tu dois les supprimer puis les récréer.

    Bonne chance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  10. #30
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    merci bcp just_soft mais ca ne marche pas pourtant j'ai tout fait comme vous me l'avez dit rien maintenant j'ai plus l'erreur mais il ne fait rien mme pa il ouvre mon document!!!

    j'en peux plussssssssss

    merci de votre patiente sans votre aide je serais o point mort!!

  11. #31
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 241
    Points : 204
    Points
    204
    Par défaut
    Bonjour lila;
    voilà je tu propose une autre idée normalement ça marche très bien
    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
    var
        vMSWord,vWDocuments,vWDocument : variant;
         aFileName : AnsiString;
         i:integer;
     
    begin
        vMSWord := CreateOleObject('Word.Application');
        //vMSWord.Visible := true;
        aFileName := 'c:\Doc1.doc';
        vWDocuments := vMSWord.Documents;
        vWDocument := vWDocuments.Open(aFileName);
        for i:=1 to DBGrid1.FieldCount-1 do
        begin
        vMSWord.Selection.TypeText(table1.Fields[i].AsString);// inserer du texte
         vMSWord.Selection.TypeText(#10); //  Retour à Ligne
        end;
     
    end;
    Bon courage et sure tout il ne faut jamais perdre l’espoir.

  12. #32
    Invité1
    Invité(e)
    Par défaut
    Citation Envoyé par lila23 Voir le message
    merci bcp just_soft mais ca ne marche pas pourtant j'ai tout fait comme vous me l'avez dit rien maintenant j'ai plus l'erreur mais il ne fait rien mme pa il ouvre mon document!!!

    j'en peux plussssssssss

    merci de votre patiente sans votre aide je serais o point mort!!
    bonjour
    ça ne marche pas peut etre parceque tu as enlevé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vMSWord.Visible := true;
    bonne chance

  13. #33
    Invité1
    Invité(e)
    Par défaut
    Citation Envoyé par lila23 Voir le message
    le code est 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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    vMSWord, vWDocument, vWDocuments,vBookMarks,vBookMark, vContent: variant;
    aFileName : AnsiString;
    i:integer;
    begin
        vMSWord := CreateOleObject('Word.Application');  //demarrage de word
        vMSWord.Visible := true;
     
        aFileName:= extractfilepath(application.ExeName)+'C:\Program Files\Borland\Delphi7\Projects\rapport\fin contrat';   //ouverture du fichier model
        vWDocuments:= vMSWord.Documents;
        vWDocument:= vWDocuments.Open(aFileName);
     
     {   vBookMarks:= vWDocument.BookMarks;             //insertion du text dans un signet
        if vBookMarks.Exists('reference') then begin
            vBookMark := vBookMarks.Item('reference');
            vBookMark.Select;
            vContent := vBookMark.Range;
            vContent.InsertAfter(Jvdbgrid1.DataSource.DataSet.FieldByName('ref_dec').Value); }
     
            for i:=0 to  dec.FieldCount-1  do
     
      begin
          if vBookMarks.Exists('signet'+inttostr(i)) then
          begin
            vBookMark := vBookMarks.Item('signet'+inttostr(i));
            vBookMark.Select;
            vContent := vBookMark.Range;
            vContent.InsertAfter(dec.fields[i].Value);
          end;
     
       end;
    end;
    merci pour votre aide just_soft et dsl de vous déranger autant
    le probleme est a ce niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     aFileName:= extractfilepath(application.ExeName)+'C:\Program Files\Borland\Delphi7\Projects\rapport\fin contrat';   //ouverture du fichier model
    extractfilepath(application.exename) nous donne le chemin de l'executable
    ce que tu as fait va te donner un chemin erroné, il ne va pas trouver ton fichier

    il fallait mettre ton chemin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     aFileName:= 'C:\Program Files\Borland\Delphi7\Projects\rapport\fin contrat.doc';   //ouverture du fichier model
    bonne chance
    Dernière modification par Invité1 ; 08/04/2009 à 09h46. Motif: orthographe

  14. #34
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    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 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Pourtant le code que je t'ai fourni marche très bien avec certitude.

    @samy larson : rien à voir avec visible, cette propriété est équivalente à un show donc même si elle vaut False le fichier s'ouvre et les champs se remplissent (tester et approuvé )

    pour le chemin je suis tout à fait d'accord c'est pour cela que j'ai mis le fichier word dans la racine 'c:/signet.doc'

    @lila23 : pour tester le code que je t'ai fourni tu dois mettre ton fichier dans la racine et le renommer signet.doc mais attention, si tu as MSWord 2007 fais enregistrer sous MSWord 2003 sinon le fichier ne sera pas trouvé et tu aura une belle exception.

    en plus et en regardant ton fichier Word je crois que tes signets devront se trouvés là :

    - Vu le contrat à durée déterminée portant recrutement de signet1, en qualité de : Sales Manager.
    .
    .
    .
    Article 1. ..... de signet2 , pour abandon de poste.
    Bonne chance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  15. #35
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 241
    Points : 204
    Points
    204
    Par défaut
    Bonjour à tous;
    just merci pour ta remarque
    @lila23 : pour tester le code que je t'ai fourni tu dois mettre ton fichier dans la racine et le renommer signet.doc mais attention, si tu as MSWord 2007 fais enregistrer sous MSWord 2003 sinon le fichier ne sera pas trouvé et tu aura une belle exception.

    en plus et en regardant ton fichier Word je crois que tes signets devront se trouvés là :

    Citation:
    - Vu le contrat à durée déterminée portant recrutement de signet1, en qualité de : Sales Manager.
    .
    .
    .
    Article 1. ..... de signet2 , pour abandon de poste.
    tu es le meilleur , on fait j'ai essayé votre code et ça marche très bien
    lila c'est tu n'arrive pas à méttre en ouvre la solution de just voilà je tu propose ça:
    déplacer dans le fichier word jusqu'à la position ou tu vue insérer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i:= 1 to NbrFoisd do vMSWord.Selection.MoveRight;
             for i:= 1 to NbrFoisb do vMSWord.Selection.MoveDown;
    ton texte puis inséré ton texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vMSWord.Selection.TypeText(table1.Fields[i].AsString);
    NbrFoisd: c'est le nombre de déplacement à droite
    NbrFoisb: c'est le nombre de déplacement en bas
    voilà un exemple
    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
    var
        vMSWord,vWDocuments,vWDocument : variant;
         aFileName : AnsiString;
         j,k:integer;
     
    begin
        vMSWord := CreateOleObject('Word.Application');
        //vMSWord.Visible := true;
        aFileName := 'c:\Doc1.doc';
        vWDocuments := vMSWord.Documents;
        vWDocument := vWDocuments.Open(aFileName);
        for j:=1 to 17 do
        vMSWord.Selection.MoveDown;
        for k:= 1 to 87 do
        vMSWord.Selection.MoveRight;
        vMSWord.Selection.TypeText(table1.Fields[1].AsString);// inserer du texte
     
     
     
    end;
    Bon courage

  16. #36
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut Désolé d'avoir tardé a répondre
    bonjour à tous,

    tout d'abord j'aimerais remercié sam_83 et just_soft pour votre aide c'est trés gentil a vous!!!!

    ca ne marche tjs pas!!!peut etre parske j'ai office 2003 et 2007 en meme temps

    merci

  17. #37
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 241
    Points : 204
    Points
    204
    Par défaut
    Salut lila ;
    en fait j'ai testé les deux méthodes sur une machine ou il y a word 2003 , 2007 et ça marche .
    tu peut nous donné l'erreur pour pouvoir mieux t'aidé

  18. #38
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    en fait j'ai pas d'erreur j'ai word 2007 qui s'ouvre mais c'est tout je n'ai ni mon document qui s'ouvre ni rien dutout!!!

    encore merci

  19. #39
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 241
    Points : 204
    Points
    204
    Par défaut
    lila quelle est l'extension de ton fichier word.

    Citation Envoyé par Just-Soft Voir le message
    @lila23 : pour tester le code que je t'ai fourni tu dois mettre ton fichier dans la racine et le renommer signet.doc mais attention, si tu as MSWord 2007 fais enregistrer sous MSWord 2003 sinon le fichier ne sera pas trouvé et tu aura une belle exception.

  20. #40
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    ben je pensais évité les problémes alors je l'ai enregistré sous format 2003 donc .doc !!!

Discussions similaires

  1. Memo Delphi et Word
    Par fouad_algo dans le forum Débuter
    Réponses: 3
    Dernier message: 28/06/2011, 19h15
  2. delphi sous word
    Par hicmanify dans le forum Bases de données
    Réponses: 1
    Dernier message: 27/04/2011, 11h34
  3. Delphi et Word
    Par maxinformatique dans le forum Langage
    Réponses: 2
    Dernier message: 03/03/2008, 15h24
  4. Lancer du vb de delphi dans word
    Par dederfred dans le forum Delphi
    Réponses: 1
    Dernier message: 23/11/2006, 18h00
  5. Delphi 7 + Word 2003 + XML
    Par sfxElrick dans le forum Delphi
    Réponses: 16
    Dernier message: 23/06/2006, 14h08

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