Coller contenu cellules excel dans endroit précis d'un fichier .doc

tony020422

XLDnaute Junior
Bonjour tout le monde, :p

je ss actuellement en train de finir de développer ma macro excel en VB et j'ai besoin de vous pr finir ca nikel......

je ne sais pas comment faire pour que ma macro copie le contenu de certaines cellules excel de mon fichier "Création de dossiers.xls" vers mon fichier .doc intitulé "demande de ligne EDF"...

J'ai déjà fait des choses dans ce genre mais ici le fichier .doc n'est pas protégé en écriture ou quoi que ce soit, et il faut arriver a coller le contenu des cellules excel a des endroits "précis" de mon .doc (par exemple aprés la ou serait écrit: expéditeur: à destination de: ...)

et c'est la le souci....comment faire pr se placer dans un endroit particulier d'un fichier .doc ?!


Merci a tous par avance pour votre aide ! :D
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : Coller contenu cellules excel dans endroit précis d'un fichier .doc

bonjour tony020422,

regarde du coté du "Publipostage" dans Word, tu trouvera peut-être quelque chose sans macro ;).
sinon, je t'envoie un zip qui contient un fichier excel qui crée une lettre à partir d'un modèle (contenu dans le zip) pour chaque personne saisie dans la feuille excel (du publipostage).

c'est pas tout a fait ce que tu veux, mais tu trouveras peut-être la solution à ton PB.

PS: le code est commenté.

a+
 

Pièces jointes

  • test Publipostage.zip
    20.2 KB · Affichages: 119
  • test Publipostage.zip
    20.2 KB · Affichages: 118
  • test Publipostage.zip
    20.2 KB · Affichages: 123

tony020422

XLDnaute Junior
Re : Coller contenu cellules excel dans endroit précis d'un fichier .doc

Salut MRomain encore la pr me donner un coup de main, merci !!

je ne connais pas du tt l'existence et donc le fonctionnement du publipostage mais ca a l'air d'etre vraiement sympa!!

j'ai regardé le code tapé dans le module 1 et le ThisWorkBook de ton testPublipostage et le résultat est génial !!

par contre il y a t il qq chose a faire au niveau du word ?! (script, ou quoi que ce soit?!)

Merci encore, c'est génial ce publiopostage !!
 

mromain

XLDnaute Barbatruc
Re : Coller contenu cellules excel dans endroit précis d'un fichier .doc

re,

