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

Macros et VBA Excel Discussion :

Modification d'un fichier word via excel [XL-2000]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Points : 67
    Points
    67
    Par défaut Modification d'un fichier word via excel
    Bonjour,

    Je souhaiterai supprimer des lignes d'un tableau dans un fichier word, voici le code que j'ai actuellement, mais qui ne fonctionne pas

    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
     
    ' Création des objets Word
    Dim WdApp As Word.Application
    Dim WdDoc As Word.Document
     
    'ouvre la session Word
        Set WdApp = CreateObject("word.application")
    'ouvre le doc
        Set WdDoc = WdApp.Documents.Open("D:\Documents and Settings\XXX\Bureau\Projet - XXX\XXX - Relevés des reglages.doc")
    'masque l'application (Pour les tests, mettre à True)
        WdApp.Visible = True
     
     
    WdDoc.Range(WdDoc.Tables(4).Cell(8, 1).Range.Start, WdDoc.Tables(4).Cell(31, 7).Range.End).Select
    WdDoc.Selection.Rows.Delete
    WdDoc.Selection.TypeBackspace
     
    'Enregistre et ferme le doc word
    WdDoc.SaveAs "D:\Documents and Settings\XXX\Bureau\Projet - XXX\XXX - toto.doc"
     
    WdDoc.Close True
    'Laisse au system le temps d'enregistrer le fichier
    DoEvents
    'ferme la session
    WdApp.Quit
     
    Set WdApp = Nothing
    Set WdDoc = Nothing
    End Sub
    En fait les lignes ne sont pas supprimées et j'ai le message d'erreur suivant "erreur d'exécution 438" "Propriété ou méthode non gérée par cet objet.

    Par avance merci.

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    utilises le debegueur en mode pas à pas et dis nous sur quelle ligne tu as le message, ce sera plus facile pour t'aider.

  3. #3
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonsoir.

    Je te propose de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WdDoc.Range(WdDoc.Tables(4).Cell(8, 1).Range.Start, WdDoc.Tables(4).Cell(31, 7).Range.End).Select
    WdDoc.Selection.Rows.Delete
    WdDoc.Selection.TypeBackspace
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 8 to 31
        WdDoc.Tables(4).Rows(8).Delete
    next i
    Cordialement,

    PGZ

  4. #4
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    J'ai essayé le code proposé, mais cela ne fonctionne pas car dans mon tableau j'ai des cellules fusionnées verticalement, erreur d'execution 5991.

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Août 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2009
    Messages : 85
    Points : 228
    Points
    228
    Par défaut
    C'est assez bizarre, mais le modèle objet de Word (faire F2 pour afficher le modèle objet) ne gère pas de propriété SELECTION pour l'objet que tu as créé WdDoc (objet de type DOCUMENT, va voir les propriétés dispos pour document).

    SELECTION existe pour l'objet WINDOW.

    Il faut donc écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set MyDoc = WordApp.Documents(nom_word & ".doc").ActiveWindow

    (exemple)

    Puis pour effacer les lignes après ta sélection qui est juste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyDoc.Selection.Rows.Delete
    J'ai pas trop compris l'esprit de ce MOO en fait... Mais en le lisant, c'est bien comme ça qu'on fait, le message d'erreur que tu as est logique...

    ---

    Je me souviens que je m'étais creusé grave la tête sur ce pb, et j'avais posté un petit tuto sur mon blog :

    http://excel-methode.blogspot.com/20...tiquement.html

    Le coup du Set MyDoc = .... pour gérer les propriétés du documents, on le retrouve là-dedans.

    Bonne journée !

  6. #6
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Points : 67
    Points
    67
    Par défaut
    Merci pour votre aide, pour l'instant je contourne le problème annulant les cellules fusionnées. Voici le code que j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    WdDoc.Tables(4).Cell(8, 1).Split NumRows:=6, NumColumns:=1
    WdDoc.Tables(4).Cell(8, 2).Split NumRows:=1, NumColumns:=6
    WdDoc.Tables(4).Cell(14, 1).Split NumRows:=6, NumColumns:=1
    WdDoc.Tables(4).Cell(14, 2).Split NumRows:=1, NumColumns:=6
    WdDoc.Tables(4).Cell(20, 1).Split NumRows:=6, NumColumns:=1
    WdDoc.Tables(4).Cell(20, 2).Split NumRows:=1, NumColumns:=6
    WdDoc.Tables(4).Cell(26, 1).Split NumRows:=6, NumColumns:=1
    WdDoc.Tables(4).Cell(26, 2).Split NumRows:=1, NumColumns:=6
     
    Set myTable = WdDoc.Tables(4)
    Set myRange = WdDoc.Range(myTable.Cell(8, 1) _
        .Range.Start, myTable.Cell(31, 7).Range.End)
    myRange.Rows.Delete
    Mais si quelqu'un peux m'expliquer pourquoi ca ne marche pas avec des cellules fusionnées.

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Août 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2009
    Messages : 85
    Points : 228
    Points
    228
    Par défaut
    Ben oui, tu n'utilises plus la "Selection" sur ton WdDoc...
    La méthode Delete employée est correctement utilisée cette fois, là encore, voir le MOO word.
    Je ne pense pas que c'est parce que tu as désplitté tes cellules !

  8. #8
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Points : 67
    Points
    67
    Par défaut
    Tu as tout à fait raison, desolé pour le retard.

    Merci encore pour ton aide.

  9. #9
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonsoir.

    A mon avis, la méthode Delete appliquée à une ligne de tableau échoue si la ligne contient des cellules fusionnées verticalement.
    Par contre les cellules fusionnées horizontalement ne sont pas gênantes.

    PGZ

  10. #10
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 103
    Points : 67
    Points
    67
    Par défaut
    Tu as surement raison, mais en fait je supprime les lignes jusqu'au bas de la cellule fusionnée verticalement.

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

Discussions similaires

  1. Générer un fichier word ou excel en php
    Par Taz_8626 dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 10/05/2011, 09h57
  2. enregistrement successif de fichier word via excel
    Par tchiph dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/06/2010, 16h13
  3. [XL-2010] automatiser une date de modif d'un fichier word dans Excel
    Par chevalpm dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/05/2010, 09h00
  4. Réponses: 2
    Dernier message: 07/12/2005, 12h05
  5. [CR7][Word] Ouvrir un fichier Word ou excel avec CR
    Par yoyothebest dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 23/04/2005, 19h47

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