Macro Copier/Coller données Excel vers document Word avec Signets

julien91080

XLDnaute Occasionnel
Bonjour à tous,

Etant novice en Excel et en VBA, je me permets de solliciter votre aide. Voici mon problème : J’essai de créer une base Excel comprenant diverses informations sur des écoles. Ce fichier Excel comprend 3 boutons :

- Consulter une fiche école: en sélectionnant le nom d’une école dans la colonne « Ecole » et en cliquant sur le bouton, la macro créée un document Word dans un répertoire bien défini si la fiche n’existe pas (ici dans « Mes documents » sur mon poste, à adapter pour que cela fonctionne chez vous) sinon, si la fiche existe déjà, la macro affiche la fiche.

- Remplir fiche : en sélectionnant le nom d’une école dans la colonne "Ecole" et en cliquant sur le bouton, la macro va chercher la fiche école vierge et un fichier « Template » (Répertoire défini aussi dans « Mes documents », à adapter). La macro Copie/Colle le Template sur la fiche école et impacte les données du fichier Excel via des signets.

- Mise à jour Fiche : en sélectionnant le nom d’une école dans la colonne "Ecole" et en cliquant sur le bouton, la macro va chercher la fiche école remplie et met à jour les signets en fonction des données du tableau.

Mon problème est que les boutons « Remplir fiche » et « Mise à jour fiche » fonctionnent une fois sur deux occasionnant une « Erreur 642 ». Ce problème empêche l’utilisateur de créer ou de mettre à jour plusieurs fiches d’affilé.

Pensez-vous pourvoir m’aider ?

Si oui, modifiez dans les Modules 2 et 3, les adresses pour le fichier « Template » et pour situer la création des fiches.
Dans Microsoft Visual Basic > Outils > Références > j’ai coché « Visual Basic For Applications », « Microsoft Excel 11.0 Object Library », « OLE Automation », « Microsoft Office 11.0 Object Library » et « Microsoft Word 11.0 Object Library ».

Je précise qu’il aurait probablement été plus simple de le faire sous Access mais je ne peux pas l’utiliser. De plus, si vous voyez une autre manière de faire sous Excel, je suis preneur.

Merci par avance pour votre aide, je m’en remets à vous et à votre expertise.
 

Pièces jointes

  • Problème Excel.xls
    52 KB · Affichages: 139
  • Problème Excel.xls
    52 KB · Affichages: 148
  • Problème Excel.xls
    52 KB · Affichages: 150

julien91080

XLDnaute Occasionnel
Re : Macro Copier/Coller données Excel vers document Word avec Signets

Martial,

j'ai bien réussi à adapter à ma situation. Pour que l'outil soit opérationnel à 100%, il me reste une seule chose.
Dans le zip que tu as transmis, tu avais modifié les signets sur les fiches "École 1" et "École 2" de telle sorte à ce que lors des mises à jour, les signets ne disparaissent pas.

Le problème qui va se poser pour moi est que je n'aurai pas uniquement 2 fiches écoles mais au moins 500. Du coup, modifier manuellement les 500 sera fastidieux. C'est pourquoi, penses-tu qu'il existe un moyen pour que, durant la création de la fiche et de la répercution des données dans les signets, la macro mette entre "crochets" le nouveau mot?


Promis, après je ne vous embête plus.

Cordialement
 

Yaloo

XLDnaute Barbatruc
Re : Macro Copier/Coller données Excel vers document Word avec Signets

Re,

Tout dépend de ce que tu as en ta possession :

- Tes 500 fiches sont déjà créées ?
- Ta base avec tes 50 fiches est déjà créée ?

A te relire

Martial
 

julien91080

XLDnaute Occasionnel
Re : Macro Copier/Coller données Excel vers document Word avec Signets

Bonjour Martial,

En fait, j'ai les 2. Mais j'avais créé une macro pour créer toutes les fiches en "même temps" donc, pour l'instant, cela ne me dérange pas trop de relancer cette macro qui tourne pendant 10 min.
Mais l'idée est que les prochaines fiches créées soient au bon format, c'est-à-dire, comme tu l'avais fait pour les fiches "Ecole 1" et "Ecole 2" sans forcement changer les signets manuellement.

Voilà.

Cordilament
 

julien91080

XLDnaute Occasionnel
Re : Macro Copier/Coller données Excel vers document Word avec Signets

Re,

A la base, donc avant les améliorations que tu as apportées j'avais utilisé ça:


Sub Creerplusieursfiches()
Dim NomDoc As String, Chemin As String, oWord As Word.Application, oDoc As Word.Document
For i = 429 To 1500
Nom = Cells(i, 1)
NomDoc = Nom & ".doc"
If Cells(i, 1) = "" Then GoTo err1 'si la ligne ne contient ni nom ni prénom on quitte
Chemin = "T:\Formation\Développement emploi_Relations écoles\Fiches Ecoles\" & NomDoc 'à adapter
On Error Resume Next
Set oWord = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Set oWord = CreateObject("Word.Application")
End If
On Error GoTo 0
If Dir(Chemin) <> "" Then
Set oDoc = oWord.Documents.Open(Chemin)
Else
Set oDoc = oWord.Documents.Add
With oDoc
With .Sections(1).Headers(wdHeaderFooterPrimary).Range 'ajout d'un en-tête contenant le nom
.Font.Bold = True 'en gras
.Font.Italic = True 'en italique
.Text = "Fiche de " & Nom


End With
.SaveAs Chemin
.Close

End With
End If
oWord.Visible = False
'oWord.Activate

err1:

Next
End Sub

Et à la base j'utilisais le fichier Word Template.doc ci-joint.

Cordialement
 

Pièces jointes

  • Template.zip
    6.5 KB · Affichages: 35
  • Template.zip
    6.5 KB · Affichages: 35
  • Template.zip
    6.5 KB · Affichages: 36

julien91080

XLDnaute Occasionnel
Re : Macro Copier/Coller données Excel vers document Word avec Signets

Petite précision,

La macro ci-dessus me permets juste de créer et d'enregistrer X documents Word en fonction du nom de l'école.
Après j'ai utilisé X fois les macros suivantes qui maintenant sont obsolètes



Sub exportDonneesDansSignetsWord2()
'nécéssite d'activer la référence Microsoft Word xx.x Object Library
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim i As Integer
Dim NomDoc As String
Dim signet As Bookmark, LeMot As String
Dim deb As Integer, fin As Integer, Nom As String
Dim temp As Word.Application



Nom = Cells(ActiveCell.Row, 1)
NomDoc = Nom & ".doc"