le "publipostage" à proprement parler est une fonction de Word, ça fait exactement la même chose (remplir une lettre en précisant certains champs à partir d'une BDD/feuille Excel) mais sans macro.
sinon, dans le fichier zip de mon post précédent, il y a un modèle de document Word (.dot) qui représente le modèle de la lettre.
Il faudra donc que tu t'en fasses un perso. (depuis Word: enristrer sous --> type de fichier=modèle de document) et dans ce modèle, tu vas insérer des "signets" (la procédure est décrite en commentaires dans la macro Excel) qui permettrons de retrouver un emplacement (ou une sélection) dans le fichier Word.

a+
 

tony020422

XLDnaute Junior
Re : Coller contenu cellules excel dans endroit précis d'un fichier .doc

alors mromain je ss un peu perdu entre tt mais voila ca:

Cijoint.fr - Service gratuit de dépôt de fichiers

mon modele (je l'ai depuis crée en .dot)


et mon excel:

Cijoint.fr - Service gratuit de dépôt de fichiers

je viens de rajouter sur mon excel une case a cocher....je ne sais pas commment faire mais il faudrait qu'elle permette SI ELLE EST COCHEE de lancer le publipostage..et si elle demeure non cochée de ne rien faire....
 

tony020422

XLDnaute Junior
Re : Coller contenu cellules excel dans endroit précis d'un fichier .doc

alors romain deja merci pour tout vraiment!!

le model est ok....

voici le fichier excel modifié avec le code qui va bien (code écrit aprés
'!!!!!!!!!!!EXEMPLE PUBLIPOSTAGE:::::::::::::: ) mais ca ne marche pas pr l'instant...



peut etre parce qu'il faut que je me décale pas en terme de colonne mais en terme de ligne depuis Curcell...et que j'ai tenté

apWord.Selection.Goto What:=-1, Name:="Adresse Client"
'curCell décalé de 6 lignes
apWord.Selection.TypeText curCell.Offset(6, 0).Value


tu as donc le .dot et le .xls....

juste un truc aussi:
le .dot se trouvera comme référence tjs stocké ici par défaut;
Y:\TKAF\R04\A422\_Commun-Agence\Evelyne-carine\Dossier MOD\ISO + Doc type

et mon .doc devra se stocker finalement dans le fichier que je crée au début de mon script (regardes bien!)
si tu peux m'éclaircir tt ca car doucement doucement je me noies.......
 
Dernière édition:

tony020422

XLDnaute Junior
Re : Coller contenu cellules excel dans endroit précis d'un fichier .doc

j'ai modifié ton script et mis ca comme commande pr ouvrir mon .dot mais ca ne fonctionne pas:

Dim apWord, docWord, curCell As Range


Set apWord = CreateObject("word.application")
Set curCell = ThisWorkbook.Sheets("Feuil1").Range("C11")
While curCell.Value <> vbNullString
Set docWord = apWord.Documents.Add("Y:\TKAF\R04\A422\_Commun-Agence\Evelyne-carine\Dossier MOD\ISO + Doc type\modele lettre FT.dot)

tu saurais pourquoi ?!
 

mromain

XLDnaute Barbatruc
Re : Coller contenu cellules excel dans endroit précis d'un fichier .doc

re,

essaye avec ce code (il y avait des erreur dans les noms de signet).
Code:
' !!!!!!!!!!!!!!!!!!!!!!!EXEMPLE PUBLIPOSTAGE !!!!!!!!!!!!!!!!!!!!!!!!!!

Dim apWord, docWord, chemin
chemin = ThisWorkbook.Path & "\"

'créer une application Word
Set apWord = CreateObject("word.application")

'créer un nouveau document à partir du modèle "modele\invitation.dot"
'PS: - le fichier "invitation.dot" est créé avec des Signets (appelés plus tard dans la macro)
'      ils renvoient à un emplacement ou une sélection de texte
'      dans cet exemple, ils renvoient aux diférents textes entre <>
'    - pour créer un signet dans word, Insertion --> Signet
Set docWord = apWord.Documents.Add(Template:=chemin & "modele lettre FT.dot")
    
'aller au signet "date" dans le doc Word
apWord.Selection.Goto What:=-1, Name:="DateJour"
'y écrire la date d'aujourd'hui formatée
apWord.Selection.TypeText Format(Now, "dd/mm/yyyy")

'aller au signet "NomChantier" dans le doc Word
apWord.Selection.Goto What:=-1, Name:="NomChantier"
'y écrire la valeur de C11
apWord.Selection.TypeText ThisWorkbook.Sheets("Feuil1").Range("C11").Value

apWord.Selection.Goto What:=-1, Name:="NomClient"
apWord.Selection.TypeText ThisWorkbook.Sheets("Feuil1").Range("C15").Value


apWord.Selection.Goto What:=-1, Name:="AdresseClient"
apWord.Selection.TypeText ThisWorkbook.Sheets("Feuil1").Range("C17").Value


'sauver le fichier Word (en lui donnant le nom souhaité
docWord.SaveAs Filename:=chemin & "Plannification +Dde ligne EDF - " & ThisWorkbook.Sheets("Feuil1").Range("C11").Value & ".doc"
'fermet le document Word
docWord.Close


'fermer l'application Word
apWord.Quit

'détruire les objets
Set apWord = Nothing: Set docWord = Nothing: Set curCell = Nothing
il reste à modifier le chemin du .dot et l'enregistrement du fichier word.

a+
 

tony020422

XLDnaute Junior
Re : Coller contenu cellules excel dans endroit précis d'un fichier .doc

je comprends pas j'ai mis exactement ca comme code mais rien ne se passe !!

Code:
Dim apWord, docWord, curCell As Range, chemin
chemin = "Y:\TKAF\R04\A422\_Commun-Agence\Evelyne-carine\Dossier MOD\ISO + Doc type\"
'créer une application Word
Set apWord = CreateObject("word.application")

'curCell = première entrée (C11)
Set curCell = ThisWorkbook.Sheets("Feuil1").Range("C11")

'tant que quelque chose est écrit dans curCell
While curCell.Value <> vbNullString
    
    'créer un nouveau document à partir du modèle "modele\invitation.dot"
    'PS: - le fichier "invitation.dot" est créé avec des Signets (appelés plus tard dans la macro)
    '      ils renvoient à un emplacement ou une sélection de texte
    '      dans cet exemple, ils renvoient aux diférents textes entre <>
    '    - pour créer un signet dans word, Insertion --> Signet
    Set docWord = apWord.Documents.Add(Template:=chemin & "modele lettre FT.dot")
    
   'aller au signet "date" dans le doc Word
apWord.Selection.Goto What:=-1, Name:="DateJour"
'y écrire la date d'aujourd'hui formatée
apWord.Selection.TypeText Format(Now, "dd/mm/yyyy")

'aller au signet "NomChantier" dans le doc Word
apWord.Selection.Goto What:=-1, Name:="NomChantier"
'y écrire la valeur de C11
apWord.Selection.TypeText ThisWorkbook.Sheets("Feuil1").Range("C11").Value

apWord.Selection.Goto What:=-1, Name:="NomClient"
apWord.Selection.TypeText ThisWorkbook.Sheets("Feuil1").Range("C15").Value


apWord.Selection.Goto What:=-1, Name:="AdresseClient"
apWord.Selection.TypeText ThisWorkbook.Sheets("Feuil1").Range("C17").Value
    
   
    'sauver le fichier Word (en lui donnant le nom souhaité
    docWord.ChangeFileOpenDirectory (MonRep)
    docWord.SaveAs Filename:="Plannification +Dde ligne EDF - " & curCell.Value & ".doc"
    'fermet le document Word
    docWord.Close
    
    'décaler curCell d'une cellule vers le bas
    Set curCell = curCell.Offset(1, 0)
Wend

'fermer l'application Word
apWord.Quit

'détruire les objets
Set apWord = Nothing: Set docWord = Nothing: Set curCell = Nothing
Windows.Application.Quit

End Sub
 

tony020422

XLDnaute Junior
Re : Coller contenu cellules excel dans endroit précis d'un fichier .doc

a ben oui c'est pas faux !! chez moi tout fonctionne le dossier se crée bien les 5 fiches ISO se remplissent correctement et s'enregistrent au bon endroit (dans ce meme dossier)
juste que la il en semble pas trouver le .dot ici
chemin = "Y:\TKAF\R04\A422\_Commun-Agence\Evelyne-carine\Dossier MOD\ISO + Doc type\

ou alors le script ne s'exécute pas....

je comrprends pas trop....sinon il n'y a pas d'erreur dans mon script ?!

bon appétit,a tout a l'heure !
 

tony020422

XLDnaute Junior
Re : Coller contenu cellules excel dans endroit précis d'un fichier .doc

Re romain, je suis de retour et je n'ai toujours pas trouvé d'explication au fait que mon script ne marche pas.....il doit y avoir un pb au niveau de l'ouverture du .dot ou alors lors de l'utilisation des signets ou alors lors de l'enregistrement.........
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 325
Membres
103 516
dernier inscrit
René Rivoli Monin