Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/10/2011, 17h17   #1
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 134
Points : 29
Points : 29
Par défaut Générer un fichier word mis en forme

Bonjour à tous et à toutes

Je fréquente assiduement le forum actuellement car le passage de vista à windows 7 64 bits fait que l'application développée à mon travail sous superbase ne tourne plus.

Je me suis donc lancé dans VBA sous Access et Excel.

Je remercie chaleureusment tous ceux qui m'ont aidé les semaines passées.

La suite de mon projet me fait envisager de créer un fichier Word à partir de Excel.

Je n'ai pas trouvé de tutos sur le sujet, en particulier sur la possibilité de gérer la mise en page dans le fichier word créé directement depuis le code excel (affecter des styles, mettre certains passage en gras par exemple ...)


Mon projet est le suivant

On part d'une liste d'équipements (voir fichier joint)

On le passe en revue, pour le trier par famille, faire des regroupements par matériel portant le même nom et on fait des débuts de paragraphes selon la syntaxe ci dessous

Voici ce que pourrait donner le texte mis en oeuvre à partir de la liste sous excel :

___________________

1/ CHAPITRE CHAISE (selon la famille CF)

CHAISE DE BUREAU
Repere : CF003 - Nbre : 1 - Local : Bureau
Repere : Cf004 - Nbre : 1 - Local : Chambre

CHAISE DE SALON
Repere : CF005 - Nbre : 4 - Local : Salon



2/ CHAPITRE TABLE (Selon la famille TA)

TABLE PLACES
Repere : TA006 - Nbre : 1 - Local : Salon



3/ CHAPITRE ARMOIRES (Selon la famille TP)

ARMOIRE
Repere : TP001 - Nbre : 1 - Local : Cave
Repère : TP002 - Nbre : 2 - Local : Bureau


___________________


Pensez vous que ce projet soit réalisable ?

Génere-t-on un fichier texte "brut" que l'on copie ensuite dans word pour le mettre en forme ou peut on tout gérer depuis le code excel ?

Merci d'avance pour votre aide et les pistes que vous pourrez me donner.

Bonne journée

Daniel S
Fichiers attachés
Type de fichier : xls Classeur test.xls (19,0 Ko, 0 affichages)
familledacp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 18h02   #2
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 707
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 707
Points : 3 629
Points : 3 629
Salut, peut-être en commençant par lire dans la FAQ http://excel.developpez.com/faq/?page=Word
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 10h09   #3
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 134
Points : 29
Points : 29
Bonjour à tous et à Kiki

Merci pour cette piste, j'ai fait quelques recherches et ai réussi à ouvrir un fichier word et à y insérer du texte .....

Un souci, je n'arrive pas à positionner mon curseur à la fin du texte déjà saisi.

Le code bug sur la ligne wdstory ..... Est ce que ce wdstory est une "variable" qu'il faut déclarer au préalable ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub CommandButton2_Click()
Unload UserForm3
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open("e:\simple test2.doc", ReadOnly:=False)
 
Selection.EndKey Unit:=wdStory
WordDoc.Range.Text = "Test de fonctionnement" & Chr(10) & "Ligne 2 Test de fonctionnement" & Chr(10)
 
WordDoc.Save
WordDoc.Close
Set WordDoc = Nothing
End Sub
Merci pour votre aide

Daniel
familledacp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 10h27   #4
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 707
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 707
Points : 3 629
Points : 3 629
Salut, non, voir aide en ligne sur EndKey et WdUnits
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 16h58   #5
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 134
Points : 29
Points : 29
Re bonjour Kiki

J'ai cherché (surement mal, car je n'ai pas trouvé)

J'ai trouvé une autre solution, surement pas satisfaisante pour les puristes

Je compte le nombre de paragraphes dans le fichier et je m'en sers pour positionner le texte à écrire

Code :
1
2
3
4
5
6
7
8
9
Dim para As String
For ligne2 = 4 To laderniere
   rep = Range("c" & ligne2).Value
   famille = Left(rep, 2)
   If famille = "BU" Then
      para = WordDoc.Paragraphs.Count
      WordDoc.Paragraphs(para).Range.Text = mater & Chr(10) & "Repère : " & rep & " - Nbre : " & nb & " - Local : " & loc & Chr(10) & Chr(10)
    End If
Next ligne2
A bientot

Daniel

Re bonjour Kiki29 et tous les autres

Je reviens sur cette discussion car je bloque sur un certain nombre de points dans mon code
- affecter un style à une ligne de texte
- mettre une partie du texte en gras (voir un autre post)

Je pense que tout cela vient du fait que je n'ai pas réussi à m'en sortir de cette histoire de wdstory ....

J'ai cherché sur le site, dans les faq ... rien trouvé

Si quelqu'un peut m'indiquer la piste du tuto adapté, je suis preneur

Merci pour votre aide

Daniel
familledacp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 19h03   #6
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 134
Points : 29
Points : 29
Re bonjour

Je progresse à tous petits pas

J'ai trouvé un but de code utilisant le wdstory qui fonctionne (je n'y comprends pas grand chose à vrai dire)

En tout état de cause, le texte s'écrit bien à la fin du document

j'essaye de sélectionner une ligne et de la mettre en gras

Pas de chance, vu que la macro est lancée depuis excel, c'est une plage sélectionnée sous excel qui se met en gras et non la ligne sélectionnée sous word

Avez vous une explication ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub CommandButton4_Click()
'essai 2 word ecriture
Unload UserForm3
Const wdStory = 6
Const wdMove = 0
 
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
 
Set objdoc = objWord.Documents.Open("e:\testdoc.doc")
 
Set objSelection = objWord.Selection
objSelection.EndKey wdStory, wdMove
objSelection.TypeText Chr(10) & "This text was appended to an existing Word document." & Chr(10)
 
objdoc.Paragraphs(3).Range.Select
With Selection
    .Font.Bold = True
End With
 
 
End Sub
Encore merci pour votre aide

Daniel S
familledacp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h51.


 
 
 
 
Partenaires

Hébergement Web