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

VBA Word Discussion :

Pilotage WORD via VBA ACCESS 2007 : Supprimer une page d'un document


Sujet :

VBA Word

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut Pilotage WORD via VBA ACCESS 2007 : Supprimer une page d'un document
    Bonjour,

    Je cherche à savoir s'il est possible de supprimer une page spécifique d'un document WORD via un pilotage ACCESS.
    Les fonctions que je souhaite mettre en place :
    Supprimer une page (numéro de page)
    Ou alors
    Sélectionner tout le contenu d'une page spécifique

    Merci d'avance pour vos conseils, solutions ou pistes !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Bonjour,
    Tu as quelques exemples d'automation entre Access et Word par ici. Peut-être que cela pourra t'aider

    Bonne journée
    L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut Mise à jour de balises dans les en-têtes
    Merci pour ta réponse.
    Oui je me suis inspiré de cela.

    Pour la mise à jour de signets, mon code fonctionne, par contre j'ai un souci lorsque je cherche à remplacer des balises dans mon document.
    Pour la première balise le changement s'effectue bien, mais pas pour les suivantes.

    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
     
          Set objWordApp = New Word.Application
            
            With objWordApp
            
                .Visible = True
                Set objWordDoc = .Documents.Open(parNomFichierWfi)
             
                '-------------------------
                'Mise à jour des signets
                '-------------------------
                
                'Page 0 :
                ' Signet Procédé SIP : cela fonctionne pour les signets
                objWordDoc.Bookmarks("PG_0_PROCEDE_SIP").Range.Text = "Ma valeur"
                
                
                ' Titre complet : fonctionne 
                .Selection.Find.Execute Findtext:="|titre|", ReplaceWith:=monRcsFI!TITRE], Replace:=wdReplaceAll
        
                ' Référence :  ne fonctionne pas dans les en-têtes du document
                .Selection.Find.Execute Findtext:="|ref|", ReplaceWith:=monRcsFI![REFERENCE], Replace:=wdReplaceAll
    
                ....
    Savez vous comment modifier une balise placée dans des en-têtes de documents ?

    Merci pour vos idées !

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    Bonjour,
    Au moment où tu commences à utiliser les objets WORD (ou d'autres objets de l'application distante) tu n'es plus dans le périmètre ACCESS.

    Je te transfère vers WORD VBA.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Pour les en-têtes et pieds de page, il ne faut pas travailler avec l'objet selection directement.
    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
     
    'Déclaration de variable
    Dim s As Section
     
    'Parcours de toutes les sections
    For Each s In Selection.Sections
     
    'Parcours des 3 types de pied de page
        s.Footers(1).Range.Find.Execute Findtext:="|ref|", ReplaceWith:=monRcsFI![Reference], Replace:=wdReplaceAll
        s.Footers(2).Range.Find.Execute Findtext:="|ref|", ReplaceWith:=monRcsFI![Reference], Replace:=wdReplaceAll
        s.Footers(3).Range.Find.Execute Findtext:="|ref|", ReplaceWith:=monRcsFI![Reference], Replace:=wdReplaceAll
     
    'Parcours des 3 types d'en-tête
        s.Headers(1).Range.Find.Execute Findtext:="|ref|", ReplaceWith:=monRcsFI![Reference], Replace:=wdReplaceAll
        s.Headers(2).Range.Find.Execute Findtext:="|ref|", ReplaceWith:=monRcsFI![Reference], Replace:=wdReplaceAll
        s.Headers(3).Range.Find.Execute Findtext:="|ref|", ReplaceWith:=monRcsFI![Reference], Replace:=wdReplaceAll
    Next s
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut
    Merci pour ces infos.

    En fait j'ai du adopter une autre solution car je n'arrive pas à remplacer une balise du style |balise| dans mes en-têtes de fichiers Word.

    Mon fichier "modèle" est assez chargé.
    Il dispose de différents entêtes de page dans des sections différentes.
    Les en-têtes sont organisés sous la forme d'une matrice de tableau avec différents champs dans les diverses cellules.

    Est-ce cela qui pose un problème ?

    D'autre part j'ai un message d'erreur si je cherche à adresser une section autre que section(1).

  7. #7
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    L'erreur pour une autre section est surement dû au fait d'utiliser l'objet selection, il vaut mieux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each s In objworddoc.sections
    Quand tu dis que cela ne marche pas, est-ce que l'affichage des codes de champs est bien actif?
    Est-ce que tu es dans un mode qui permet de visualiser les en-têtes en général, je me mets en affichage entête et pied de page.
    Est-ce qu'il y a une erreur ou bien le remplacement ne se fait simplement pas?
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pour ce genre de manipulation, il est beaucoup plus facile de travailler avec des signets que de faire des recherches et remplacement.

    Avec un signet, il n'est pas nécessaire d'ouvrir les sections, on accède directement aux objets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Bookmarks("yyy").Range.Text = "AAAA"
    ET ce même si l'entête ou le pied de page ne sont pas visible.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut
    Merci pour vos réponses,

    J'ai effectivement adopté les signets, ce que je faisais jusqu'à présent, même si c'est plus laborieux à mettre en place dans mon document compte tenu du nombre d'en-tête différents.

    Cdt.

Discussions similaires

  1. [AC-2007] Problème de publipostage entre Access & Word via VBA
    Par sebaci972 dans le forum VBA Access
    Réponses: 0
    Dernier message: 12/05/2009, 20h10
  2. [VBA][ACCESS 2007] Créer un filtre pour une variable
    Par Jahprend dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/07/2008, 11h49
  3. [FPDF] Supprimer une page d'un document PDF
    Par Chikh001 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 23/03/2008, 20h22
  4. Réponses: 2
    Dernier message: 28/06/2007, 08h23
  5. Réponses: 1
    Dernier message: 24/04/2007, 17h20

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