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, 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 Occasionnel
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 Occasionnel
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
 

julien91080

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

Bonjour Martial,

J'ai dans l'idée d'avoir un dossier "Relations Ecoles" qui comprendrait un dossier (intitulé le nom de l'école) et d'y avoir la fiche école créée plus d'autres documents comme le calendrier de la formation, le descriptif formation...

Du coup, avec cette formule, le "nom" désigne le nom du dossier où la macro doit enregistrer la fiche et "Nomdoc" désigne le nom du fichier et le .doc.

Le problème c'est que cela ne marche pas avec ta macro :(.

Cordialement,

Julien
 

julien91080

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

Eh bien j'ai recensé plus de 1000 écoles donc si on additionne les autres documents (planning, descriptive formation) le répertoire sera complètement saturé. Mon manager veut pouvoir y avoir accès aux fiches (et aux autres documents relatifs à l'école) avec ou sans la base.

En réalité, ma macro de base de mon fichier excel permettait de créer une fiche vierge. Dans mon exemple, si le dossier HEC existe alors il crée dans ce dossier la fiche HEC.doc sinon une pop up m'avertit qu'il faut créer ce dossier. En revanche, si la fiche existe bien, la macro va chercher dans le bon dossier la fiche et me l'affiche.
 

Yaloo

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

Désolé Julien, je n'avais pas vu

et d'y avoir la fiche école créée plus d'autres documents comme le calendrier de la formation, le descriptif formation...

Il faut créer le répertoire école pour que ça fonctionne.

Tu dois pouvoir utiliser ça :

VB:
Répertoire =  ThisWorkbook.Path & "\" & nom & "\"
If Dir(Répertoire, vbDirectory) = "" Then MkDir Répertoire

S'il ne trouve pas le répertoire alors il le créé.

A+

Martial

Edit : Oups !!! on s'est croisé
 

julien91080

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

Aucun soucis Martial ^^

Dois-je mettre ton code après
chemin = "T:\Formation\Développement emploi_Relations écoles\Relations écoles\" & nom & "\" & NomDoc

?


Merci à toi

Cordialement,

Julien
 

Yaloo

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

VB:
Répertoire =  "T:\Formation\Développement emploi_Relations écoles\Relations écoles\" & nom & "\"
If Dir(Répertoire, vbDirectory) = "" Then MkDir Répertoire

Comme ça, ce sera mieux.

A+
 

julien91080

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

Bonjour à tous, boujour Martial,

En collant ton code après "chemin = "T:\Formation\Développement emploi_Relations écoles\Relations écoles\" & nom & "\" & NomDoc" cela ne marche pas...
Si j'ai bien compris ton code, si le dossier de l'école n'existe pas alors il est créé?

Merci et à bientôt
 

Yaloo

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

Bonjour Julien,

Tu as bien changé le mot "Répertoire" par "chemin" :confused:

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

Attention, tu mets le nom de l'école "Nom" puis le "NomDoc", il ne faut pas le nom du document.

Si tu veux créer 2 sous-répertoire il faut le faire en 2 fois, créer le sous-répertoire de l'école et ensuite créer le sous-répertoire du nom doc.

A+

Martial
 

Discussions similaires

Réponses
25
Affichages
1 K

Statistiques des forums

Discussions
312 083
Messages
2 085 183
Membres
102 808
dernier inscrit
guo