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 :

Modification d'un document par VBA et instances multiples de Word [WD-2010]


Sujet :

VBA Word

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 75
    Par défaut Modification d'un document par VBA et instances multiples de Word
    Bonjour,

    J'aimerais savoir s'il est possible en VBA d'insérer à l'endroit où se trouverait le curseur dans Document1 si Document1 était actif tout en travaillant dans Document2. Document2 serait modifié manuellement ou par programmation en parallèle aux modifications s'effectuant dans Document1.

    Choses que je voudrais insérer par VBA dans Document1 :
    tableaux, texte (avec modification de mise en forme), images, fichiers word, etc.

    Donc je voudrais l'équivalent de Selection.TypeText
    ou Selection.InlineShapes.AddPicture
    ou Selection.InlineShapes.AddOLEObject
    Pour insérer dans Document1 en ayant Document2 ouvert aussi en travaillant manuellement ou par programmation dans Document2.

    Merci

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Il n'y a qu'un seul objet selection et il se trouve dans le document actif.

    Si le document actif change, l'objet selection change.

    Cependant, si on sélectionne du texte dans le doc 1 que l'on bascule dans le doc 2, le texte du doc 1 reste sélectionné et lorsque l'on revient au doc 1 , la sélection està nouveau active et le texte est toujours contenu dans la selection.

    Pour 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
     
    Sub TestOli002()
    Dim oDoc1 As Document
    Dim oDoc2 As Document
     
    Set oDoc1 = ActiveDocument
    Set oDoc2 = Documents.Add
    oDoc1.Activate
    Selection.TypeText "texte du document 1"
    Selection.HomeKey unit:=wdStory, Extend:=wdExtend
     
    oDoc2.Activate
    Selection.TypeText "texte du document 2"
    oDoc1.Activate
    Debug.Print Selection.Range.Text
     
     
    End Sub
    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 !

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 75
    Par défaut
    Mon projet doit alterner ajout en fin de document / ajout à un endroit précis.
    Il n'est donc pas possible de le faire sans perturber le travail de l'utilisateur dans un autre document ?

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    J'avais pas lu cette particularité dans le premier message !

    Il suffit d'ouvrir une instance de Word pour modifier un document.

    Mais si tu pouvais être plus clair et plus complet, ce serait pas plus mal.
    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 !

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 75
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    Mais si tu pouvais être plus clair et plus complet, ce serait pas plus mal.
    Contexte : L'utilisateur veut pouvoir travailler dans word sans être perturbé par une macro qu'il a lancée pour générer automatiquement un document.

    C'est dans ce document que, parfois je dois ajouter du texte à la suite, parfois à un endroit précis, par exemple dans un tableau word que je viens de créer par
    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
    doc.Characters.Last.Select
    Selection.Collapse wdCollapseEnd
    doc.Tables.Add Selection.Range, 1, 1
    doc.Tables(1).Cell(1,1).Select
    Selection.TypeText "Hello"
    doc.Characters.Last.Select
    Selection.Collapse wdCollapseEnd
    Selection.InsertParagraphAfter
    Selection.TypeText "Hello à la fin du doc"
    Selection.Collapse wdCollapseEnd
    Selection.InsertParagraphAfter
    Selection.Collapse wdCollapseEnd
    Set tabl = doc.Tables.Add Selection.Range, 2, 2
    tabl.Cell(1,2).Select
    Selection.TypeText "2ème tableau"
    doc.Characters.Last.Select
    'Insertion à la fin du document
    Ma question est donc est-il possible de modifier doc, de la même manière que le code ci-dessus le ferait, sans que doc soit actif, car l'utilisateur travaille dans document 2. C'est donc document 2 qui est actif. Il faut que le code ci-dessus agisse sur doc et laisse mon document 2 tranquille et qu'il reste actif pour qu'on puisse quand même continuer à écrire dedans.
    Dans le projet, c'est une boucle donc il faudrait qu'on puisse quand même travailler dans doc 2 sans avoir à attendre la fin de la macro.

    Il peut y avoir des changements de police par VBA que je veux garder donc avec l'objet Range, ça me semble compliqué.

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Essaie ce code ?

    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
     
    Sub Testolivier0012()
    Dim wApp As Word.Application
    Dim odoc1 As Document
    Dim odoc2 As Document
    Dim oTbl As Table
     
     
    Set odoc1 = ActiveDocument
    Set wApp = New Word.Application
    Set odoc2 = wApp.Documents.Add
     
     
    odoc2.Select
    odoc2.Range.Text = "Salut comment vas tu bien ?"
     
    Selection.TypeParagraph
    Set oTbl = odoc2.Tables.Add(Range:=odoc2.Paragraphs(1).Range, Numrows:=5, numcolumns:=5)
    oTbl.Cell(1, 1).Range.Text = "Nouveau texte"
    odoc1.Select
    Selection.TypeText "Le texte du premier document"
    wApp.Visible = True
     
    End Sub
    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 !

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

Discussions similaires

  1. Recherche à travers des instances multiples de Word
    Par Akisax dans le forum Général VBA
    Réponses: 4
    Dernier message: 07/02/2014, 11h34
  2. [WD-2010] Modification de champs wdFieldFormTextInput par vba
    Par letienne dans le forum VBA Word
    Réponses: 1
    Dernier message: 08/01/2013, 23h14
  3. [WD-2007] Modification de propriété de document par VBA
    Par Olivier.Ramon dans le forum VBA Word
    Réponses: 2
    Dernier message: 09/11/2011, 09h48
  4. Réponses: 2
    Dernier message: 08/02/2007, 10h20
  5. Réponses: 2
    Dernier message: 05/02/2007, 17h09

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