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

VB 6 et antérieur Discussion :

Travailler un document Open Office élaboré


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier Avatar de jack554
    Inscrit en
    Février 2003
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 192
    Points : 106
    Points
    106
    Par défaut Travailler un document Open Office élaboré
    Bonjour,

    Dans un logiciel de ma création (gestion de tournois de tarot), je générais un fichier Word "Liste des joueurs triés par numéro de table" sous Word.

    J'ai passé des heures à trouver les syntaxes correctes d'appel et de formatage, mais ça fonctionne.

    Exemple d'extrait de mon code (juste pour voir la complexité du truc" :

    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
      '--- Définit l'entête du document ---
      If oWord.ActiveWindow.View.SplitSpecial <> wdPaneNone Then
          oWord.ActiveWindow.Panes(2).Close
      End If
      If oWord.ActiveWindow.ActivePane.View.Type = wdNormalView Or oWord.ActiveWindow. _
          ActivePane.View.Type = wdOutlineView Then
          oWord.ActiveWindow.ActivePane.View.Type = wdPrintView
      End If
      oWord.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
      oWord.Selection.TypeText Text:=Prog$ & vbTab & vbTab
      oWord.Selection.InsertDateTime DateTimeFormat:="dd/MM/yyyy", InsertAsField:= _
        False, DateLanguage:=wdFrench, CalendarType:=wdCalendarWestern, _
        InsertAsFullWidth:=False
      oWord.Selection.TypeParagraph
      oWord.Selection.TypeText Text:="Auteur : J. Vieillescaze" & vbTab & vbTab
      oWord.Selection.InsertDateTime DateTimeFormat:="HH:mm:ss", InsertAsField:=False, _
        DateLanguage:=wdFrench, CalendarType:=wdCalendarWestern, _
        InsertAsFullWidth:=False
      oWord.Selection.TypeParagraph
      oWord.Selection.TypeText Text:=vbTab & NomTournoi$
      oWord.Selection.TypeParagraph
      oWord.Selection.TypeText Text:=vbTab & "LISTE DES TABLES DE LA MANCHE " & IndM
      oWord.Selection.TypeParagraph
      oWord.Selection.TypeText Text:=vbTab & "(triée par n° de table)"
      oWord.Selection.TypeParagraph
      oWord.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
     
      '--- Définit le pied de page du document ---
      With oWord.ActiveDocument
        For I = 1 To .Sections.Count
          With .Sections(I).Footers(wdHeaderFooterPrimary)
            .Range.Delete
            With .PageNumbers
              .Add PageNumberAlignment:=wdAlignPageNumberCenter
              .Item(1).Select
            End With
            With oWord.Selection
              .Frames.Delete
              .HomeKey unit:=wdLine
              .Range.Text = "Page "
              .ParagraphFormat.Alignment = wdAlignParagraphCenter
              .EndKey unit:=wdLine
              .MoveDown unit:=wdLine, Count:=1, Extend:=True
              .Delete
            End With
          End With
        Next I
      End With
    Le problème, c'est que tout le monde ne possède pas la suite Office, je voudrais donc réécrire mon code pour Open Office.

    J'ai trouvé des éléments ici :

    https://silkyroad.developpez.com/VBA/PiloterOpenOffice/

    Mais je voudrais aller beaucoup plus loin dans le formatage du document (voir un exemple en pièce jointe) : tableaux, cellules grisées, entête de page, pied de page, etc.

    Qui peut me conseiller une doc ou un spécialiste ?

    Merci par avance,
    Jack?
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par jack554 Voir le message
    Le problème, c'est que tout le monde ne possède pas la suite Office,
    Déjà, en le sauvegardant en .DOC (et non .DOCX) ça ouvre la porte à plus de gens . Et libre Office ouvre les .DOC

  3. #3
    Membre régulier Avatar de jack554
    Inscrit en
    Février 2003
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 192
    Points : 106
    Points
    106
    Par défaut
    Merci Daudet78, bonne idée, malheureusement je n'ai pas la main là-dessus.

    Avec VB6 je lance Word, je crée un document comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      'Start Word and open the document template.
      If Not IsWordOpen Then Set oWord = CreateObject("Word.Application")
      oWord.Visible = True
      Set oDoc = oWord.Documents.Add
    Il m'ouvre un "Document1.docx", je n'ai pas le choix, je suppose que VB6 teste la version de Word installée sur mon PC (Office 2010) ...

    Mon projet est de tout réécrire en utilisant le swriter d'Open Office, mais je manque de tuyaux

  4. #4
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par jack554 Voir le message
    Il m'ouvre un "Document1.docx", je n'ai pas le choix, je suppose que VB6 teste la version de Word installée sur mon PC (Office 2010) ...(
    il n'ouvre pas, il le prépare . et, par défaut, c'est du .DOCX
    Mais, au moment de la sauvegarde, il est possible de faire "enregistrer sous" et de choisir xxxxx.DOC
    Nom : Doc_Docx.JPG
Affichages : 253
Taille : 22,2 Ko
    Autres solutions : tu ne changes pas ton soft VB6 . Tu ouvres manuellement le fichier résultant avec WOrd, et "enregistrer sous" en choisissant .doc

  5. #5
    Membre régulier Avatar de jack554
    Inscrit en
    Février 2003
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 192
    Points : 106
    Points
    106
    Par défaut
    L'utilisateur ne sauvegarde rien du tout, il imprime, mais là n'est pas la question : le problème est en amont : comme je le disais, tout le monde n'a pas Word, et tout mon code VB6 est orienté Word ! Donc chez l'utilisateur qui n'a pas Word, ça ne fonctionne pas du tout. D'où mon idée de réécrire le code VB pour Open Office.

    J'ai un début de solution avec ce code VB6 qui crée un fichier Open Office et écrit dedans depuis Excel :

    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
    Sub creerNouveauDocumentWriter()
        Dim oServiceManager As Object, oDispatcher As Object
        Dim Desktop As Object, Document As Object
        Dim args()
        Dim Chemin As String, Fichier As String
        Dim T As Date
     
        'Copie de la plage de cellules dans Excel
        Range("A1:A5").Copy
     
        'Création d'une instance Open Office
        Set oServiceManager = CreateObject("com.sun.star.serviceManager")
        Set Desktop = oServiceManager.createInstance("com.sun.star.frame.Desktop")
     
        'Création d'un nouveau document Writer
        Set Document = Desktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, args)
     
        'Collage dans Open Office
        Set oDispatcher = oServiceManager.createInstance("com.sun.star.frame.DispatchHelper")
        oDispatcher.executeDispatch Document.currentController.Frame, ".uno:Paste", "", 0, Array()
     
        'Conversion de l'emplacement de sauvegarde au format URL
        Chemin = Replace(ThisWorkbook.Path, "\", "/")
        Fichier = "file:///" & Chemin & "/essai.odt"
        '------
     
        'Sauvegarde du nouveau document Writer
        Document.storeAsURL Fichier, args()
        DoEvents
     
        '--------
        'ajoute une temporisation de 2 secondes pour empécher que le fichier
        'ne se ferme avant la fin de la création
        T = Timer + 2: Do Until Timer > T: DoEvents: Loop
        '--------
     
        'Fermeture du fichier
        'L'argument True indique que les modifications vont être sauvegardées à la fermeture
        Document.Close (True)
    End Sub
    Mais je voudrais aller beaucoup plus loin et gérer des caractéristiques de traitement de texte, insérer un tableau, gérer les entêtes et pied de page, etc, comme dans ma pièce jointe fournie plus haut.

  6. #6
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par jack554 Voir le message
    [COLOR="#0000FF"]L'utilisateur ne sauvegarde rien du tout, il imprime, mais là n'est pas la question : le problème est en amont : comme je le disais, tout le monde n'a pas Word, et tout mon code VB6 est orienté Word ! Donc chez l'utilisateur qui n'a pas Word, ça ne fonctionne pas du tout. D'où mon idée de réécrire le code VB pour Open Office.
    Sorry de ne pas avoir pigé ta question ...
    Mais ta question de départ
    Le problème, c'est que tout le monde ne possède pas la suite Office, je voudrais donc réécrire mon code pour Open Office.
    m'a laissé supposer que tu distribuais le fichier .DOCx à tes copains. En fait, c'est le soft .EXE de création que tu distribues à tes copains

  7. #7
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    En fait, il y a deux concurrents à la suite Office de Microsoft :
    • Open Office
    • Libre Office


    Il semble que Libre Office soit plus actif que Open Office coté "mise à jour" et évolutions
    https://les-differences.com/differen...ce-openoffice/
    https://forum.pcastuces.com/open_off...-f23s36221.htm
    Donc il faudrait que tu fasses, dans ton logiciel, la triple compatibilité

  8. #8
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Après réflexions, je me demande si l'utilisation d'un "Machin Office" est un bon choix. Tu risques, suivant le Windows utilisé, suivant la version du "Machin Office" du client d'avoir des problèmes insurmontables .....

    Je pense que ce serait plus secure d'utiliser une PictureBox sur laquelle tu crées ta mise en page ( textes, dessins etc) et ensuite tu imprimes cette PictureBox avec Printer
    Voir (à partir de la réponse #6) https://www.developpez.net/forums/d1...sion-sous-vb6/

  9. #9
    Membre régulier Avatar de jack554
    Inscrit en
    Février 2003
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 192
    Points : 106
    Points
    106
    Par défaut
    Tu as raison Daudet78, même avec le "vrai" Office je commence déjà à avoir des problèmes parce que la dernière version (Office 2019) n'est plus du tout structurée comme les précédentes, adieu le C:\Program Files\Officexxx\winword.exe par exemple ...

    Je vais regarder attentivement ta proposition de solution avec une PictureBox, qui est très intéressante parce que ... indépendante de tous les Office possibles et imaginables ! Et je posterai sans doute un exemple ici .. si j'y arrive, parce que ce principe est tout nouveau pour moi.

    Donc merci et à bientôt !
    Jack.

  10. #10
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par jack554 Voir le message
    Et je posterai sans doute un exemple ici .. si j'y arrive, parce que ce principe est tout nouveau pour moi.
    Un forum, c'est la réunion d'une foule d'incompétence .... pour aboutir à un truc qui marche.

  11. #11
    Membre régulier Avatar de jack554
    Inscrit en
    Février 2003
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 192
    Points : 106
    Points
    106
    Par défaut
    Bien dit !

    Une question par contre me préoccupe déjà ... Avant de programmer mes sorties sous Word, je les réalisais en format texte, et j'utilisais le code hexadécimal "0C" pour changer de page à l'impression (les listes que je crée peuvent s'étendre sur plusieurs pages). Depuis un an ou deux, certains utilisateurs me disent que le changement de page ne fonctionne plus, et chez moi ils fonctionnent. Mais cela vient peut-être de leur imprimante ...

    En tout cas, je me demande si on peut gérer plusieurs pages avec la méthode du PictureBox

  12. #12
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par jack554 Voir le message
    En tout cas, je me demande si on peut gérer plusieurs pages avec la méthode du PictureBox
    Je n'ai pas testeé, mais je ferai une page dans PictureBox, printer, une autre page dans PictureBox, printer ... etc

Discussions similaires

  1. Assemblage de documents open office
    Par nico33410 dans le forum Général Java
    Réponses: 2
    Dernier message: 28/04/2009, 19h35
  2. [OOo] import de données xml dans un document open office writer
    Par anouka dans le forum XML/XSL et SOAP
    Réponses: 11
    Dernier message: 02/08/2008, 20h20
  3. [VB.Net 2005]Libérer un document open office
    Par DonF dans le forum Windows Forms
    Réponses: 6
    Dernier message: 15/01/2007, 17h39
  4. [WIN32][D7] documents Open Office vers Txt
    Par Benjamin GAGNEUX dans le forum Delphi
    Réponses: 7
    Dernier message: 31/08/2006, 16h41
  5. Ouvrir un document Open office
    Par sibou51 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 02/03/2006, 19h55

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