Se connecter avec
S'enregistrer | Connectez-vous
Votre question

[VBA] Récupérer un text et sa mise en forme et le coller dans le document actif

Dernière réponse : dans Programmation
Partagez
21 Octobre 2012 12:35:14

Bonjour,
Je souhaiterai récupérer un texte et sa mise en page (fichier type word) et le coller automatiquement (a partir du curseur) dans le document actif (celui sur lequel je travaille). Pour cela je veux activer une macro qui me demande quel fichier (text et mise en forme de celui-ci) je veux inserer (copier) dans mon document actif par l'intermédiaire d'une boite de dialogue Ouvrir (Open). Je suis totalement débutant si quelqu'un peu m'aider a créer ces ligne de code j'en sera enchanter ! Merci
22 Octobre 2012 11:53:48

Salut,

Débutant ou pas, nous ne ferons pas ton travail à ta place.
Mais nous allons t'aider quand même.

-----------

Bienvenue donc dans le monde de la programmation.

Je t'invite à démarrer l'enregistreur de macro, et à faire à la main, la procédure que tu décris.
Tu obtiendras un code que je te propose de publier ici (pour ce faire, n'oublie pas d'utiliser la balise [code]). On en discutera alors.

A te lire.
m
0
l
25 Octobre 2012 20:36:40

Merci pour ta réponse si rapide,
J'en suis pas encore la !
J'ai fais exactement se que tu m'as conseiller voici les codes que j'obtiens (j'ai les fais en 3 étapes ou macro) :
- 1° ouvre le fichier word et copie le text (dans ce cas si c'est uniquement un mot mais je pense que la démarche est la même pour un text plus long)
[Sub Macro1()
'
' Macro1 Macro
'
'
ChangeFileOpenDirectory "C:\Users\Pierre-Antoine\Desktop\Macro\"
Documents.Open FileName:="Hello.docx", ConfirmConversions:=False, ReadOnly _
:=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _
:="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _
, Format:=wdOpenFormatAuto, XMLTransform:=""
Selection.MoveRight Unit:=wdCharacter, Count:=7, Extend:=wdExtend
Selection.Copy
Application.WindowState = wdWindowStateMinimize
Application.WindowState = wdWindowStateNormal
End Sub]

2° Je colle les éléments copier
[Sub Macro2()
'
' Macro2 Macro
'
'
Selection.PasteAndFormat (wdPasteDefault)
End Sub]

3° je ferme le fichier dans lequel j'ai copier le text
[Sub Macro3()
'
' Macro3 Macro
'
'
ActiveWindow.Close
End Sub]

Donc voici les lignes de code obtenu, évidement un certain nombre de questions me viennent à l'esprit :
- Le fichier dans lequel j'aimerai copier les informations n'est pas tout le temps le même ,je doit donc faire ouvrir une boite de dialogue, sélectionner un fichier et copier son contenu en intégralité.
ouf ce point est le plus compliqué pour moi pour l'instant !
-Il me faut aussi réussir a lier les macros entre elles il me semble qu'il faut simplement intégrer la macro sans intégrer la ligne [End sub] je pense qu'un seul [End sub] a la fin de l'ensemble et la syntaxe correct, c'est ça ?
Enfin déjà un grand merci pour ta réponse si simple et efficace :) 
Je suis impatient de comprendre comment ouvrir les fichiers grace aux boites de dialogues et comprendre les fonctions et leur utilisation :D 
Merci
m
0
l
27 Octobre 2012 17:39:51

heu ,
Je suis désolé j'arrive pas encore a faire plusieurs choses a la fois
J'y vais lentement .
Mais si quelqu'un peu continuer a m'aider sa serai sympa :) 
Enfin j'arrive a faire apparaitre la boite de dialogue avec ça :
[
Dim fso As String
fso = Application.Dialogs(wdDialogFileFind).Show
]
Enfin c'est du bidouillage avec un vieux poste de Zeb
Mais bon je suis tjr complétement bloquer pour ouvrir le fichier
je ne comprend pas comment une fonction renvois un nom et/ou un chemin
ou si une fonction existe pour sélectionner un fichier (ac une boite de dialogue), puis l'ouvrir directement ?
Bon je test quelques trucs mais ça reste vraiment du chinois pour moi .
Est ce qu'il existe un site ou quoi que se soit qui répertorie tout les différents type de variables et fonctions complexes ?
Si vous pouvais me répondre sa me serai utile .
Merci
m
0
l
29 Octobre 2012 10:18:55

[code=vb]
Sub Macro1()

.....

End Sub
[/code]

=>

  1. Sub Macro1()
  2.  
  3. .....
  4.  
  5. End Sub


Merci de revoir tes messages précédents !
[:zeb:4]

---------------------------------

Dépêche-toi de régler tes problèmes avec le modo, j'ai des tas de trucs à te dire concernant ton problème ;) 
m
0
l
29 Octobre 2012 19:15:27


j'arrive a faire apparaitre la boite de dialogue avec ça :
  1. Sub Macro1()
  2. Dim fso As String
  3. fso = Application.Dialogs(wdDialogFileFind).Show
  4. End Sub

A ce point la est-ce que le nom du fichier est enregistrer dans ma variable donc ici "fso" ? c'est ce que je crois .
il me reste à rechercher le chemin .
Sélectionner en intégrant la totalité du texte.
Bon alors je replace correctement les petites macros enregistrer avec le mode enregistrement de word qui me donne les codes suivant:

  1. Sub SelectionOuvre()
  2. '
  3. ' SelectionOuvre Macro
  4.  
  5. '
  6. '
  7. ChangeFileOpenDirectory "C:\Users\XXXXXX\Desktop\Macro\"
  8. Documents.Open FileName:="Hello.docx", ConfirmConversions:=False, ReadOnly _
  9. :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _
  10. :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _
  11. , Format:=wdOpenFormatAuto, XMLTransform:=""
  12. Selection.MoveRight Unit:=wdCharacter, Count:=7, Extend:=wdExtend
  13. Selection.Copy
  14. Application.WindowState = wdWindowStateMinimize
  15. Application.WindowState = wdWindowStateNormal
  16. End Sub


2° Je colle les éléments copier
  1. Sub Colle()
  2. '
  3. ' Colle Macro
  4. '
  5. '
  6. Selection.PasteAndFormat (wdPasteDefault)
  7. End Sub



3° je ferme le fichier dans lequel j'ai copier le texte
  1. Sub Fermer()
  2. '
  3. ' Fermer Macro
  4. '
  5. '
  6. ActiveWindow.Close
  7. End Sub

Dans cette macro cela ferme la fenêtre active alors que je veux fermer la fenêtre du document copier (peut-être en plaçant cette macro avant de coller dans mon document principal.
Enfin j'ai compris que pour regrouper des macros il suffit de l'appeler a l'aide de :"Call' nom de la macro' ".
Voila je pense que tout est en ordre dans ce message et que je commence a comprendre un petit peu.
Merci



m
0
l