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

Yaloo

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

Re,

Donc une fois que tu as créé le sous-répertoire il faut enregistrer ton document.

Quelque chose comme ça (attention pas testé) :

VB:
chemin = "T:\Formation\Développement emploi_Relations écoles\Relations écoles\" & nom & "\"
If Dir(chemin, vbDirectory) = "" Then MkDir chemin
ActiveDocument.Save NomDoc

A+

Martial

PS : Si ça ne marche pas, mets un petit bout de fichier.
 

julien91080

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

Bonjour Martial,

Effectivement cela ne marche pas:

Dim NomDoc As String, Chemin As String
Nom = Cells(ActiveCell.Row, 1)
NomDoc = Nom & ".doc"

If Len(Nom) = 1 Then Exit Sub
Chemin = "T:\Formation\Développement emploi_Relations écoles\Relations écoles\" & Nom & "\"
If Dir(Chemin, vbDirectory) = "" Then MkDir Chemin
ActiveDocument.Save NomDoc


'Déplacer le fichier "Template" dans "Mes documents" et remplacer l'adresse entre guillemets ci-dessous
Chemin = ThisWorkbook.Path & "\" & NomDoc
'à adapter ici répertoire courant

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.Open(ThisWorkbook.Path & "\template.doc")
With oDoc
For i = 1 To 23 'valeurs des cellules 1 à 23
.Bookmarks("Signet" & i).Range = Feuil1.Cells(ActiveCell.Row, i)
Next
End With

oDoc.SaveAs Chemin

End If
'oWord.Visible = True

End Sub


Désolé que cela te prenne autant de temps mais merci à toi ;).

Cordialement
 

Yaloo

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

Bonsoir Julien,

Désolé, je suis perdu, pourrais-tu m'indiquer exactement ce que tu veux faire ?

Il doit s'agir de la macro : Consulter3

Dans la macro dans ton post précédent, tu mets le bout de code en début de macro, pourquoi ? Tu veux enregistrer un fichier Excel ou Word, si c'est Word (ce que je comprends) il faut le mettre après l'ouverture de ton instance Word.

A te relire

Martial
 

julien91080

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

oui il s'agit bien de la macro Consulter 3 que j'avais affiché à la page 2 du forum.

L'idée de cette macro est de sélectionner le nom d'une école, de cliquer sur le bouton de la macro:
- La macro va chercher dans "T:\Formation\Développement emploi_Relations écoles\Relations écoles\" & Nom & "\" & NomDoc" si une fiche école existe et l'affiche (ce qui nécessite que le dossier intitulé HEC par exemple existe déjà)
- Sinon elle créée un Word et impacte le Template et le sauvegarde dans "T:\Formation\Développement emploi_Relations écoles\Relations écoles\" & HEC & "\" & HEC.doc"

Après si tu est capable de dire: si le dossier HEC n'existe pas, alors la macro créée le dossier HEC dans "T:\Formation\Développement emploi_Relations écoles\Relations écoles" et y créer le Word HEC.doc dedans je suis preneur.

J'espère que c'est plus clair pour toi.
 

Yaloo

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

Bonjour Julien,

Voici ton fichier, avec une fonction de Jacques Boisgontier, tu peux savoir si le fichier existe, voir fichier ci-dessous.

A te relire

Martial

PS : Ne pas oublier de changer le répertoire.
 

Pièces jointes

  • Problème Excel.xls
    56.5 KB · Affichages: 66
  • Problème Excel.xls
    56.5 KB · Affichages: 61
  • Problème Excel.xls
    56.5 KB · Affichages: 62

julien91080

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

Martial, c'est génial!!

Maintenant j'ai juste besoin qu'une autre macro qui mette à jour les données de la fiche école.
Par exemple, le contact de la ligne G4 a changé, la macro irait chercher la fiche école correspondante (en sélectionnant le nom de l'école et en appuyant sur un bouton) et irait écraser toute les données présentes. Encore une fois, je ne peux pas supprimer le word pour en recréer un car il y a des informations (commentaire et historique) qui sont saisissables uniquement sur le word.
Merci déjà pour ce que tu as faits.

Cordialement;

Julien
 

julien91080

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

Bonjour Martial,

Je vais refaire les tests pour m'en assurer mais au vu des postes qui suivent le poste il me semble que les données venaient s'incrémenter à la suite des anciennes sur le Word. L'idéal pour moi serait que la macro écrase les anciennes données du Word.

Je reviens vers toi.

Cordialement,

Julien
 

julien91080

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

Martial,

Voici le code que j'ai trafiqué au vu des évolutions qu'on a apportées depuis;
Option Explicit

Sub InsererTexte()
Dim appWord As Word.Application
Dim monDocument As Word.Document
Dim NomDoc$, i&, Nom$, Chemin$
Nom = Cells(ActiveCell.Row, 1)
Chemin = "T:\Formation\Développement emploi_Relations écoles\Relations écoles\" & Nom
NomDoc = Cells(ActiveCell.Row, 1) & ".doc"

Set appWord = CreateObject("Word.Application")
Set monDocument = appWord.Documents.Open(Chemin & "\" & NomDoc)
appWord.Visible = True
For i = 2 To 23
RemplirSignet "signet" & i, Feuil1.Cells(ActiveCell.Row, i)
Next
monDocument.Close True
appWord.Quit
Set appWord = Nothing
Set monDocument = Nothing

End Sub
Public Sub RemplirSignet(S As String, T As String)
' Remplit le signet S avec le texte T sans détruire S
On Error GoTo rien
Dim Place As Long
Place = ActiveDocument.Bookmarks(S).Range.Start
ActiveDocument.Bookmarks(S).Range.Text = T
ActiveDocument.Bookmarks.Add Name:=S, Range:=ActiveDocument.Range(Place, Place + Len(T))
rien:
End Sub

Le problème est que la fiche école ne se met pas à jour...

Me serais-je trompé?

Cordialement,

Julien
 

Yaloo

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

Bonsoir Julien,

PS : ATTENTION, j'ai modifié le type de signet.

Dans mon message du post#11 j'avais mis cette petite phrase, et oui, toute petite mais qui a son importance.

Il faut que ton signet soit entre crochet, actuellement tu as ][ (très proche) pour signaler ton signet, il faut que tu ais [ton signet].

Pour se faire, il faut sélectionner tout le texte du signet puis faire "Signet" dans le ruban (normalement cela se positionne directement sur ton signet) puis cliquer sur "Ajouter". Il faut faire ça sur tous les signets 1 par 1. Voir mon fichier Word du post#11.

A+

Martial
 

julien91080

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

Martial,

Je comprends le principe. Cependant, cela marche une seule fois ou alors il faut fermer excel, le réouvrir pour mettre à jour une autre fiche. Y a-t-il un moyen pour pouvoir le faire plusieurs fois?

Cordialement,
 

Discussions similaires

Réponses
25
Affichages
1 K