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

julien91080

XLDnaute Junior
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.
 

Fichiers joints

Yaloo

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

Bonsoir à tous,

Oh il est un peu taquin Job aujourd'hui ;).

Oui c'est possible, mais il serait bien d'y aller petit à petit, car comme tu as déjà commencé les macros, il faut prendre en cours de route.

Je vais y regarder, mais pas tout de suite.

Martial
 

Yaloo

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

Re,

Voici le premier point traité dans le fichier ci-joint, me dire si c'est OK ensuite on continuera.

A te relire

Martial
 

Fichiers joints

Dernière édition:

julien91080

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

Merci à vous deux. Je test pour voir et je reviens vers vous ;)
 

julien91080

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

Martial, la macro que tu as modifiée fonctionne bien chez moi, je t'en remercie.
Donc c'est OK pour cette partie. Il me faut maintenant la possibilité de mettre à jour ces fiches via un boutton.

A bientôt
 

Yaloo

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

Bonjour Julien,

Pour la mise à jour, plutôt que de modifier ta fiche, moi je l'écraserai.

Tu testes si ta fiche existe, tu en crée une nouvelle puis tu l'enregistres sur l'autre ou alors tu supprimes l'existante puis tu en crée une nouvelle.

A+

Martial
 

julien91080

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

Bonjour Martial,

Le problème est que dans mon template, j'ai prévu une partie "Commentaires" et une autre "Historique des contacts" qui sont remplis indépendamment du fichier Excel par les utilisateurs. Donc il ne faut pas écraser ou supprimer la fiche sinon les informations seront perdues.
Sinon l'idée est bonne je la garde sous le coude ;)


A+
 

Yaloo

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

Bonsoir Julien, le forum,

Voici une version qui va dans la bonne voie mais n'ai pas complètement concluante.

Lorsque tu cliques sur le bouton "Mise à jour" ça fait bien le travail demandé, mais si tu cliques une seconde fois (sur la même ligne ou pas) les signets ne sont pas modifiés.

Voici quand même les fichiers : l'un Excel, l'autre Word.

A+

Martial

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

Fichiers joints

julien91080

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

Bonjour Martial, le forum,

1000 excuses pour mon retour tardif, mais les congés...
Du coup, je traite quelques urgences et je teste ta version.

À bientôt
 

julien91080

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

Re Martial,

Chez moi, la macro ne fonctionne pas (erreur de compilation, Type défini par l'utilisateur non défini)...

faut-il que j'active quelque chose de particulier dans référence?

Merci déjà pour tout le travail fourni :)
 

Yaloo

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

Bonjour Julien,

Chez moi, ça fonctionne correctement enfin pour la première "Mise à Jour".

Je n'ai rien changé au niveau des références.

Essaies de passer en modifiant tes lignes de déclarations de variable comme ci-dessous. Pendant un temps chez moi, ça plantait et j'étais obligé de passer comme ça.

VB:
Sub InsererTexte()
Dim appWord As Object 'Word.Application
Dim monDocument As Object 'Word.Document
Dim NomDoc$, i&
A+

Martial
 

julien91080

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

Martial,

Maintenant c'est la deuxième partie du code qui bug:

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

D'autre part, ma macro de base écrasait bien les données compris dans les signets (fonctionnalité que j'aimerais concerver si possible).

Je continue de travailler dessus.

Cordialement,

Julien
 

Yaloo

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

Désolé je n'arrive pas à reproduire ton problème donc difficile de le résoudre, si quelqu'un passe par là et a le même problème ....
 

julien91080

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

Martial, le forum,

Quelque précision concernant ce dernier bug:

Une pop up s'affiche disant "Erreur de compilation Variable non définie" en surlignant "ActiveDocument". L'aide d'Excel me dit qu'il faut déclarer toute les variables lorsque l'on utilise "Option Explicite". Faut-il déclarer ActiveDocument?

Sinon Excel me surligne en jaune "Public Sub RemplirSignet(S As String, T As String)".

J'espère avoir été plus précis.

Cordilament,

Julien
 

julien91080

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

Bon, j'ai compris mon erreur,
Donc effectivement, la macro marche une fois. Cependant, cette macro vient incrémenter les signets, il remplace pas les informations précédentes.
Mais on avance :).

A bientôt
 

julien91080

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

bonjour à tous!

Pour revenir sur la première macro de Martial, à savoir:

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

If Len(nom) = 1 Then Exit Sub

Chemin = ThisWorkbook.Path & "\" & NomDoc

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

Si je veux que la Macro créer et enregistre la Fiche école dans un dossier spécifique, dois-je remplacer

Chemin = ThisWorkbook.Path & "\" & NomDoc

Par

chemin = "T:\Formation\Développement emploi_Relations écoles\Relations écoles\" & nom & "\" & NomDoc

qui sera à terme le véritable chemin?

Merci par avance.

Cordialement,

Julien
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas