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 :

[VB6] Document Word


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut [VB6] Document Word
    Bonjour, lorsque j'exécute le code ci-dessous, la première fois tout fonctionne correctement, mais lorsque je relance cette fonction une deuxième de suite alors il me pose un problème
    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
    Private Sub Command2_Click()
        Dim MyWord As Word.Application
        Dim doc As Word.Document
        Set MyWord = New Word.Application
        With MyWord
            .Documents.Open(CHEMIN2)
            Selection.WholeStory
            Selection.Delete Unit:=wdCharacter, Count:=1
            Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
            Selection.Font.Size = 20
            Selection.Font.Bold = wdToggle
            Selection.TypeText Label1 ' écrit le titre
            Selection.TypeParagraph ' a la ligne
            Selection.TypeParagraph
            '''''''''''''''''''''''''''''''''''
            ' récupérer le nombre de colonnes '
            '''''''''''''''''''''''''''''''''''
            Dim VARC, VARL As Integer
            VARC = Form5.MSFlexGrid1.Cols
            VARL = Form5.MSFlexGrid1.Rows
     
            Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
            ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=VARL, NumColumns:=VARC, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitContent
            With Selection.Tables(1)
                If .Style <> "Grille du tableau" Then
                    .Style = "Grille du tableau"
                End If
                .ApplyStyleHeadingRows = True
                .ApplyStyleLastRow = True
                .ApplyStyleFirstColumn = True
                .ApplyStyleLastColumn = True
            End With
            For i = 0 To VARL - 1
                For j = 0 To VARC - 1
                    Selection.TypeText Text:=Form5.MSFlexGrid1.TextMatrix(i, j)
                    Selection.MoveRight Unit:=wdCell
                Next j
            Next i
            'doc.SaveAs App.Path & "\stat.doc" ' enregistre sous un autre nom
            .Visible = True ' rend l'application visible
        End With
        Set MyWord = Nothing
        Set doc = Nothing
    End Sub
    Voici l'erreur
    Erreur 462 : Le serveur distant n'existe pas ou est indisponible
    Pourriez-vous m'aider ?

  2. #2
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    J'ai eu le meme souci et je l'ai réglé en ne fermant l'application word que a la fin de mon programme, lorsque celui-ci se ferme (unload de la feuille principale)
    je te conseil :
    - enlève les deux dernières lignes (set ...)
    - ajoute MyWord.Quit dans le Unlod de ta feuille principale.
    - Enfin joue sur la propriété Visble de l'application word pour faire croire ou non a l'utilisateur que word est décharger.
    J'espère t'avoir aidé.
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  3. #3
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Il y a plus simple !

    Tu n'es pas obligé de fermer word mais tu dois toujours faire référence à ton objet cela signifie que chacune de tes lignes (ou un "With", ce qui est mieux) doit toujours contenir ton instance Word.

    Je me suis heurtée à ce même problème à mes débuts. Si vous désirez un exemple allez voir dans la page sources VB ici : http://vb.developpez.com/sources/?page=word#wordprj

    vous verrez que j'adresse toujours mon objet Word

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    Khany : lorsque tu dis que je dois toujours adresser mon objet Word, dans mon code, qu'est-ce que je dois corriger alors ? Car pour moi il reste adressé vu que je fais un With. non ?

  5. #5
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    Tu as raison, tu fais comme moi.
    Bizarre, je n'ai jamais plus eu ce problème en faisant le With MyWord

    Cela pourrait-il être lié à la façon dont tu fermes le document ?

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    Le problème c'est que je ne peux pas mettre myword.quit dans le unload car il s'agit de statistiques envoyées dans un fichier word et si l'utilisateur clic plusieurs fois sur le bouton pour visualiser les statistiques dans le fichier, il ne quittera pas la forme donc je pense que je ne peux pas mettre le quit dans le unload si ?

  7. #7
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    J'ai essayé de mettre le MyWord.Quit mais j'ai toujours la même erreur. J'ai tenté de faire une déclaration pour toute la feuille donc la déclaration en début mais il me met une erreur sur le document.

    Je ne vois pas comment faire.

  8. #8
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    Quelqu'un aurait-il une idée ?

  9. #9
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Juste une question: ta variable CHEMIN2, elle contient quoi? C'est une variable globale?

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je sais, je suis dans VBA mais je n'ai jamais eu de pb en faisant ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Set MonAppli = Application
        MonAppli.Visible = True
        MonAppli.Quit SaveChanges:=wdDoNotSaveChanges
    Si tu as sauvegardé ton fichier + tôt, tu devrais pouvoir faire ça.

    A tout hasard

  11. #11
    Membre éprouvé
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Par défaut
    As-tu progressé ?

    désolée, je suis en formation donc moins présente

  12. #12
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    Non je n'ai pas progressé du tout j'ai déjà cherché à fermer l'application mais cela ne fonctionne pas.
    CHEMIN2 est une variable globale qui détermine un accès d'un fichier word en locurrence. J'ai remarqué que l'application WORD créait un fichier temporaire ce qui rend le document en lecture seule. Mais seulement lors d'un deuxième appui sur le bouton qui provoque l'exécution du code. Avez-vous une idée ?

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    As-tu essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            ....
            doc.SaveAs App.Path & "\stat.doc" ' enregistre sous un autre nom 
            .Visible = True ' rend l'application visible 
        End With 
        DoEvents
        Doc.close false
         Doevents
        MyWord .Quit
        Set MyWord = Nothing 
        Set doc = Nothing
    et de supprimer ta déclaration
    Dim MyWord As Word.Application
    Quand tu enregistres ton document tu ne le fermes pas.
    Une idée comme ça...
    Quant aux doevents, c'est vraiment par acquis de conscience

    Tu dis

    A+

  14. #14
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    Slt Ouksel, si je fais ton code :

    1) il me met une erreur sur Doc.close false => je dois le mettre en commentaire pour pouvoir continuer
    2) lorsqu'il exécute le code il me ferme le Word enfin il me demande si je veux enregistrer ou non les modifications donc c'est comme si il fermait le Word.
    3) Si je ne mets pas ma déclaration, il me dit que la variable n'existe pas car dans tous mes projets j'utilise OPTION EXPLICIT.

    En tout cas c'est sympa de votre part à tous de m'aider.

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello,
    Un week-end là-dessus, ton appli doit être en forme...
    Essaie avec "Doc.close", sans le false
    Remets la déclaration (je ne comprends pas, car set devrait suffire... mais là, j'avoue mon ignorance)
    Et tu nous dis.

    Il y a souvent des posts sur la fermeture de Word ou Excel en VB, doit bien ya avoir quelque chose dans la FAC

    Bon courage

    A+

  16. #16
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    si je mets le DOC.CLOSE il met à l'utilisateur la boite enregistrer les modifications : oui - non - annuler et de toute façon le programme reviens en erreur à la deuxième tentative.

    Je me suis basé sur le doc de Khany dans la faq mais je ne comprends pas pourquoi cela ne fonctionne pas.

    En fait c'est très simple ce que je veux faire : écrire une première ligne contenant des résultats généraux en une seule phrase et ensuite créer un tableau mais bon on dirait que Word après l'exécution, ne peut se réouvrir une seconde fois. Pourtant le fichier original n'est pas modifié au contraire puisque j'enregistre sous un autre nom. Vive l'informatique !!!

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour le message après Doc.close, tu peux l'éviter en faisant précéder cette commande de "Application.displayAlerts = false"

    A+

  18. #18
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    Ce n'est pas la fermeture du document qui pose problème car au deuxième essai il m'indique une erreur sur Je pense qu'il doit il y avoir un verrou sur le fichier Word car lorsque j'ouvre moi même le fichier je m'aperçois qu'il y a un fichier de sauvegarde enregistré. Arf WORD

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je pense à une chose : quand tu enregistres ton doc, tu ne précises pas le format. Essaie ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.SaveAs FileName:= myDocname, FileFormat:=wdFormatDocument
    Une petite remarque
    Tu sélectionnes tout et ensuite pour effacer tu ajoutes "Unit:=wdCharacter, Count:=1" Ce n'est pas nécessaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Selection.WholeStory 
            Selection.Delete
    marche aussi bien

  20. #20
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    J'ai trouvé : il faut que je fasse ceci :

    Chaque fois que j'utilise Selection je dois mettre .Selection ainsi que tout objet : Donc pour tout objet du document j'ai du mettre le POINT devant ce qui donne :
    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
        Dim MyWord As Word.Application
        Dim doc As Word.Document
        Set MyWord = New Word.Application
        With MyWord
            .Documents.Open (CHEMIN2)
            .Selection.WholeStory
            .Selection.Delete
            .Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
            .Selection.Font.Size = 20
            .Selection.Font.Bold = wdToggle
            .Selection.TypeText Label1 ' écrit le titre
            .Selection.TypeParagraph ' a la ligne
            .Selection.TypeParagraph
            '''''''''''''''''''''''''''''''''''
            ' récupérer le nombre de colonnes '
            '''''''''''''''''''''''''''''''''''
            Dim VARC, VARL As Integer
            VARC = Form5.MSFlexGrid1.Cols
            VARL = Form5.MSFlexGrid1.Rows
     
            .Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft ' se mettre à gauche dans le document
            ''''''''''''''''''''
            ' créer un tableau '
            ''''''''''''''''''''
            .ActiveDocument.Tables.Add Range:=.Selection.Range, NumRows:=VARL, NumColumns:=VARC
            With .Selection.Tables(1)
                If .Style <> "Grille du tableau" Then
                    .Style = "Grille du tableau"
                End If
                .ApplyStyleHeadingRows = True
                .ApplyStyleLastRow = True
                .ApplyStyleFirstColumn = True
                .ApplyStyleLastColumn = True
            End With
            '''''''''''''''''''''''''''''''''''''''''''''''
            ' remplir le tableau créé avec la MSFlexGrid1 '
            '''''''''''''''''''''''''''''''''''''''''''''''
            For i = 0 To VARL - 1
                For j = 0 To VARC - 1
                    .Selection.TypeText Text:=Form5.MSFlexGrid1.TextMatrix(i, j)
                    .Selection.MoveRight Unit:=wdCell
                Next j
            Next i
            doc.SaveAs App.Path & "\stat.doc" ' enregistre sous un autre nom
            .Visible = True ' rend l'application visible
        End With
        DoEvents
        Set doc = Nothing
        Set MyWord = Nothing
    Merci à vous tous pour votre aide : en particulier à Ouksel et Khany

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. remplissage d'un document word à partir de vb6
    Par azzouz_soui dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/05/2008, 15h58
  2. [VB6 - Word] Insertion d'entêtes dans un document Word
    Par tmcgrady dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/09/2006, 14h45
  3. [VB6] Documents Word -> fenêtre MDI fille
    Par shr3dpit dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/05/2006, 09h43
  4. [VB6]Créer un document word
    Par zemeilleurofgreg dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/04/2006, 20h42
  5. [VB6] Erreur lors de l'ouverture d'un document Word
    Par Marco le Pouillot dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/01/2003, 09h30

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