Set WordApp = CreateObject("word.application")
Set WordDoc = WordApp.Documents.Open("C:\Documents and Settings\Prenom_N\Mes documents" & "\" & NomDoc) 'A Modifier

Set temp = CreateObject("word.application")
WordApp.Visible = True
temp.Visible = False
temp.Documents.Open Filename:="C:\Documents and Settings\Prenom_N\Mes documents\template.doc" 'A Modifier



Set WordDoc = WordApp.Documents.Open("C:\Documents and Settings\Prenom_N\Mes documents\" & "\" & NomDoc) 'A Modifier
temp.Selection.WholeStory
temp.Selection.Copy

WordDoc.ActiveWindow.ActivePane.Selection.PasteAndFormat (wdPasteDefault)


temp.Documents.Close
temp.Quit

Call appel2


WordApp.Visible = True
WordDoc.Close True
WordApp.Quit
End Sub

ub appel2()

Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim NomDoc As String
Dim signet As Bookmark, LeMot As String


Nom = Cells(ActiveCell.Row, 1)
NomDoc = Nom & ".doc"

Set WordDoc = Word.Documents.Open("C:\Documents and Settings\Prenom_N\Mes documents" & "\" & NomDoc) ' A Modifier

For i = 1 To 23
Set signet = ActiveDocument.Bookmarks("Signet" & i)
LeMot = Cells(ActiveCell.Row, i).Text
Remplacer signet, LeMot
Next i



End Sub

Sub Remplacer(signet As Bookmark, LeMot As String)
Dim deb As Integer, fin As Integer, Nom As String
deb = signet.Start
fin = signet.Start + Len(LeMot)

Nom = signet.Name
signet.Range.Text = LeMot
With ActiveDocument.Range(Start:=deb, End:=fin)
.Bookmarks.Add Name:=Nom
End With
End Sub


Cordialement
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Macro Copier/Coller données Excel vers document Word avec Signets

Re,

Voici tes fichiers, à mettre dans le même répertoire ou changer la macro en conséquence. Il y avait un problème lorsqu'une cellule était vide, donc j'ai mis un espace, cela conserve le signet et tu peux continuer à faire des mises à jour.

A te relire

Martial
 

Pièces jointes

  • Problème Excel.xls
    71 KB · Affichages: 59
  • template.doc
    53 KB · Affichages: 67
  • Problème Excel.xls
    71 KB · Affichages: 63
  • Problème Excel.xls
    71 KB · Affichages: 56

julien91080

XLDnaute Occasionnel
Re : Macro Copier/Coller données Excel vers document Word avec Signets

Martial,

A ce niveau c'est de l'art!! c'est génial.
Par curiosité, penses-tu que cette macro puisse créer aussi X dossiers intitulés le nom de l'école et enregistrer les fiches dans le dossier correspondant comme tu l'as fais pour la macro du module "Consult"?

Un grand merci :)

Cordialement
 

julien91080

XLDnaute Occasionnel
Re : Macro Copier/Coller données Excel vers document Word avec Signets

C'est bon, j'ai réussis.

Voici le code pour ceux qui aimeraient le refaire:



Option Explicit
Sub CréationFicheBase()
'nécéssite d'activer la référence Microsoft Word xx.x Object Library
Dim WordApp As Word.Application, WordDoc As Word.Document
Dim i&, j&, pos&, NomDoc$, Chemin$, s As Object



For j = 3 To [A65536].End(xlUp).Row
Chemin = "T:\Formation\Développement emploi_Relations écoles\Relations écoles\" & Cells(j, 1)

If Dir(Chemin, vbDirectory) = "" Then MkDir Chemin
Application.ScreenUpdating = 0
Set WordApp = CreateObject("word.application")
On Error Resume Next

NomDoc = ThisWorkbook.Path & "\" & Cells(j, 1) & ".doc"
NomDoc = "T:\Formation\Développement emploi_Relations écoles\Relations écoles\" & Cells(j, 1) & "\" & Cells(j, 1) & ".doc"
Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\" & "Template.doc") 'A Modifier
WordDoc.SaveAs NomDoc

For i = 1 To 23
Set s = WordDoc.Bookmarks("Signet" & i)
If s Is Nothing Then GoTo Suite
WordDoc.Activate
s.Select
WordApp.Options.ReplaceSelection = True
If Cells(j, i) <> "" Then
WordApp.Selection.TypeText Cells(j, i)
pos = WordApp.Selection.Range.End
Set s = WordDoc.Range(pos - Len(Cells(j, i)), pos)
Else
WordApp.Selection.TypeText " "
pos = WordApp.Selection.Range.End
Set s = WordDoc.Range(pos - 1, pos)
End If
WordDoc.Bookmarks.Add "Signet" & i, s
On Error GoTo 0
Suite:
Next i
WordDoc.Close True
Next j
WordApp.Quit
Beep
Application.ScreenUpdating = -1
End Sub





Encore merci. je peux partir l'esprit tranquil.


Cordialement,


Julien
 

julien91080

XLDnaute Occasionnel
Re : Macro Copier/Coller données Excel vers document Word avec Signets

J'ai été un peu vite, le voici:

Option Explicit
Sub CréationFicheBase()
'nécéssite d'activer la référence Microsoft Word xx.x Object Library
Dim WordApp As Word.Application, WordDoc As Word.Document
Dim i&, j&, pos&, NomDoc$, Chemin$, s As Object



For j = 3 To [A65536].End(xlUp).Row
Chemin = "T:\Formation\Développement emploi_Relations écoles\Relations écoles\" & Cells(j, 1)

If Dir(Chemin, vbDirectory) = "" Then MkDir Chemin
Application.ScreenUpdating = 0
Set WordApp = CreateObject("word.application")
On Error Resume Next

NomDoc = ThisWorkbook.Path & "\" & Cells(j, 1) & ".doc"
NomDoc = "T:\Formation\Développement emploi_Relations écoles\Relations écoles\" & Cells(j, 1) & "\" & Cells(j, 1) & ".doc"
Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\" & "Template.doc") 'A Modifier
WordDoc.SaveAs NomDoc

For i = 1 To 23
Set s = WordDoc.Bookmarks("Signet" & i)
If s Is Nothing Then GoTo Suite
WordDoc.Activate
s.Select
WordApp.Options.ReplaceSelection = True
If Cells(j, i) <> "" Then
WordApp.Selection.TypeText Cells(j, i)
pos = WordApp.Selection.Range.End
Set s = WordDoc.Range(pos - Len(Cells(j, i)), pos)
Else
WordApp.Selection.TypeText " "
pos = WordApp.Selection.Range.End
Set s = WordDoc.Range(pos - 1, pos)
End If
WordDoc.Bookmarks.Add "Signet" & i, s
On Error GoTo 0
Suite:
Next i
WordDoc.Close True
Next j
WordApp.Quit
Beep
Application.ScreenUpdating = -1
End Sub


Cordialement

Julien
 

smallville

XLDnaute Nouveau
Re : Macro Copier/Coller données Excel vers document Word avec Signets

Bonjour julien91080 et Yaloo,
J'ai un problème du même genre (copie de ligne sous condition depuis excel et collage dans word sur des signets avec lien entre les deux pour faire des mises-à-jours automatique),

Est-ce que une solution avais été trouvé ?

si vous vous en souvenez encore merci de nous la faire partager.;)
à bientot j'espère.:D
 

Discussions similaires

Réponses
25
Affichages
1 K

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin