Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
temps libre en ce moment. Sinon, Le plus simple serait de créer un
modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
n'y aurait plus qu'à remplir les cellules variables.
Penses-tu que ce soit possible ?
Daniel
> daniel,
> je t'envoi le fichier avec mon en tete actuelle
> http://cjoint.com/?lAo0jtJ2D5
>
> tu verras, j'ai mis des commentaires, pour peut etre faire des
> copier-coller, si c'est plus simple.
> Merci de ton aide précieuse.
> YANN
>
>
> "Daniel.C" a écrit :
>
>> Bon.
>> Les cellules fusionnées, c'est l'enfer !
>> D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
>> en faire un sacré paquet à mettre dans un entête, non. Il faut les
>> mettre sur combien de lignes. Si tu as des cellules fusionnées,
>> envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
>> sont. Je ne peux rien faire avant de l'avoir vu.
>> Daniel
>>
>>> salut daniel,
>>> ben, ça plante à
>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>> en me mettant sur i, i= 3
>>> je précise que la ligne 3 est fusionnée entre C et E, mais tout comme la
>>> ligne 2, 4 et 5.
>>> la ligne 1 est fusionnée de B à E.
>>> je ne sais pas si ça joue.
>>> YANN
>>>
>>>
>>> "Daniel.C" a écrit :
>>>
>>>> Regarde la macro ci-dessous.
>>>> Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
>>>> changes l'orientatiion de la page. Le dimensionnement se code au niveau
>>>> du tableau, pas au niveau de la colonne.
>>>>
>>>> Sub MacroWord()
>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>> 'Reference / Cocher "Microsoft Word xx.xx Library"
>>>> Dim NomDoc As String
>>>> 'Set wordobj = CreateObject("Word.Application")
>>>> Set wordobj = GetObject(, "Word.Application")
>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>> Set mydoc =
>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument)
>>>> wordobj.ActiveWindow.ActivePane.View.SeekView =
>>>> wdSeekCurrentPageHeader
>>>> mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
>>>> NumColumns:= _
>>>> 7, DefaultTableBehavior:=wdWord9TableBehavior,
>>>> AutoFitBehavior:= _
>>>> wdAutoFitWindow
>>>> With wordobj.Selection
>>>> For i = 1 To 7
>>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>>> If i < 7 Then .MoveRight Unit:=wdCell
>>>> Next i
>>>> .MoveLeft Unit:=wdCell, Count:=6
>>>> .Tables(1).Columns(1).PreferredWidthType =
>>>> wdPreferredWidthPoints
>>>> .Tables(1).Columns(1).PreferredWidth =
>>>> CentimetersToPoints(1.85)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(3.01)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(2.55)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(1.85)
>>>> End With
>>>> wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
>>>> If NomDoc <> "" Then
>>>> mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>> NomDoc
>>>> End If
>>>> wordobj.Visible = True
>>>> Set wordobj = Nothing
>>>> End Sub
>>>>
>>>> Daniel
>>>>
>>>>> oui c'est bien ça Daniel.
>>>>> pour les autres cellules, il faut qu'elle puisse se mettre à la taille
>>>>> automatiquement si jamais l'utilisateur met en mode paysage au lieu de
>>>>> portait (c'est à dire qu'elle se séparent en 3 l'espace disponible)..
>>>>> enfin si c'est possible bien sûr.
>>>>> Merci.
>>>>> YANN
>>>>>
>>>>> "Daniel.C" a écrit :
>>>>>
>>>>>> Juste une précision.
>>>>>> Pour la largeur des cellules d'entête sous Word, si je fais un prorata
>>>>>> des largeurs des cellules d'Excel que tu m'a fournies, avec les marges
>>>>>> standard gauche et droite de 2,5 cm, j'obtiens
>>>>>> - 1.85 cm
>>>>>> - 3.01 cm
>>>>>> - 2.55 cm
>>>>>> - 1.85 cm
>>>>>> respectivement pour les cellules A, B, F et G.
>>>>>> les largeurs des autres cellules étant à 2,32 cm
>>>>>> Peux-tu valider ceci ?
>>>>>> Daniel
>>>>>>
>>>>>>> Daniel,
>>>>>>> je préfère que ça se fasse sous Excel, oui.
>>>>>>> pour la bonne taille, je veux que les cellules du tableau occupent
>>>>>>> toute la largeur de la page. Cependant, certains critères :
>>>>>>> ** les dimensions dans Word de certaines colonnes devront être fixe
>>>>>>> colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
>>>>>>> ** les colonnes C, D et E, peut importe, en fait l'ajustement de la
>>>>>>> taille devra se faire sur ces 3 colonnes (la même taille peut être,
>>>>>>> pour plus de "beauté").
>>>>>>> ** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
>>>>>>> effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
>>>>>>> voici mon code actuel pour créer mon document Word :
>>>>>>> ---
>>>>>>> Sub MacroWord()
>>>>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>>>>> Reference / Cocher "Microsoft Word xx.xx Library"
>>>>>>> Dim NomDoc As String
>>>>>>> Set wordobj = CreateObject("Word.Application")
>>>>>>> 'Set wordobj = GetObject(, "Word.Application")
>>>>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>>>>> Set Mydoc =
>>>>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument) If NomDoc
>>>>>>> <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>>>>> NomDoc End If
>>>>>>> wordobj.Visible = True
>>>>>>> Set wordobj = Nothing
>>>>>>> End Sub
>>>>>>> ------
>>>>>>> Merci
>>>>>>> YANN
>>>>>>>
>>>>>>> "Daniel.C" a écrit :
>>>>>>>
>>>>>>>> Bonjour.
>>>>>>>> Ca peut se faire avec une macro Word, mais la logique voudrait que,
>>>>>>>> sauf impossibilité, tu inclues les instructions dans ta macro Excel.
>>>>>>>> Quand tu parles de "la bonne taille", tu veux dire que les cellules du
>>>>>>>> tableau doivent occuper toute la largeur de la page ou qu'elles
>>>>>>>> doivent s'ajuster au texte ?
>>>>>>>> Poste ton code, ça sera plus facile.
>>>>>>>> Cordialement.
>>>>>>>> Daniel
>>>>>>>>
>>>>>>>>> Bonjour,
>>>>>>>>> j'ai une macro de mon classeur Excel qui me crée un nouveau document
>>>>>>>>> WORD. Une fois créé, comment insérer un en-tête dans ce document Word
>>>>>>>>> ? Cet en-tete est en fait une zone qui est dans Excel : feuille
>>>>>>>>> "DCA", de A1 à G7.
>>>>>>>>> De plus, il faudrait que l'en-tête se mette à la bonne taille
>>>>>>>>> automatiquement. ça se fait depuis les macros Excel ou Word?
>>>>>>>>> je pose aussi ma question sur le forum Word, au cas où.
>>>>>>>>> Merci.
>>>>>>>>> YANN
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
temps libre en ce moment. Sinon, Le plus simple serait de créer un
modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
n'y aurait plus qu'à remplir les cellules variables.
Penses-tu que ce soit possible ?
Daniel
> daniel,
> je t'envoi le fichier avec mon en tete actuelle
> http://cjoint.com/?lAo0jtJ2D5
>
> tu verras, j'ai mis des commentaires, pour peut etre faire des
> copier-coller, si c'est plus simple.
> Merci de ton aide précieuse.
> YANN
>
>
> "Daniel.C" a écrit :
>
>> Bon.
>> Les cellules fusionnées, c'est l'enfer !
>> D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
>> en faire un sacré paquet à mettre dans un entête, non. Il faut les
>> mettre sur combien de lignes. Si tu as des cellules fusionnées,
>> envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
>> sont. Je ne peux rien faire avant de l'avoir vu.
>> Daniel
>>
>>> salut daniel,
>>> ben, ça plante à
>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>> en me mettant sur i, i= 3
>>> je précise que la ligne 3 est fusionnée entre C et E, mais tout comme la
>>> ligne 2, 4 et 5.
>>> la ligne 1 est fusionnée de B à E.
>>> je ne sais pas si ça joue.
>>> YANN
>>>
>>>
>>> "Daniel.C" a écrit :
>>>
>>>> Regarde la macro ci-dessous.
>>>> Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
>>>> changes l'orientatiion de la page. Le dimensionnement se code au niveau
>>>> du tableau, pas au niveau de la colonne.
>>>>
>>>> Sub MacroWord()
>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>> 'Reference / Cocher "Microsoft Word xx.xx Library"
>>>> Dim NomDoc As String
>>>> 'Set wordobj = CreateObject("Word.Application")
>>>> Set wordobj = GetObject(, "Word.Application")
>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>> Set mydoc =
>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument)
>>>> wordobj.ActiveWindow.ActivePane.View.SeekView =
>>>> wdSeekCurrentPageHeader
>>>> mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
>>>> NumColumns:= _
>>>> 7, DefaultTableBehavior:=wdWord9TableBehavior,
>>>> AutoFitBehavior:= _
>>>> wdAutoFitWindow
>>>> With wordobj.Selection
>>>> For i = 1 To 7
>>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>>> If i < 7 Then .MoveRight Unit:=wdCell
>>>> Next i
>>>> .MoveLeft Unit:=wdCell, Count:=6
>>>> .Tables(1).Columns(1).PreferredWidthType =
>>>> wdPreferredWidthPoints
>>>> .Tables(1).Columns(1).PreferredWidth =
>>>> CentimetersToPoints(1.85)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(3.01)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(2.55)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(1.85)
>>>> End With
>>>> wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
>>>> If NomDoc <> "" Then
>>>> mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>> NomDoc
>>>> End If
>>>> wordobj.Visible = True
>>>> Set wordobj = Nothing
>>>> End Sub
>>>>
>>>> Daniel
>>>>
>>>>> oui c'est bien ça Daniel.
>>>>> pour les autres cellules, il faut qu'elle puisse se mettre à la taille
>>>>> automatiquement si jamais l'utilisateur met en mode paysage au lieu de
>>>>> portait (c'est à dire qu'elle se séparent en 3 l'espace disponible)..
>>>>> enfin si c'est possible bien sûr.
>>>>> Merci.
>>>>> YANN
>>>>>
>>>>> "Daniel.C" a écrit :
>>>>>
>>>>>> Juste une précision.
>>>>>> Pour la largeur des cellules d'entête sous Word, si je fais un prorata
>>>>>> des largeurs des cellules d'Excel que tu m'a fournies, avec les marges
>>>>>> standard gauche et droite de 2,5 cm, j'obtiens
>>>>>> - 1.85 cm
>>>>>> - 3.01 cm
>>>>>> - 2.55 cm
>>>>>> - 1.85 cm
>>>>>> respectivement pour les cellules A, B, F et G.
>>>>>> les largeurs des autres cellules étant à 2,32 cm
>>>>>> Peux-tu valider ceci ?
>>>>>> Daniel
>>>>>>
>>>>>>> Daniel,
>>>>>>> je préfère que ça se fasse sous Excel, oui.
>>>>>>> pour la bonne taille, je veux que les cellules du tableau occupent
>>>>>>> toute la largeur de la page. Cependant, certains critères :
>>>>>>> ** les dimensions dans Word de certaines colonnes devront être fixe
>>>>>>> colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
>>>>>>> ** les colonnes C, D et E, peut importe, en fait l'ajustement de la
>>>>>>> taille devra se faire sur ces 3 colonnes (la même taille peut être,
>>>>>>> pour plus de "beauté").
>>>>>>> ** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
>>>>>>> effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
>>>>>>> voici mon code actuel pour créer mon document Word :
>>>>>>> ---
>>>>>>> Sub MacroWord()
>>>>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>>>>> Reference / Cocher "Microsoft Word xx.xx Library"
>>>>>>> Dim NomDoc As String
>>>>>>> Set wordobj = CreateObject("Word.Application")
>>>>>>> 'Set wordobj = GetObject(, "Word.Application")
>>>>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>>>>> Set Mydoc =
>>>>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument) If NomDoc
>>>>>>> <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>>>>> NomDoc End If
>>>>>>> wordobj.Visible = True
>>>>>>> Set wordobj = Nothing
>>>>>>> End Sub
>>>>>>> ------
>>>>>>> Merci
>>>>>>> YANN
>>>>>>>
>>>>>>> "Daniel.C" a écrit :
>>>>>>>
>>>>>>>> Bonjour.
>>>>>>>> Ca peut se faire avec une macro Word, mais la logique voudrait que,
>>>>>>>> sauf impossibilité, tu inclues les instructions dans ta macro Excel.
>>>>>>>> Quand tu parles de "la bonne taille", tu veux dire que les cellules du
>>>>>>>> tableau doivent occuper toute la largeur de la page ou qu'elles
>>>>>>>> doivent s'ajuster au texte ?
>>>>>>>> Poste ton code, ça sera plus facile.
>>>>>>>> Cordialement.
>>>>>>>> Daniel
>>>>>>>>
>>>>>>>>> Bonjour,
>>>>>>>>> j'ai une macro de mon classeur Excel qui me crée un nouveau document
>>>>>>>>> WORD. Une fois créé, comment insérer un en-tête dans ce document Word
>>>>>>>>> ? Cet en-tete est en fait une zone qui est dans Excel : feuille
>>>>>>>>> "DCA", de A1 à G7.
>>>>>>>>> De plus, il faudrait que l'en-tête se mette à la bonne taille
>>>>>>>>> automatiquement. ça se fait depuis les macros Excel ou Word?
>>>>>>>>> je pose aussi ma question sur le forum Word, au cas où.
>>>>>>>>> Merci.
>>>>>>>>> YANN
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
temps libre en ce moment. Sinon, Le plus simple serait de créer un
modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
n'y aurait plus qu'à remplir les cellules variables.
Penses-tu que ce soit possible ?
Daniel
> daniel,
> je t'envoi le fichier avec mon en tete actuelle
> http://cjoint.com/?lAo0jtJ2D5
>
> tu verras, j'ai mis des commentaires, pour peut etre faire des
> copier-coller, si c'est plus simple.
> Merci de ton aide précieuse.
> YANN
>
>
> "Daniel.C" a écrit :
>
>> Bon.
>> Les cellules fusionnées, c'est l'enfer !
>> D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
>> en faire un sacré paquet à mettre dans un entête, non. Il faut les
>> mettre sur combien de lignes. Si tu as des cellules fusionnées,
>> envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
>> sont. Je ne peux rien faire avant de l'avoir vu.
>> Daniel
>>
>>> salut daniel,
>>> ben, ça plante à
>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>> en me mettant sur i, i= 3
>>> je précise que la ligne 3 est fusionnée entre C et E, mais tout comme la
>>> ligne 2, 4 et 5.
>>> la ligne 1 est fusionnée de B à E.
>>> je ne sais pas si ça joue.
>>> YANN
>>>
>>>
>>> "Daniel.C" a écrit :
>>>
>>>> Regarde la macro ci-dessous.
>>>> Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
>>>> changes l'orientatiion de la page. Le dimensionnement se code au niveau
>>>> du tableau, pas au niveau de la colonne.
>>>>
>>>> Sub MacroWord()
>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>> 'Reference / Cocher "Microsoft Word xx.xx Library"
>>>> Dim NomDoc As String
>>>> 'Set wordobj = CreateObject("Word.Application")
>>>> Set wordobj = GetObject(, "Word.Application")
>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>> Set mydoc =
>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument)
>>>> wordobj.ActiveWindow.ActivePane.View.SeekView =
>>>> wdSeekCurrentPageHeader
>>>> mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
>>>> NumColumns:= _
>>>> 7, DefaultTableBehavior:=wdWord9TableBehavior,
>>>> AutoFitBehavior:= _
>>>> wdAutoFitWindow
>>>> With wordobj.Selection
>>>> For i = 1 To 7
>>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>>> If i < 7 Then .MoveRight Unit:=wdCell
>>>> Next i
>>>> .MoveLeft Unit:=wdCell, Count:=6
>>>> .Tables(1).Columns(1).PreferredWidthType =
>>>> wdPreferredWidthPoints
>>>> .Tables(1).Columns(1).PreferredWidth =
>>>> CentimetersToPoints(1.85)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(3.01)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(2.55)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(1.85)
>>>> End With
>>>> wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
>>>> If NomDoc <> "" Then
>>>> mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>> NomDoc
>>>> End If
>>>> wordobj.Visible = True
>>>> Set wordobj = Nothing
>>>> End Sub
>>>>
>>>> Daniel
>>>>
>>>>> oui c'est bien ça Daniel.
>>>>> pour les autres cellules, il faut qu'elle puisse se mettre à la taille
>>>>> automatiquement si jamais l'utilisateur met en mode paysage au lieu de
>>>>> portait (c'est à dire qu'elle se séparent en 3 l'espace disponible)..
>>>>> enfin si c'est possible bien sûr.
>>>>> Merci.
>>>>> YANN
>>>>>
>>>>> "Daniel.C" a écrit :
>>>>>
>>>>>> Juste une précision.
>>>>>> Pour la largeur des cellules d'entête sous Word, si je fais un prorata
>>>>>> des largeurs des cellules d'Excel que tu m'a fournies, avec les marges
>>>>>> standard gauche et droite de 2,5 cm, j'obtiens
>>>>>> - 1.85 cm
>>>>>> - 3.01 cm
>>>>>> - 2.55 cm
>>>>>> - 1.85 cm
>>>>>> respectivement pour les cellules A, B, F et G.
>>>>>> les largeurs des autres cellules étant à 2,32 cm
>>>>>> Peux-tu valider ceci ?
>>>>>> Daniel
>>>>>>
>>>>>>> Daniel,
>>>>>>> je préfère que ça se fasse sous Excel, oui.
>>>>>>> pour la bonne taille, je veux que les cellules du tableau occupent
>>>>>>> toute la largeur de la page. Cependant, certains critères :
>>>>>>> ** les dimensions dans Word de certaines colonnes devront être fixe
>>>>>>> colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
>>>>>>> ** les colonnes C, D et E, peut importe, en fait l'ajustement de la
>>>>>>> taille devra se faire sur ces 3 colonnes (la même taille peut être,
>>>>>>> pour plus de "beauté").
>>>>>>> ** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
>>>>>>> effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
>>>>>>> voici mon code actuel pour créer mon document Word :
>>>>>>> ---
>>>>>>> Sub MacroWord()
>>>>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>>>>> Reference / Cocher "Microsoft Word xx.xx Library"
>>>>>>> Dim NomDoc As String
>>>>>>> Set wordobj = CreateObject("Word.Application")
>>>>>>> 'Set wordobj = GetObject(, "Word.Application")
>>>>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>>>>> Set Mydoc =
>>>>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument) If NomDoc
>>>>>>> <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>>>>> NomDoc End If
>>>>>>> wordobj.Visible = True
>>>>>>> Set wordobj = Nothing
>>>>>>> End Sub
>>>>>>> ------
>>>>>>> Merci
>>>>>>> YANN
>>>>>>>
>>>>>>> "Daniel.C" a écrit :
>>>>>>>
>>>>>>>> Bonjour.
>>>>>>>> Ca peut se faire avec une macro Word, mais la logique voudrait que,
>>>>>>>> sauf impossibilité, tu inclues les instructions dans ta macro Excel.
>>>>>>>> Quand tu parles de "la bonne taille", tu veux dire que les cellules du
>>>>>>>> tableau doivent occuper toute la largeur de la page ou qu'elles
>>>>>>>> doivent s'ajuster au texte ?
>>>>>>>> Poste ton code, ça sera plus facile.
>>>>>>>> Cordialement.
>>>>>>>> Daniel
>>>>>>>>
>>>>>>>>> Bonjour,
>>>>>>>>> j'ai une macro de mon classeur Excel qui me crée un nouveau document
>>>>>>>>> WORD. Une fois créé, comment insérer un en-tête dans ce document Word
>>>>>>>>> ? Cet en-tete est en fait une zone qui est dans Excel : feuille
>>>>>>>>> "DCA", de A1 à G7.
>>>>>>>>> De plus, il faudrait que l'en-tête se mette à la bonne taille
>>>>>>>>> automatiquement. ça se fait depuis les macros Excel ou Word?
>>>>>>>>> je pose aussi ma question sur le forum Word, au cas où.
>>>>>>>>> Merci.
>>>>>>>>> YANN
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
temps libre en ce moment. Sinon, Le plus simple serait de créer un
modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
n'y aurait plus qu'à remplir les cellules variables.
Penses-tu que ce soit possible ?
Daniel
> daniel,
> je t'envoi le fichier avec mon en tete actuelle
> http://cjoint.com/?lAo0jtJ2D5
>
> tu verras, j'ai mis des commentaires, pour peut etre faire des
> copier-coller, si c'est plus simple.
> Merci de ton aide précieuse.
> YANN
>
>
> "Daniel.C" a écrit :
>
>> Bon.
>> Les cellules fusionnées, c'est l'enfer !
>> D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
>> en faire un sacré paquet à mettre dans un entête, non. Il faut les
>> mettre sur combien de lignes. Si tu as des cellules fusionnées,
>> envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
>> sont. Je ne peux rien faire avant de l'avoir vu.
>> Daniel
>>
>>> salut daniel,
>>> ben, ça plante à
>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>> en me mettant sur i, i= 3
>>> je précise que la ligne 3 est fusionnée entre C et E, mais tout comme la
>>> ligne 2, 4 et 5.
>>> la ligne 1 est fusionnée de B à E.
>>> je ne sais pas si ça joue.
>>> YANN
>>>
>>>
>>> "Daniel.C" a écrit :
>>>
>>>> Regarde la macro ci-dessous.
>>>> Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
>>>> changes l'orientatiion de la page. Le dimensionnement se code au niveau
>>>> du tableau, pas au niveau de la colonne.
>>>>
>>>> Sub MacroWord()
>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>> 'Reference / Cocher "Microsoft Word xx.xx Library"
>>>> Dim NomDoc As String
>>>> 'Set wordobj = CreateObject("Word.Application")
>>>> Set wordobj = GetObject(, "Word.Application")
>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>> Set mydoc =
>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument)
>>>> wordobj.ActiveWindow.ActivePane.View.SeekView =
>>>> wdSeekCurrentPageHeader
>>>> mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
>>>> NumColumns:= _
>>>> 7, DefaultTableBehavior:=wdWord9TableBehavior,
>>>> AutoFitBehavior:= _
>>>> wdAutoFitWindow
>>>> With wordobj.Selection
>>>> For i = 1 To 7
>>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>>> If i < 7 Then .MoveRight Unit:=wdCell
>>>> Next i
>>>> .MoveLeft Unit:=wdCell, Count:=6
>>>> .Tables(1).Columns(1).PreferredWidthType =
>>>> wdPreferredWidthPoints
>>>> .Tables(1).Columns(1).PreferredWidth =
>>>> CentimetersToPoints(1.85)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(3.01)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(2.55)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(1.85)
>>>> End With
>>>> wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
>>>> If NomDoc <> "" Then
>>>> mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>> NomDoc
>>>> End If
>>>> wordobj.Visible = True
>>>> Set wordobj = Nothing
>>>> End Sub
>>>>
>>>> Daniel
>>>>
>>>>> oui c'est bien ça Daniel.
>>>>> pour les autres cellules, il faut qu'elle puisse se mettre à la taille
>>>>> automatiquement si jamais l'utilisateur met en mode paysage au lieu de
>>>>> portait (c'est à dire qu'elle se séparent en 3 l'espace disponible)..
>>>>> enfin si c'est possible bien sûr.
>>>>> Merci.
>>>>> YANN
>>>>>
>>>>> "Daniel.C" a écrit :
>>>>>
>>>>>> Juste une précision.
>>>>>> Pour la largeur des cellules d'entête sous Word, si je fais un prorata
>>>>>> des largeurs des cellules d'Excel que tu m'a fournies, avec les marges
>>>>>> standard gauche et droite de 2,5 cm, j'obtiens
>>>>>> - 1.85 cm
>>>>>> - 3.01 cm
>>>>>> - 2.55 cm
>>>>>> - 1.85 cm
>>>>>> respectivement pour les cellules A, B, F et G.
>>>>>> les largeurs des autres cellules étant à 2,32 cm
>>>>>> Peux-tu valider ceci ?
>>>>>> Daniel
>>>>>>
>>>>>>> Daniel,
>>>>>>> je préfère que ça se fasse sous Excel, oui.
>>>>>>> pour la bonne taille, je veux que les cellules du tableau occupent
>>>>>>> toute la largeur de la page. Cependant, certains critères :
>>>>>>> ** les dimensions dans Word de certaines colonnes devront être fixe
>>>>>>> colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
>>>>>>> ** les colonnes C, D et E, peut importe, en fait l'ajustement de la
>>>>>>> taille devra se faire sur ces 3 colonnes (la même taille peut être,
>>>>>>> pour plus de "beauté").
>>>>>>> ** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
>>>>>>> effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
>>>>>>> voici mon code actuel pour créer mon document Word :
>>>>>>> ---
>>>>>>> Sub MacroWord()
>>>>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>>>>> Reference / Cocher "Microsoft Word xx.xx Library"
>>>>>>> Dim NomDoc As String
>>>>>>> Set wordobj = CreateObject("Word.Application")
>>>>>>> 'Set wordobj = GetObject(, "Word.Application")
>>>>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>>>>> Set Mydoc =
>>>>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument) If NomDoc
>>>>>>> <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>>>>> NomDoc End If
>>>>>>> wordobj.Visible = True
>>>>>>> Set wordobj = Nothing
>>>>>>> End Sub
>>>>>>> ------
>>>>>>> Merci
>>>>>>> YANN
>>>>>>>
>>>>>>> "Daniel.C" a écrit :
>>>>>>>
>>>>>>>> Bonjour.
>>>>>>>> Ca peut se faire avec une macro Word, mais la logique voudrait que,
>>>>>>>> sauf impossibilité, tu inclues les instructions dans ta macro Excel.
>>>>>>>> Quand tu parles de "la bonne taille", tu veux dire que les cellules du
>>>>>>>> tableau doivent occuper toute la largeur de la page ou qu'elles
>>>>>>>> doivent s'ajuster au texte ?
>>>>>>>> Poste ton code, ça sera plus facile.
>>>>>>>> Cordialement.
>>>>>>>> Daniel
>>>>>>>>
>>>>>>>>> Bonjour,
>>>>>>>>> j'ai une macro de mon classeur Excel qui me crée un nouveau document
>>>>>>>>> WORD. Une fois créé, comment insérer un en-tête dans ce document Word
>>>>>>>>> ? Cet en-tete est en fait une zone qui est dans Excel : feuille
>>>>>>>>> "DCA", de A1 à G7.
>>>>>>>>> De plus, il faudrait que l'en-tête se mette à la bonne taille
>>>>>>>>> automatiquement. ça se fait depuis les macros Excel ou Word?
>>>>>>>>> je pose aussi ma question sur le forum Word, au cas où.
>>>>>>>>> Merci.
>>>>>>>>> YANN
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
temps libre en ce moment. Sinon, Le plus simple serait de créer un
modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
n'y aurait plus qu'à remplir les cellules variables.
Penses-tu que ce soit possible ?
Daniel
> daniel,
> je t'envoi le fichier avec mon en tete actuelle
> http://cjoint.com/?lAo0jtJ2D5
>
> tu verras, j'ai mis des commentaires, pour peut etre faire des
> copier-coller, si c'est plus simple.
> Merci de ton aide précieuse.
> YANN
>
>
> "Daniel.C" a écrit :
>
>> Bon.
>> Les cellules fusionnées, c'est l'enfer !
>> D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
>> en faire un sacré paquet à mettre dans un entête, non. Il faut les
>> mettre sur combien de lignes. Si tu as des cellules fusionnées,
>> envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
>> sont. Je ne peux rien faire avant de l'avoir vu.
>> Daniel
>>
>>> salut daniel,
>>> ben, ça plante à
>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>> en me mettant sur i, i= 3
>>> je précise que la ligne 3 est fusionnée entre C et E, mais tout comme la
>>> ligne 2, 4 et 5.
>>> la ligne 1 est fusionnée de B à E.
>>> je ne sais pas si ça joue.
>>> YANN
>>>
>>>
>>> "Daniel.C" a écrit :
>>>
>>>> Regarde la macro ci-dessous.
>>>> Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
>>>> changes l'orientatiion de la page. Le dimensionnement se code au niveau
>>>> du tableau, pas au niveau de la colonne.
>>>>
>>>> Sub MacroWord()
>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>> 'Reference / Cocher "Microsoft Word xx.xx Library"
>>>> Dim NomDoc As String
>>>> 'Set wordobj = CreateObject("Word.Application")
>>>> Set wordobj = GetObject(, "Word.Application")
>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>> Set mydoc =
>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument)
>>>> wordobj.ActiveWindow.ActivePane.View.SeekView =
>>>> wdSeekCurrentPageHeader
>>>> mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
>>>> NumColumns:= _
>>>> 7, DefaultTableBehavior:=wdWord9TableBehavior,
>>>> AutoFitBehavior:= _
>>>> wdAutoFitWindow
>>>> With wordobj.Selection
>>>> For i = 1 To 7
>>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>>> If i < 7 Then .MoveRight Unit:=wdCell
>>>> Next i
>>>> .MoveLeft Unit:=wdCell, Count:=6
>>>> .Tables(1).Columns(1).PreferredWidthType =
>>>> wdPreferredWidthPoints
>>>> .Tables(1).Columns(1).PreferredWidth =
>>>> CentimetersToPoints(1.85)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(3.01)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(2.55)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(1.85)
>>>> End With
>>>> wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
>>>> If NomDoc <> "" Then
>>>> mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>> NomDoc
>>>> End If
>>>> wordobj.Visible = True
>>>> Set wordobj = Nothing
>>>> End Sub
>>>>
>>>> Daniel
>>>>
>>>>> oui c'est bien ça Daniel.
>>>>> pour les autres cellules, il faut qu'elle puisse se mettre à la taille
>>>>> automatiquement si jamais l'utilisateur met en mode paysage au lieu de
>>>>> portait (c'est à dire qu'elle se séparent en 3 l'espace disponible)..
>>>>> enfin si c'est possible bien sûr.
>>>>> Merci.
>>>>> YANN
>>>>>
>>>>> "Daniel.C" a écrit :
>>>>>
>>>>>> Juste une précision.
>>>>>> Pour la largeur des cellules d'entête sous Word, si je fais un prorata
>>>>>> des largeurs des cellules d'Excel que tu m'a fournies, avec les marges
>>>>>> standard gauche et droite de 2,5 cm, j'obtiens
>>>>>> - 1.85 cm
>>>>>> - 3.01 cm
>>>>>> - 2.55 cm
>>>>>> - 1.85 cm
>>>>>> respectivement pour les cellules A, B, F et G.
>>>>>> les largeurs des autres cellules étant à 2,32 cm
>>>>>> Peux-tu valider ceci ?
>>>>>> Daniel
>>>>>>
>>>>>>> Daniel,
>>>>>>> je préfère que ça se fasse sous Excel, oui.
>>>>>>> pour la bonne taille, je veux que les cellules du tableau occupent
>>>>>>> toute la largeur de la page. Cependant, certains critères :
>>>>>>> ** les dimensions dans Word de certaines colonnes devront être fixe
>>>>>>> colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
>>>>>>> ** les colonnes C, D et E, peut importe, en fait l'ajustement de la
>>>>>>> taille devra se faire sur ces 3 colonnes (la même taille peut être,
>>>>>>> pour plus de "beauté").
>>>>>>> ** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
>>>>>>> effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
>>>>>>> voici mon code actuel pour créer mon document Word :
>>>>>>> ---
>>>>>>> Sub MacroWord()
>>>>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>>>>> Reference / Cocher "Microsoft Word xx.xx Library"
>>>>>>> Dim NomDoc As String
>>>>>>> Set wordobj = CreateObject("Word.Application")
>>>>>>> 'Set wordobj = GetObject(, "Word.Application")
>>>>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>>>>> Set Mydoc =
>>>>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument) If NomDoc
>>>>>>> <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>>>>> NomDoc End If
>>>>>>> wordobj.Visible = True
>>>>>>> Set wordobj = Nothing
>>>>>>> End Sub
>>>>>>> ------
>>>>>>> Merci
>>>>>>> YANN
>>>>>>>
>>>>>>> "Daniel.C" a écrit :
>>>>>>>
>>>>>>>> Bonjour.
>>>>>>>> Ca peut se faire avec une macro Word, mais la logique voudrait que,
>>>>>>>> sauf impossibilité, tu inclues les instructions dans ta macro Excel.
>>>>>>>> Quand tu parles de "la bonne taille", tu veux dire que les cellules du
>>>>>>>> tableau doivent occuper toute la largeur de la page ou qu'elles
>>>>>>>> doivent s'ajuster au texte ?
>>>>>>>> Poste ton code, ça sera plus facile.
>>>>>>>> Cordialement.
>>>>>>>> Daniel
>>>>>>>>
>>>>>>>>> Bonjour,
>>>>>>>>> j'ai une macro de mon classeur Excel qui me crée un nouveau document
>>>>>>>>> WORD. Une fois créé, comment insérer un en-tête dans ce document Word
>>>>>>>>> ? Cet en-tete est en fait une zone qui est dans Excel : feuille
>>>>>>>>> "DCA", de A1 à G7.
>>>>>>>>> De plus, il faudrait que l'en-tête se mette à la bonne taille
>>>>>>>>> automatiquement. ça se fait depuis les macros Excel ou Word?
>>>>>>>>> je pose aussi ma question sur le forum Word, au cas où.
>>>>>>>>> Merci.
>>>>>>>>> YANN
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
temps libre en ce moment. Sinon, Le plus simple serait de créer un
modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
n'y aurait plus qu'à remplir les cellules variables.
Penses-tu que ce soit possible ?
Daniel
> daniel,
> je t'envoi le fichier avec mon en tete actuelle
> http://cjoint.com/?lAo0jtJ2D5
>
> tu verras, j'ai mis des commentaires, pour peut etre faire des
> copier-coller, si c'est plus simple.
> Merci de ton aide précieuse.
> YANN
>
>
> "Daniel.C" a écrit :
>
>> Bon.
>> Les cellules fusionnées, c'est l'enfer !
>> D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
>> en faire un sacré paquet à mettre dans un entête, non. Il faut les
>> mettre sur combien de lignes. Si tu as des cellules fusionnées,
>> envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
>> sont. Je ne peux rien faire avant de l'avoir vu.
>> Daniel
>>
>>> salut daniel,
>>> ben, ça plante à
>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>> en me mettant sur i, i= 3
>>> je précise que la ligne 3 est fusionnée entre C et E, mais tout comme la
>>> ligne 2, 4 et 5.
>>> la ligne 1 est fusionnée de B à E.
>>> je ne sais pas si ça joue.
>>> YANN
>>>
>>>
>>> "Daniel.C" a écrit :
>>>
>>>> Regarde la macro ci-dessous.
>>>> Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
>>>> changes l'orientatiion de la page. Le dimensionnement se code au niveau
>>>> du tableau, pas au niveau de la colonne.
>>>>
>>>> Sub MacroWord()
>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>> 'Reference / Cocher "Microsoft Word xx.xx Library"
>>>> Dim NomDoc As String
>>>> 'Set wordobj = CreateObject("Word.Application")
>>>> Set wordobj = GetObject(, "Word.Application")
>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>> Set mydoc =
>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument)
>>>> wordobj.ActiveWindow.ActivePane.View.SeekView =
>>>> wdSeekCurrentPageHeader
>>>> mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
>>>> NumColumns:= _
>>>> 7, DefaultTableBehavior:=wdWord9TableBehavior,
>>>> AutoFitBehavior:= _
>>>> wdAutoFitWindow
>>>> With wordobj.Selection
>>>> For i = 1 To 7
>>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>>> If i < 7 Then .MoveRight Unit:=wdCell
>>>> Next i
>>>> .MoveLeft Unit:=wdCell, Count:=6
>>>> .Tables(1).Columns(1).PreferredWidthType =
>>>> wdPreferredWidthPoints
>>>> .Tables(1).Columns(1).PreferredWidth =
>>>> CentimetersToPoints(1.85)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(3.01)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(2.55)
>>>> .Move Unit:=wdColumn, Count:=1
>>>> .SelectColumn
>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>> .Columns.PreferredWidth = CentimetersToPoints(1.85)
>>>> End With
>>>> wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
>>>> If NomDoc <> "" Then
>>>> mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>> NomDoc
>>>> End If
>>>> wordobj.Visible = True
>>>> Set wordobj = Nothing
>>>> End Sub
>>>>
>>>> Daniel
>>>>
>>>>> oui c'est bien ça Daniel.
>>>>> pour les autres cellules, il faut qu'elle puisse se mettre à la taille
>>>>> automatiquement si jamais l'utilisateur met en mode paysage au lieu de
>>>>> portait (c'est à dire qu'elle se séparent en 3 l'espace disponible)..
>>>>> enfin si c'est possible bien sûr.
>>>>> Merci.
>>>>> YANN
>>>>>
>>>>> "Daniel.C" a écrit :
>>>>>
>>>>>> Juste une précision.
>>>>>> Pour la largeur des cellules d'entête sous Word, si je fais un prorata
>>>>>> des largeurs des cellules d'Excel que tu m'a fournies, avec les marges
>>>>>> standard gauche et droite de 2,5 cm, j'obtiens
>>>>>> - 1.85 cm
>>>>>> - 3.01 cm
>>>>>> - 2.55 cm
>>>>>> - 1.85 cm
>>>>>> respectivement pour les cellules A, B, F et G.
>>>>>> les largeurs des autres cellules étant à 2,32 cm
>>>>>> Peux-tu valider ceci ?
>>>>>> Daniel
>>>>>>
>>>>>>> Daniel,
>>>>>>> je préfère que ça se fasse sous Excel, oui.
>>>>>>> pour la bonne taille, je veux que les cellules du tableau occupent
>>>>>>> toute la largeur de la page. Cependant, certains critères :
>>>>>>> ** les dimensions dans Word de certaines colonnes devront être fixe
>>>>>>> colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
>>>>>>> ** les colonnes C, D et E, peut importe, en fait l'ajustement de la
>>>>>>> taille devra se faire sur ces 3 colonnes (la même taille peut être,
>>>>>>> pour plus de "beauté").
>>>>>>> ** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
>>>>>>> effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
>>>>>>> voici mon code actuel pour créer mon document Word :
>>>>>>> ---
>>>>>>> Sub MacroWord()
>>>>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>>>>> Reference / Cocher "Microsoft Word xx.xx Library"
>>>>>>> Dim NomDoc As String
>>>>>>> Set wordobj = CreateObject("Word.Application")
>>>>>>> 'Set wordobj = GetObject(, "Word.Application")
>>>>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>>>>> Set Mydoc =
>>>>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument) If NomDoc
>>>>>>> <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>>>>> NomDoc End If
>>>>>>> wordobj.Visible = True
>>>>>>> Set wordobj = Nothing
>>>>>>> End Sub
>>>>>>> ------
>>>>>>> Merci
>>>>>>> YANN
>>>>>>>
>>>>>>> "Daniel.C" a écrit :
>>>>>>>
>>>>>>>> Bonjour.
>>>>>>>> Ca peut se faire avec une macro Word, mais la logique voudrait que,
>>>>>>>> sauf impossibilité, tu inclues les instructions dans ta macro Excel.
>>>>>>>> Quand tu parles de "la bonne taille", tu veux dire que les cellules du
>>>>>>>> tableau doivent occuper toute la largeur de la page ou qu'elles
>>>>>>>> doivent s'ajuster au texte ?
>>>>>>>> Poste ton code, ça sera plus facile.
>>>>>>>> Cordialement.
>>>>>>>> Daniel
>>>>>>>>
>>>>>>>>> Bonjour,
>>>>>>>>> j'ai une macro de mon classeur Excel qui me crée un nouveau document
>>>>>>>>> WORD. Une fois créé, comment insérer un en-tête dans ce document Word
>>>>>>>>> ? Cet en-tete est en fait une zone qui est dans Excel : feuille
>>>>>>>>> "DCA", de A1 à G7.
>>>>>>>>> De plus, il faudrait que l'en-tête se mette à la bonne taille
>>>>>>>>> automatiquement. ça se fait depuis les macros Excel ou Word?
>>>>>>>>> je pose aussi ma question sur le forum Word, au cas où.
>>>>>>>>> Merci.
>>>>>>>>> YANN
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
voici ma matrice Word.
http://cjoint.com/?lApSlQlhMN
j'espère que ça te va.
PS : pas de soucis pour le temps, c'est deja tres gentil et généreux de
prendre du temps pour mes questions, je ne vais pas non plus être demandeur
de productivité ... :°))
YANN
"Daniel.C" a écrit :Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
temps libre en ce moment. Sinon, Le plus simple serait de créer un
modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
n'y aurait plus qu'à remplir les cellules variables.
Penses-tu que ce soit possible ?
Danieldaniel,
je t'envoi le fichier avec mon en tete actuelle
http://cjoint.com/?lAo0jtJ2D5
tu verras, j'ai mis des commentaires, pour peut etre faire des
copier-coller, si c'est plus simple.
Merci de ton aide précieuse.
YANN
"Daniel.C" a écrit :Bon.
Les cellules fusionnées, c'est l'enfer !
D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
en faire un sacré paquet à mettre dans un entête, non. Il faut les
mettre sur combien de lignes. Si tu as des cellules fusionnées,
envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
sont. Je ne peux rien faire avant de l'avoir vu.
Danielsalut daniel,
ben, ça plante à
.TypeText Text:=Sheets("DCA").Cells(1, i).Value
en me mettant sur i, i= 3
je précise que la ligne 3 est fusionnée entre C et E, mais tout comme la
ligne 2, 4 et 5.
la ligne 1 est fusionnée de B à E.
je ne sais pas si ça joue.
YANN
"Daniel.C" a écrit :Regarde la macro ci-dessous.
Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
changes l'orientatiion de la page. Le dimensionnement se code au niveau
du tableau, pas au niveau de la colonne.
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
'Set wordobj = CreateObject("Word.Application")
Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
Set mydoc =
wordobj.documents.Add(documentType:=wdNewBlankDocument)
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
NumColumns:= _
7, DefaultTableBehavior:=wdWord9TableBehavior,
AutoFitBehavior:= _
wdAutoFitWindow
With wordobj.Selection
For i = 1 To 7
.TypeText Text:=Sheets("DCA").Cells(1, i).Value
If i < 7 Then .MoveRight Unit:=wdCell
Next i
.MoveLeft Unit:=wdCell, Count:=6
.Tables(1).Columns(1).PreferredWidthType =
wdPreferredWidthPoints
.Tables(1).Columns(1).PreferredWidth =
CentimetersToPoints(1.85)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(3.01)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(2.55)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(1.85)
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
NomDoc
End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
Danieloui c'est bien ça Daniel.
pour les autres cellules, il faut qu'elle puisse se mettre à la taille
automatiquement si jamais l'utilisateur met en mode paysage au lieu de
portait (c'est à dire qu'elle se séparent en 3 l'espace disponible)..
enfin si c'est possible bien sûr.
Merci.
YANN
"Daniel.C" a écrit :Juste une précision.
Pour la largeur des cellules d'entête sous Word, si je fais un prorata
des largeurs des cellules d'Excel que tu m'a fournies, avec les marges
standard gauche et droite de 2,5 cm, j'obtiens
- 1.85 cm
- 3.01 cm
- 2.55 cm
- 1.85 cm
respectivement pour les cellules A, B, F et G.
les largeurs des autres cellules étant à 2,32 cm
Peux-tu valider ceci ?
DanielDaniel,
je préfère que ça se fasse sous Excel, oui.
pour la bonne taille, je veux que les cellules du tableau occupent
toute la largeur de la page. Cependant, certains critères :
** les dimensions dans Word de certaines colonnes devront être fixe
colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
** les colonnes C, D et E, peut importe, en fait l'ajustement de la
taille devra se faire sur ces 3 colonnes (la même taille peut être,
pour plus de "beauté").
** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
voici mon code actuel pour créer mon document Word :
---
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils
/ Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
Set wordobj = CreateObject("Word.Application")
'Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à
enregistrer") Set Mydoc =
wordobj.documents.Add(documentType:=wdNewBlankDocument) If
NomDoc <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" &
NomDoc 'wordobj.activedocument.SaveAs ThisWorkbook.Path &
"" & NomDoc End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
------
Merci
YANN
"Daniel.C" a écrit :Bonjour.
Ca peut se faire avec une macro Word, mais la logique voudrait que,
sauf impossibilité, tu inclues les instructions dans ta macro Excel.
Quand tu parles de "la bonne taille", tu veux dire que les cellules
du tableau doivent occuper toute la largeur de la page ou qu'elles
doivent s'ajuster au texte ?
Poste ton code, ça sera plus facile.
Cordialement.
DanielBonjour,
j'ai une macro de mon classeur Excel qui me crée un nouveau
document WORD. Une fois créé, comment insérer un en-tête dans ce
document Word ? Cet en-tete est en fait une zone qui est dans
Excel : feuille "DCA", de A1 à G7.
De plus, il faudrait que l'en-tête se mette à la bonne taille
automatiquement. ça se fait depuis les macros Excel ou Word?
je pose aussi ma question sur le forum Word, au cas où.
Merci.
YANN
voici ma matrice Word.
http://cjoint.com/?lApSlQlhMN
j'espère que ça te va.
PS : pas de soucis pour le temps, c'est deja tres gentil et généreux de
prendre du temps pour mes questions, je ne vais pas non plus être demandeur
de productivité ... :°))
YANN
"Daniel.C" a écrit :
Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
temps libre en ce moment. Sinon, Le plus simple serait de créer un
modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
n'y aurait plus qu'à remplir les cellules variables.
Penses-tu que ce soit possible ?
Daniel
daniel,
je t'envoi le fichier avec mon en tete actuelle
http://cjoint.com/?lAo0jtJ2D5
tu verras, j'ai mis des commentaires, pour peut etre faire des
copier-coller, si c'est plus simple.
Merci de ton aide précieuse.
YANN
"Daniel.C" a écrit :
Bon.
Les cellules fusionnées, c'est l'enfer !
D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
en faire un sacré paquet à mettre dans un entête, non. Il faut les
mettre sur combien de lignes. Si tu as des cellules fusionnées,
envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
sont. Je ne peux rien faire avant de l'avoir vu.
Daniel
salut daniel,
ben, ça plante à
.TypeText Text:=Sheets("DCA").Cells(1, i).Value
en me mettant sur i, i= 3
je précise que la ligne 3 est fusionnée entre C et E, mais tout comme la
ligne 2, 4 et 5.
la ligne 1 est fusionnée de B à E.
je ne sais pas si ça joue.
YANN
"Daniel.C" a écrit :
Regarde la macro ci-dessous.
Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
changes l'orientatiion de la page. Le dimensionnement se code au niveau
du tableau, pas au niveau de la colonne.
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
'Set wordobj = CreateObject("Word.Application")
Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
Set mydoc =
wordobj.documents.Add(documentType:=wdNewBlankDocument)
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
NumColumns:= _
7, DefaultTableBehavior:=wdWord9TableBehavior,
AutoFitBehavior:= _
wdAutoFitWindow
With wordobj.Selection
For i = 1 To 7
.TypeText Text:=Sheets("DCA").Cells(1, i).Value
If i < 7 Then .MoveRight Unit:=wdCell
Next i
.MoveLeft Unit:=wdCell, Count:=6
.Tables(1).Columns(1).PreferredWidthType =
wdPreferredWidthPoints
.Tables(1).Columns(1).PreferredWidth =
CentimetersToPoints(1.85)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(3.01)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(2.55)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(1.85)
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
NomDoc
End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
Daniel
oui c'est bien ça Daniel.
pour les autres cellules, il faut qu'elle puisse se mettre à la taille
automatiquement si jamais l'utilisateur met en mode paysage au lieu de
portait (c'est à dire qu'elle se séparent en 3 l'espace disponible)..
enfin si c'est possible bien sûr.
Merci.
YANN
"Daniel.C" a écrit :
Juste une précision.
Pour la largeur des cellules d'entête sous Word, si je fais un prorata
des largeurs des cellules d'Excel que tu m'a fournies, avec les marges
standard gauche et droite de 2,5 cm, j'obtiens
- 1.85 cm
- 3.01 cm
- 2.55 cm
- 1.85 cm
respectivement pour les cellules A, B, F et G.
les largeurs des autres cellules étant à 2,32 cm
Peux-tu valider ceci ?
Daniel
Daniel,
je préfère que ça se fasse sous Excel, oui.
pour la bonne taille, je veux que les cellules du tableau occupent
toute la largeur de la page. Cependant, certains critères :
** les dimensions dans Word de certaines colonnes devront être fixe
colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
** les colonnes C, D et E, peut importe, en fait l'ajustement de la
taille devra se faire sur ces 3 colonnes (la même taille peut être,
pour plus de "beauté").
** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
voici mon code actuel pour créer mon document Word :
---
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils
/ Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
Set wordobj = CreateObject("Word.Application")
'Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à
enregistrer") Set Mydoc =
wordobj.documents.Add(documentType:=wdNewBlankDocument) If
NomDoc <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" &
NomDoc 'wordobj.activedocument.SaveAs ThisWorkbook.Path &
"" & NomDoc End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
------
Merci
YANN
"Daniel.C" a écrit :
Bonjour.
Ca peut se faire avec une macro Word, mais la logique voudrait que,
sauf impossibilité, tu inclues les instructions dans ta macro Excel.
Quand tu parles de "la bonne taille", tu veux dire que les cellules
du tableau doivent occuper toute la largeur de la page ou qu'elles
doivent s'ajuster au texte ?
Poste ton code, ça sera plus facile.
Cordialement.
Daniel
Bonjour,
j'ai une macro de mon classeur Excel qui me crée un nouveau
document WORD. Une fois créé, comment insérer un en-tête dans ce
document Word ? Cet en-tete est en fait une zone qui est dans
Excel : feuille "DCA", de A1 à G7.
De plus, il faudrait que l'en-tête se mette à la bonne taille
automatiquement. ça se fait depuis les macros Excel ou Word?
je pose aussi ma question sur le forum Word, au cas où.
Merci.
YANN
voici ma matrice Word.
http://cjoint.com/?lApSlQlhMN
j'espère que ça te va.
PS : pas de soucis pour le temps, c'est deja tres gentil et généreux de
prendre du temps pour mes questions, je ne vais pas non plus être demandeur
de productivité ... :°))
YANN
"Daniel.C" a écrit :Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
temps libre en ce moment. Sinon, Le plus simple serait de créer un
modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
n'y aurait plus qu'à remplir les cellules variables.
Penses-tu que ce soit possible ?
Danieldaniel,
je t'envoi le fichier avec mon en tete actuelle
http://cjoint.com/?lAo0jtJ2D5
tu verras, j'ai mis des commentaires, pour peut etre faire des
copier-coller, si c'est plus simple.
Merci de ton aide précieuse.
YANN
"Daniel.C" a écrit :Bon.
Les cellules fusionnées, c'est l'enfer !
D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
en faire un sacré paquet à mettre dans un entête, non. Il faut les
mettre sur combien de lignes. Si tu as des cellules fusionnées,
envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
sont. Je ne peux rien faire avant de l'avoir vu.
Danielsalut daniel,
ben, ça plante à
.TypeText Text:=Sheets("DCA").Cells(1, i).Value
en me mettant sur i, i= 3
je précise que la ligne 3 est fusionnée entre C et E, mais tout comme la
ligne 2, 4 et 5.
la ligne 1 est fusionnée de B à E.
je ne sais pas si ça joue.
YANN
"Daniel.C" a écrit :Regarde la macro ci-dessous.
Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
changes l'orientatiion de la page. Le dimensionnement se code au niveau
du tableau, pas au niveau de la colonne.
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
'Set wordobj = CreateObject("Word.Application")
Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
Set mydoc =
wordobj.documents.Add(documentType:=wdNewBlankDocument)
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
NumColumns:= _
7, DefaultTableBehavior:=wdWord9TableBehavior,
AutoFitBehavior:= _
wdAutoFitWindow
With wordobj.Selection
For i = 1 To 7
.TypeText Text:=Sheets("DCA").Cells(1, i).Value
If i < 7 Then .MoveRight Unit:=wdCell
Next i
.MoveLeft Unit:=wdCell, Count:=6
.Tables(1).Columns(1).PreferredWidthType =
wdPreferredWidthPoints
.Tables(1).Columns(1).PreferredWidth =
CentimetersToPoints(1.85)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(3.01)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(2.55)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(1.85)
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
NomDoc
End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
Danieloui c'est bien ça Daniel.
pour les autres cellules, il faut qu'elle puisse se mettre à la taille
automatiquement si jamais l'utilisateur met en mode paysage au lieu de
portait (c'est à dire qu'elle se séparent en 3 l'espace disponible)..
enfin si c'est possible bien sûr.
Merci.
YANN
"Daniel.C" a écrit :Juste une précision.
Pour la largeur des cellules d'entête sous Word, si je fais un prorata
des largeurs des cellules d'Excel que tu m'a fournies, avec les marges
standard gauche et droite de 2,5 cm, j'obtiens
- 1.85 cm
- 3.01 cm
- 2.55 cm
- 1.85 cm
respectivement pour les cellules A, B, F et G.
les largeurs des autres cellules étant à 2,32 cm
Peux-tu valider ceci ?
DanielDaniel,
je préfère que ça se fasse sous Excel, oui.
pour la bonne taille, je veux que les cellules du tableau occupent
toute la largeur de la page. Cependant, certains critères :
** les dimensions dans Word de certaines colonnes devront être fixe
colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
** les colonnes C, D et E, peut importe, en fait l'ajustement de la
taille devra se faire sur ces 3 colonnes (la même taille peut être,
pour plus de "beauté").
** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
voici mon code actuel pour créer mon document Word :
---
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils
/ Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
Set wordobj = CreateObject("Word.Application")
'Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à
enregistrer") Set Mydoc =
wordobj.documents.Add(documentType:=wdNewBlankDocument) If
NomDoc <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" &
NomDoc 'wordobj.activedocument.SaveAs ThisWorkbook.Path &
"" & NomDoc End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
------
Merci
YANN
"Daniel.C" a écrit :Bonjour.
Ca peut se faire avec une macro Word, mais la logique voudrait que,
sauf impossibilité, tu inclues les instructions dans ta macro Excel.
Quand tu parles de "la bonne taille", tu veux dire que les cellules
du tableau doivent occuper toute la largeur de la page ou qu'elles
doivent s'ajuster au texte ?
Poste ton code, ça sera plus facile.
Cordialement.
DanielBonjour,
j'ai une macro de mon classeur Excel qui me crée un nouveau
document WORD. Une fois créé, comment insérer un en-tête dans ce
document Word ? Cet en-tete est en fait une zone qui est dans
Excel : feuille "DCA", de A1 à G7.
De plus, il faudrait que l'en-tête se mette à la bonne taille
automatiquement. ça se fait depuis les macros Excel ou Word?
je pose aussi ma question sur le forum Word, au cas où.
Merci.
YANN
Voici la macro. Il faut que tu enregistres le document Word comme
modèle (extension .xlt), dans un dossier que tu mettras dans la macro à
la place du mien; d'autre part, il faut que les cellules de l'entête
qui sont à remplir soient vides dans le modèle.
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
'Set wordobj = CreateObject("Word.Application")
Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
wordobj.documents.Add Template:= _
"E:DonneesDanielmpfeenteteYannPourDaniel.dot",
NewTemplate:úlse, _
DocumentType:=0
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
With wordobj.Selection
.MoveRight wdCell
.TypeText Text:=[DGA!B1].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G3].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B2].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B3].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G5].Value
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
NomDoc
End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
Daniel
> voici ma matrice Word.
> http://cjoint.com/?lApSlQlhMN
>
> j'espère que ça te va.
>
> PS : pas de soucis pour le temps, c'est deja tres gentil et généreux de
> prendre du temps pour mes questions, je ne vais pas non plus être demandeur
> de productivité ... :°))
>
> YANN
>
> "Daniel.C" a écrit :
>
>> Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
>> temps libre en ce moment. Sinon, Le plus simple serait de créer un
>> modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
>> n'y aurait plus qu'à remplir les cellules variables.
>> Penses-tu que ce soit possible ?
>> Daniel
>>
>>> daniel,
>>> je t'envoi le fichier avec mon en tete actuelle
>>> http://cjoint.com/?lAo0jtJ2D5
>>>
>>> tu verras, j'ai mis des commentaires, pour peut etre faire des
>>> copier-coller, si c'est plus simple.
>>> Merci de ton aide précieuse.
>>> YANN
>>>
>>>
>>> "Daniel.C" a écrit :
>>>
>>>> Bon.
>>>> Les cellules fusionnées, c'est l'enfer !
>>>> D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
>>>> en faire un sacré paquet à mettre dans un entête, non. Il faut les
>>>> mettre sur combien de lignes. Si tu as des cellules fusionnées,
>>>> envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
>>>> sont. Je ne peux rien faire avant de l'avoir vu.
>>>> Daniel
>>>>
>>>>> salut daniel,
>>>>> ben, ça plante à
>>>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>>>> en me mettant sur i, i= 3
>>>>> je précise que la ligne 3 est fusionnée entre C et E, mais tout comme la
>>>>> ligne 2, 4 et 5.
>>>>> la ligne 1 est fusionnée de B à E.
>>>>> je ne sais pas si ça joue.
>>>>> YANN
>>>>>
>>>>>
>>>>> "Daniel.C" a écrit :
>>>>>
>>>>>> Regarde la macro ci-dessous.
>>>>>> Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
>>>>>> changes l'orientatiion de la page. Le dimensionnement se code au niveau
>>>>>> du tableau, pas au niveau de la colonne.
>>>>>>
>>>>>> Sub MacroWord()
>>>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>>>> 'Reference / Cocher "Microsoft Word xx.xx Library"
>>>>>> Dim NomDoc As String
>>>>>> 'Set wordobj = CreateObject("Word.Application")
>>>>>> Set wordobj = GetObject(, "Word.Application")
>>>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>>>> Set mydoc =
>>>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument)
>>>>>> wordobj.ActiveWindow.ActivePane.View.SeekView =
>>>>>> wdSeekCurrentPageHeader
>>>>>> mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
>>>>>> NumColumns:= _
>>>>>> 7, DefaultTableBehavior:=wdWord9TableBehavior,
>>>>>> AutoFitBehavior:= _
>>>>>> wdAutoFitWindow
>>>>>> With wordobj.Selection
>>>>>> For i = 1 To 7
>>>>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>>>>> If i < 7 Then .MoveRight Unit:=wdCell
>>>>>> Next i
>>>>>> .MoveLeft Unit:=wdCell, Count:=6
>>>>>> .Tables(1).Columns(1).PreferredWidthType =
>>>>>> wdPreferredWidthPoints
>>>>>> .Tables(1).Columns(1).PreferredWidth =
>>>>>> CentimetersToPoints(1.85)
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>>>> .Columns.PreferredWidth = CentimetersToPoints(3.01)
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>>>> .Columns.PreferredWidth = CentimetersToPoints(2.55)
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>>>> .Columns.PreferredWidth = CentimetersToPoints(1.85)
>>>>>> End With
>>>>>> wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
>>>>>> If NomDoc <> "" Then
>>>>>> mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>>>> NomDoc
>>>>>> End If
>>>>>> wordobj.Visible = True
>>>>>> Set wordobj = Nothing
>>>>>> End Sub
>>>>>>
>>>>>> Daniel
>>>>>>
>>>>>>> oui c'est bien ça Daniel.
>>>>>>> pour les autres cellules, il faut qu'elle puisse se mettre à la taille
>>>>>>> automatiquement si jamais l'utilisateur met en mode paysage au lieu de
>>>>>>> portait (c'est à dire qu'elle se séparent en 3 l'espace disponible)..
>>>>>>> enfin si c'est possible bien sûr.
>>>>>>> Merci.
>>>>>>> YANN
>>>>>>>
>>>>>>> "Daniel.C" a écrit :
>>>>>>>
>>>>>>>> Juste une précision.
>>>>>>>> Pour la largeur des cellules d'entête sous Word, si je fais un prorata
>>>>>>>> des largeurs des cellules d'Excel que tu m'a fournies, avec les marges
>>>>>>>> standard gauche et droite de 2,5 cm, j'obtiens
>>>>>>>> - 1.85 cm
>>>>>>>> - 3.01 cm
>>>>>>>> - 2.55 cm
>>>>>>>> - 1.85 cm
>>>>>>>> respectivement pour les cellules A, B, F et G.
>>>>>>>> les largeurs des autres cellules étant à 2,32 cm
>>>>>>>> Peux-tu valider ceci ?
>>>>>>>> Daniel
>>>>>>>>
>>>>>>>>> Daniel,
>>>>>>>>> je préfère que ça se fasse sous Excel, oui.
>>>>>>>>> pour la bonne taille, je veux que les cellules du tableau occupent
>>>>>>>>> toute la largeur de la page. Cependant, certains critères :
>>>>>>>>> ** les dimensions dans Word de certaines colonnes devront être fixe
>>>>>>>>> colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
>>>>>>>>> ** les colonnes C, D et E, peut importe, en fait l'ajustement de la
>>>>>>>>> taille devra se faire sur ces 3 colonnes (la même taille peut être,
>>>>>>>>> pour plus de "beauté").
>>>>>>>>> ** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
>>>>>>>>> effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
>>>>>>>>> voici mon code actuel pour créer mon document Word :
>>>>>>>>> ---
>>>>>>>>> Sub MacroWord()
>>>>>>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils
>>>>>>>>> / Reference / Cocher "Microsoft Word xx.xx Library"
>>>>>>>>> Dim NomDoc As String
>>>>>>>>> Set wordobj = CreateObject("Word.Application")
>>>>>>>>> 'Set wordobj = GetObject(, "Word.Application")
>>>>>>>>> NomDoc = InputBox("Entrez le nom du document Word à
>>>>>>>>> enregistrer") Set Mydoc =
>>>>>>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument) If
>>>>>>>>> NomDoc <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" &
>>>>>>>>> NomDoc 'wordobj.activedocument.SaveAs ThisWorkbook.Path &
>>>>>>>>> "" & NomDoc End If
>>>>>>>>> wordobj.Visible = True
>>>>>>>>> Set wordobj = Nothing
>>>>>>>>> End Sub
>>>>>>>>> ------
>>>>>>>>> Merci
>>>>>>>>> YANN
>>>>>>>>>
>>>>>>>>> "Daniel.C" a écrit :
>>>>>>>>>
>>>>>>>>>> Bonjour.
>>>>>>>>>> Ca peut se faire avec une macro Word, mais la logique voudrait que,
>>>>>>>>>> sauf impossibilité, tu inclues les instructions dans ta macro Excel.
>>>>>>>>>> Quand tu parles de "la bonne taille", tu veux dire que les cellules
>>>>>>>>>> du tableau doivent occuper toute la largeur de la page ou qu'elles
>>>>>>>>>> doivent s'ajuster au texte ?
>>>>>>>>>> Poste ton code, ça sera plus facile.
>>>>>>>>>> Cordialement.
>>>>>>>>>> Daniel
>>>>>>>>>>
>>>>>>>>>>> Bonjour,
>>>>>>>>>>> j'ai une macro de mon classeur Excel qui me crée un nouveau
>>>>>>>>>>> document WORD. Une fois créé, comment insérer un en-tête dans ce
>>>>>>>>>>> document Word ? Cet en-tete est en fait une zone qui est dans
>>>>>>>>>>> Excel : feuille "DCA", de A1 à G7.
>>>>>>>>>>> De plus, il faudrait que l'en-tête se mette à la bonne taille
>>>>>>>>>>> automatiquement. ça se fait depuis les macros Excel ou Word?
>>>>>>>>>>> je pose aussi ma question sur le forum Word, au cas où.
>>>>>>>>>>> Merci.
>>>>>>>>>>> YANN
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
Voici la macro. Il faut que tu enregistres le document Word comme
modèle (extension .xlt), dans un dossier que tu mettras dans la macro à
la place du mien; d'autre part, il faut que les cellules de l'entête
qui sont à remplir soient vides dans le modèle.
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
'Set wordobj = CreateObject("Word.Application")
Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
wordobj.documents.Add Template:= _
"E:DonneesDanielmpfeenteteYannPourDaniel.dot",
NewTemplate:úlse, _
DocumentType:=0
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
With wordobj.Selection
.MoveRight wdCell
.TypeText Text:=[DGA!B1].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G3].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B2].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B3].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G5].Value
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
NomDoc
End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
Daniel
> voici ma matrice Word.
> http://cjoint.com/?lApSlQlhMN
>
> j'espère que ça te va.
>
> PS : pas de soucis pour le temps, c'est deja tres gentil et généreux de
> prendre du temps pour mes questions, je ne vais pas non plus être demandeur
> de productivité ... :°))
>
> YANN
>
> "Daniel.C" a écrit :
>
>> Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
>> temps libre en ce moment. Sinon, Le plus simple serait de créer un
>> modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
>> n'y aurait plus qu'à remplir les cellules variables.
>> Penses-tu que ce soit possible ?
>> Daniel
>>
>>> daniel,
>>> je t'envoi le fichier avec mon en tete actuelle
>>> http://cjoint.com/?lAo0jtJ2D5
>>>
>>> tu verras, j'ai mis des commentaires, pour peut etre faire des
>>> copier-coller, si c'est plus simple.
>>> Merci de ton aide précieuse.
>>> YANN
>>>
>>>
>>> "Daniel.C" a écrit :
>>>
>>>> Bon.
>>>> Les cellules fusionnées, c'est l'enfer !
>>>> D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
>>>> en faire un sacré paquet à mettre dans un entête, non. Il faut les
>>>> mettre sur combien de lignes. Si tu as des cellules fusionnées,
>>>> envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
>>>> sont. Je ne peux rien faire avant de l'avoir vu.
>>>> Daniel
>>>>
>>>>> salut daniel,
>>>>> ben, ça plante à
>>>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>>>> en me mettant sur i, i= 3
>>>>> je précise que la ligne 3 est fusionnée entre C et E, mais tout comme la
>>>>> ligne 2, 4 et 5.
>>>>> la ligne 1 est fusionnée de B à E.
>>>>> je ne sais pas si ça joue.
>>>>> YANN
>>>>>
>>>>>
>>>>> "Daniel.C" a écrit :
>>>>>
>>>>>> Regarde la macro ci-dessous.
>>>>>> Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
>>>>>> changes l'orientatiion de la page. Le dimensionnement se code au niveau
>>>>>> du tableau, pas au niveau de la colonne.
>>>>>>
>>>>>> Sub MacroWord()
>>>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>>>> 'Reference / Cocher "Microsoft Word xx.xx Library"
>>>>>> Dim NomDoc As String
>>>>>> 'Set wordobj = CreateObject("Word.Application")
>>>>>> Set wordobj = GetObject(, "Word.Application")
>>>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>>>> Set mydoc =
>>>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument)
>>>>>> wordobj.ActiveWindow.ActivePane.View.SeekView =
>>>>>> wdSeekCurrentPageHeader
>>>>>> mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
>>>>>> NumColumns:= _
>>>>>> 7, DefaultTableBehavior:=wdWord9TableBehavior,
>>>>>> AutoFitBehavior:= _
>>>>>> wdAutoFitWindow
>>>>>> With wordobj.Selection
>>>>>> For i = 1 To 7
>>>>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>>>>> If i < 7 Then .MoveRight Unit:=wdCell
>>>>>> Next i
>>>>>> .MoveLeft Unit:=wdCell, Count:=6
>>>>>> .Tables(1).Columns(1).PreferredWidthType =
>>>>>> wdPreferredWidthPoints
>>>>>> .Tables(1).Columns(1).PreferredWidth =
>>>>>> CentimetersToPoints(1.85)
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>>>> .Columns.PreferredWidth = CentimetersToPoints(3.01)
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>>>> .Columns.PreferredWidth = CentimetersToPoints(2.55)
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>>>> .Columns.PreferredWidth = CentimetersToPoints(1.85)
>>>>>> End With
>>>>>> wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
>>>>>> If NomDoc <> "" Then
>>>>>> mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>>>> NomDoc
>>>>>> End If
>>>>>> wordobj.Visible = True
>>>>>> Set wordobj = Nothing
>>>>>> End Sub
>>>>>>
>>>>>> Daniel
>>>>>>
>>>>>>> oui c'est bien ça Daniel.
>>>>>>> pour les autres cellules, il faut qu'elle puisse se mettre à la taille
>>>>>>> automatiquement si jamais l'utilisateur met en mode paysage au lieu de
>>>>>>> portait (c'est à dire qu'elle se séparent en 3 l'espace disponible)..
>>>>>>> enfin si c'est possible bien sûr.
>>>>>>> Merci.
>>>>>>> YANN
>>>>>>>
>>>>>>> "Daniel.C" a écrit :
>>>>>>>
>>>>>>>> Juste une précision.
>>>>>>>> Pour la largeur des cellules d'entête sous Word, si je fais un prorata
>>>>>>>> des largeurs des cellules d'Excel que tu m'a fournies, avec les marges
>>>>>>>> standard gauche et droite de 2,5 cm, j'obtiens
>>>>>>>> - 1.85 cm
>>>>>>>> - 3.01 cm
>>>>>>>> - 2.55 cm
>>>>>>>> - 1.85 cm
>>>>>>>> respectivement pour les cellules A, B, F et G.
>>>>>>>> les largeurs des autres cellules étant à 2,32 cm
>>>>>>>> Peux-tu valider ceci ?
>>>>>>>> Daniel
>>>>>>>>
>>>>>>>>> Daniel,
>>>>>>>>> je préfère que ça se fasse sous Excel, oui.
>>>>>>>>> pour la bonne taille, je veux que les cellules du tableau occupent
>>>>>>>>> toute la largeur de la page. Cependant, certains critères :
>>>>>>>>> ** les dimensions dans Word de certaines colonnes devront être fixe
>>>>>>>>> colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
>>>>>>>>> ** les colonnes C, D et E, peut importe, en fait l'ajustement de la
>>>>>>>>> taille devra se faire sur ces 3 colonnes (la même taille peut être,
>>>>>>>>> pour plus de "beauté").
>>>>>>>>> ** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
>>>>>>>>> effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
>>>>>>>>> voici mon code actuel pour créer mon document Word :
>>>>>>>>> ---
>>>>>>>>> Sub MacroWord()
>>>>>>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils
>>>>>>>>> / Reference / Cocher "Microsoft Word xx.xx Library"
>>>>>>>>> Dim NomDoc As String
>>>>>>>>> Set wordobj = CreateObject("Word.Application")
>>>>>>>>> 'Set wordobj = GetObject(, "Word.Application")
>>>>>>>>> NomDoc = InputBox("Entrez le nom du document Word à
>>>>>>>>> enregistrer") Set Mydoc =
>>>>>>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument) If
>>>>>>>>> NomDoc <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" &
>>>>>>>>> NomDoc 'wordobj.activedocument.SaveAs ThisWorkbook.Path &
>>>>>>>>> "" & NomDoc End If
>>>>>>>>> wordobj.Visible = True
>>>>>>>>> Set wordobj = Nothing
>>>>>>>>> End Sub
>>>>>>>>> ------
>>>>>>>>> Merci
>>>>>>>>> YANN
>>>>>>>>>
>>>>>>>>> "Daniel.C" a écrit :
>>>>>>>>>
>>>>>>>>>> Bonjour.
>>>>>>>>>> Ca peut se faire avec une macro Word, mais la logique voudrait que,
>>>>>>>>>> sauf impossibilité, tu inclues les instructions dans ta macro Excel.
>>>>>>>>>> Quand tu parles de "la bonne taille", tu veux dire que les cellules
>>>>>>>>>> du tableau doivent occuper toute la largeur de la page ou qu'elles
>>>>>>>>>> doivent s'ajuster au texte ?
>>>>>>>>>> Poste ton code, ça sera plus facile.
>>>>>>>>>> Cordialement.
>>>>>>>>>> Daniel
>>>>>>>>>>
>>>>>>>>>>> Bonjour,
>>>>>>>>>>> j'ai une macro de mon classeur Excel qui me crée un nouveau
>>>>>>>>>>> document WORD. Une fois créé, comment insérer un en-tête dans ce
>>>>>>>>>>> document Word ? Cet en-tete est en fait une zone qui est dans
>>>>>>>>>>> Excel : feuille "DCA", de A1 à G7.
>>>>>>>>>>> De plus, il faudrait que l'en-tête se mette à la bonne taille
>>>>>>>>>>> automatiquement. ça se fait depuis les macros Excel ou Word?
>>>>>>>>>>> je pose aussi ma question sur le forum Word, au cas où.
>>>>>>>>>>> Merci.
>>>>>>>>>>> YANN
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
Voici la macro. Il faut que tu enregistres le document Word comme
modèle (extension .xlt), dans un dossier que tu mettras dans la macro à
la place du mien; d'autre part, il faut que les cellules de l'entête
qui sont à remplir soient vides dans le modèle.
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
'Set wordobj = CreateObject("Word.Application")
Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
wordobj.documents.Add Template:= _
"E:DonneesDanielmpfeenteteYannPourDaniel.dot",
NewTemplate:úlse, _
DocumentType:=0
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
With wordobj.Selection
.MoveRight wdCell
.TypeText Text:=[DGA!B1].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G3].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B2].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B3].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G5].Value
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
NomDoc
End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
Daniel
> voici ma matrice Word.
> http://cjoint.com/?lApSlQlhMN
>
> j'espère que ça te va.
>
> PS : pas de soucis pour le temps, c'est deja tres gentil et généreux de
> prendre du temps pour mes questions, je ne vais pas non plus être demandeur
> de productivité ... :°))
>
> YANN
>
> "Daniel.C" a écrit :
>
>> Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
>> temps libre en ce moment. Sinon, Le plus simple serait de créer un
>> modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
>> n'y aurait plus qu'à remplir les cellules variables.
>> Penses-tu que ce soit possible ?
>> Daniel
>>
>>> daniel,
>>> je t'envoi le fichier avec mon en tete actuelle
>>> http://cjoint.com/?lAo0jtJ2D5
>>>
>>> tu verras, j'ai mis des commentaires, pour peut etre faire des
>>> copier-coller, si c'est plus simple.
>>> Merci de ton aide précieuse.
>>> YANN
>>>
>>>
>>> "Daniel.C" a écrit :
>>>
>>>> Bon.
>>>> Les cellules fusionnées, c'est l'enfer !
>>>> D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
>>>> en faire un sacré paquet à mettre dans un entête, non. Il faut les
>>>> mettre sur combien de lignes. Si tu as des cellules fusionnées,
>>>> envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
>>>> sont. Je ne peux rien faire avant de l'avoir vu.
>>>> Daniel
>>>>
>>>>> salut daniel,
>>>>> ben, ça plante à
>>>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>>>> en me mettant sur i, i= 3
>>>>> je précise que la ligne 3 est fusionnée entre C et E, mais tout comme la
>>>>> ligne 2, 4 et 5.
>>>>> la ligne 1 est fusionnée de B à E.
>>>>> je ne sais pas si ça joue.
>>>>> YANN
>>>>>
>>>>>
>>>>> "Daniel.C" a écrit :
>>>>>
>>>>>> Regarde la macro ci-dessous.
>>>>>> Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
>>>>>> changes l'orientatiion de la page. Le dimensionnement se code au niveau
>>>>>> du tableau, pas au niveau de la colonne.
>>>>>>
>>>>>> Sub MacroWord()
>>>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
>>>>>> 'Reference / Cocher "Microsoft Word xx.xx Library"
>>>>>> Dim NomDoc As String
>>>>>> 'Set wordobj = CreateObject("Word.Application")
>>>>>> Set wordobj = GetObject(, "Word.Application")
>>>>>> NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
>>>>>> Set mydoc =
>>>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument)
>>>>>> wordobj.ActiveWindow.ActivePane.View.SeekView =
>>>>>> wdSeekCurrentPageHeader
>>>>>> mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
>>>>>> NumColumns:= _
>>>>>> 7, DefaultTableBehavior:=wdWord9TableBehavior,
>>>>>> AutoFitBehavior:= _
>>>>>> wdAutoFitWindow
>>>>>> With wordobj.Selection
>>>>>> For i = 1 To 7
>>>>>> .TypeText Text:=Sheets("DCA").Cells(1, i).Value
>>>>>> If i < 7 Then .MoveRight Unit:=wdCell
>>>>>> Next i
>>>>>> .MoveLeft Unit:=wdCell, Count:=6
>>>>>> .Tables(1).Columns(1).PreferredWidthType =
>>>>>> wdPreferredWidthPoints
>>>>>> .Tables(1).Columns(1).PreferredWidth =
>>>>>> CentimetersToPoints(1.85)
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>>>> .Columns.PreferredWidth = CentimetersToPoints(3.01)
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>>>> .Columns.PreferredWidth = CentimetersToPoints(2.55)
>>>>>> .Move Unit:=wdColumn, Count:=1
>>>>>> .SelectColumn
>>>>>> .Columns.PreferredWidthType = wdPreferredWidthPoints
>>>>>> .Columns.PreferredWidth = CentimetersToPoints(1.85)
>>>>>> End With
>>>>>> wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
>>>>>> If NomDoc <> "" Then
>>>>>> mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
>>>>>> 'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
>>>>>> NomDoc
>>>>>> End If
>>>>>> wordobj.Visible = True
>>>>>> Set wordobj = Nothing
>>>>>> End Sub
>>>>>>
>>>>>> Daniel
>>>>>>
>>>>>>> oui c'est bien ça Daniel.
>>>>>>> pour les autres cellules, il faut qu'elle puisse se mettre à la taille
>>>>>>> automatiquement si jamais l'utilisateur met en mode paysage au lieu de
>>>>>>> portait (c'est à dire qu'elle se séparent en 3 l'espace disponible)..
>>>>>>> enfin si c'est possible bien sûr.
>>>>>>> Merci.
>>>>>>> YANN
>>>>>>>
>>>>>>> "Daniel.C" a écrit :
>>>>>>>
>>>>>>>> Juste une précision.
>>>>>>>> Pour la largeur des cellules d'entête sous Word, si je fais un prorata
>>>>>>>> des largeurs des cellules d'Excel que tu m'a fournies, avec les marges
>>>>>>>> standard gauche et droite de 2,5 cm, j'obtiens
>>>>>>>> - 1.85 cm
>>>>>>>> - 3.01 cm
>>>>>>>> - 2.55 cm
>>>>>>>> - 1.85 cm
>>>>>>>> respectivement pour les cellules A, B, F et G.
>>>>>>>> les largeurs des autres cellules étant à 2,32 cm
>>>>>>>> Peux-tu valider ceci ?
>>>>>>>> Daniel
>>>>>>>>
>>>>>>>>> Daniel,
>>>>>>>>> je préfère que ça se fasse sous Excel, oui.
>>>>>>>>> pour la bonne taille, je veux que les cellules du tableau occupent
>>>>>>>>> toute la largeur de la page. Cependant, certains critères :
>>>>>>>>> ** les dimensions dans Word de certaines colonnes devront être fixe
>>>>>>>>> colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
>>>>>>>>> ** les colonnes C, D et E, peut importe, en fait l'ajustement de la
>>>>>>>>> taille devra se faire sur ces 3 colonnes (la même taille peut être,
>>>>>>>>> pour plus de "beauté").
>>>>>>>>> ** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
>>>>>>>>> effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
>>>>>>>>> voici mon code actuel pour créer mon document Word :
>>>>>>>>> ---
>>>>>>>>> Sub MacroWord()
>>>>>>>>> 'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils
>>>>>>>>> / Reference / Cocher "Microsoft Word xx.xx Library"
>>>>>>>>> Dim NomDoc As String
>>>>>>>>> Set wordobj = CreateObject("Word.Application")
>>>>>>>>> 'Set wordobj = GetObject(, "Word.Application")
>>>>>>>>> NomDoc = InputBox("Entrez le nom du document Word à
>>>>>>>>> enregistrer") Set Mydoc =
>>>>>>>>> wordobj.documents.Add(documentType:=wdNewBlankDocument) If
>>>>>>>>> NomDoc <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" &
>>>>>>>>> NomDoc 'wordobj.activedocument.SaveAs ThisWorkbook.Path &
>>>>>>>>> "" & NomDoc End If
>>>>>>>>> wordobj.Visible = True
>>>>>>>>> Set wordobj = Nothing
>>>>>>>>> End Sub
>>>>>>>>> ------
>>>>>>>>> Merci
>>>>>>>>> YANN
>>>>>>>>>
>>>>>>>>> "Daniel.C" a écrit :
>>>>>>>>>
>>>>>>>>>> Bonjour.
>>>>>>>>>> Ca peut se faire avec une macro Word, mais la logique voudrait que,
>>>>>>>>>> sauf impossibilité, tu inclues les instructions dans ta macro Excel.
>>>>>>>>>> Quand tu parles de "la bonne taille", tu veux dire que les cellules
>>>>>>>>>> du tableau doivent occuper toute la largeur de la page ou qu'elles
>>>>>>>>>> doivent s'ajuster au texte ?
>>>>>>>>>> Poste ton code, ça sera plus facile.
>>>>>>>>>> Cordialement.
>>>>>>>>>> Daniel
>>>>>>>>>>
>>>>>>>>>>> Bonjour,
>>>>>>>>>>> j'ai une macro de mon classeur Excel qui me crée un nouveau
>>>>>>>>>>> document WORD. Une fois créé, comment insérer un en-tête dans ce
>>>>>>>>>>> document Word ? Cet en-tete est en fait une zone qui est dans
>>>>>>>>>>> Excel : feuille "DCA", de A1 à G7.
>>>>>>>>>>> De plus, il faudrait que l'en-tête se mette à la bonne taille
>>>>>>>>>>> automatiquement. ça se fait depuis les macros Excel ou Word?
>>>>>>>>>>> je pose aussi ma question sur le forum Word, au cas où.
>>>>>>>>>>> Merci.
>>>>>>>>>>> YANN
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
ok, alors il met un message d'erreur,
"erreur d execution '5151' : word n'a pas pu lire ce document; il est peut
être corrompu; essayer l'une ou plusieurs des opérations suivantes : - ouvrez
et reparer le fichier - ouvrez le fichier avec le convertisseur
Récupération de texte"
et bloque sur la macro à ce niveau là :
----
wordobj.documents.Add Template:= _
"G:COLLypaenteteYannPourDaniel.dot", NewTemplate:úlse, _
DocumentType:=0
-----
je ne comprend pas, je l'ai mis en .dot pourtant. quand je double clic, Word
l'ouvre parfaitement, sans message ....
????
Merci.
YANN
"Daniel.C" a écrit :Voici la macro. Il faut que tu enregistres le document Word comme
modèle (extension .xlt), dans un dossier que tu mettras dans la macro à
la place du mien; d'autre part, il faut que les cellules de l'entête
qui sont à remplir soient vides dans le modèle.
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
'Set wordobj = CreateObject("Word.Application")
Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
wordobj.documents.Add Template:= _
"E:DonneesDanielmpfeenteteYannPourDaniel.dot",
NewTemplate:úlse, _
DocumentType:=0
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
With wordobj.Selection
.MoveRight wdCell
.TypeText Text:=[DGA!B1].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G3].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B2].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B3].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G5].Value
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
NomDoc
End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
Danielvoici ma matrice Word.
http://cjoint.com/?lApSlQlhMN
j'espère que ça te va.
PS : pas de soucis pour le temps, c'est deja tres gentil et généreux de
prendre du temps pour mes questions, je ne vais pas non plus être demandeur
de productivité ... :°))
YANN
"Daniel.C" a écrit :Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
temps libre en ce moment. Sinon, Le plus simple serait de créer un
modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
n'y aurait plus qu'à remplir les cellules variables.
Penses-tu que ce soit possible ?
Danieldaniel,
je t'envoi le fichier avec mon en tete actuelle
http://cjoint.com/?lAo0jtJ2D5
tu verras, j'ai mis des commentaires, pour peut etre faire des
copier-coller, si c'est plus simple.
Merci de ton aide précieuse.
YANN
"Daniel.C" a écrit :Bon.
Les cellules fusionnées, c'est l'enfer !
D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
en faire un sacré paquet à mettre dans un entête, non. Il faut les
mettre sur combien de lignes. Si tu as des cellules fusionnées,
envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
sont. Je ne peux rien faire avant de l'avoir vu.
Danielsalut daniel,
ben, ça plante à
.TypeText Text:=Sheets("DCA").Cells(1, i).Value
en me mettant sur i, i= 3
je précise que la ligne 3 est fusionnée entre C et E, mais tout comme
la ligne 2, 4 et 5.
la ligne 1 est fusionnée de B à E.
je ne sais pas si ça joue.
YANN
"Daniel.C" a écrit :Regarde la macro ci-dessous.
Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
changes l'orientatiion de la page. Le dimensionnement se code au
niveau du tableau, pas au niveau de la colonne.
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils
/ 'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
'Set wordobj = CreateObject("Word.Application")
Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
Set mydoc =
wordobj.documents.Add(documentType:=wdNewBlankDocument)
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
NumColumns:= _
7, DefaultTableBehavior:=wdWord9TableBehavior,
AutoFitBehavior:= _
wdAutoFitWindow
With wordobj.Selection
For i = 1 To 7
.TypeText Text:=Sheets("DCA").Cells(1, i).Value
If i < 7 Then .MoveRight Unit:=wdCell
Next i
.MoveLeft Unit:=wdCell, Count:=6
.Tables(1).Columns(1).PreferredWidthType =
wdPreferredWidthPoints
.Tables(1).Columns(1).PreferredWidth =
CentimetersToPoints(1.85)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(3.01)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(2.55)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(1.85)
End With
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekMainDocument If NomDoc <> "" Then
mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
NomDoc
End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
Danieloui c'est bien ça Daniel.
pour les autres cellules, il faut qu'elle puisse se mettre à la
taille automatiquement si jamais l'utilisateur met en mode paysage
au lieu de portait (c'est à dire qu'elle se séparent en 3 l'espace
disponible).. enfin si c'est possible bien sûr.
Merci.
YANN
"Daniel.C" a écrit :Juste une précision.
Pour la largeur des cellules d'entête sous Word, si je fais un
prorata des largeurs des cellules d'Excel que tu m'a fournies, avec
les marges standard gauche et droite de 2,5 cm, j'obtiens
- 1.85 cm
- 3.01 cm
- 2.55 cm
- 1.85 cm
respectivement pour les cellules A, B, F et G.
les largeurs des autres cellules étant à 2,32 cm
Peux-tu valider ceci ?
DanielDaniel,
je préfère que ça se fasse sous Excel, oui.
pour la bonne taille, je veux que les cellules du tableau occupent
toute la largeur de la page. Cependant, certains critères :
** les dimensions dans Word de certaines colonnes devront être fixe
colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
** les colonnes C, D et E, peut importe, en fait l'ajustement de la
taille devra se faire sur ces 3 colonnes (la même taille peut
être, pour plus de "beauté").
** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
voici mon code actuel pour créer mon document Word :
---
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu /
Outils / Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
Set wordobj = CreateObject("Word.Application")
'Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à
enregistrer") Set Mydoc =
wordobj.documents.Add(documentType:=wdNewBlankDocument) If
NomDoc <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" &
NomDoc 'wordobj.activedocument.SaveAs ThisWorkbook.Path &
"" & NomDoc End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
------
Merci
YANN
"Daniel.C" a écrit :Bonjour.
Ca peut se faire avec une macro Word, mais la logique voudrait
que, sauf impossibilité, tu inclues les instructions dans ta
macro Excel. Quand tu parles de "la bonne taille", tu veux dire
que les cellules du tableau doivent occuper toute la largeur de
la page ou qu'elles doivent s'ajuster au texte ?
Poste ton code, ça sera plus facile.
Cordialement.
DanielBonjour,
j'ai une macro de mon classeur Excel qui me crée un nouveau
document WORD. Une fois créé, comment insérer un en-tête dans ce
document Word ? Cet en-tete est en fait une zone qui est dans
Excel : feuille "DCA", de A1 à G7.
De plus, il faudrait que l'en-tête se mette à la bonne taille
automatiquement. ça se fait depuis les macros Excel ou Word?
je pose aussi ma question sur le forum Word, au cas où.
Merci.
YANN
ok, alors il met un message d'erreur,
"erreur d execution '5151' : word n'a pas pu lire ce document; il est peut
être corrompu; essayer l'une ou plusieurs des opérations suivantes : - ouvrez
et reparer le fichier - ouvrez le fichier avec le convertisseur
Récupération de texte"
et bloque sur la macro à ce niveau là :
----
wordobj.documents.Add Template:= _
"G:COLLypaenteteYannPourDaniel.dot", NewTemplate:úlse, _
DocumentType:=0
-----
je ne comprend pas, je l'ai mis en .dot pourtant. quand je double clic, Word
l'ouvre parfaitement, sans message ....
????
Merci.
YANN
"Daniel.C" a écrit :
Voici la macro. Il faut que tu enregistres le document Word comme
modèle (extension .xlt), dans un dossier que tu mettras dans la macro à
la place du mien; d'autre part, il faut que les cellules de l'entête
qui sont à remplir soient vides dans le modèle.
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
'Set wordobj = CreateObject("Word.Application")
Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
wordobj.documents.Add Template:= _
"E:DonneesDanielmpfeenteteYannPourDaniel.dot",
NewTemplate:úlse, _
DocumentType:=0
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
With wordobj.Selection
.MoveRight wdCell
.TypeText Text:=[DGA!B1].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G3].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B2].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B3].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G5].Value
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
NomDoc
End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
Daniel
voici ma matrice Word.
http://cjoint.com/?lApSlQlhMN
j'espère que ça te va.
PS : pas de soucis pour le temps, c'est deja tres gentil et généreux de
prendre du temps pour mes questions, je ne vais pas non plus être demandeur
de productivité ... :°))
YANN
"Daniel.C" a écrit :
Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
temps libre en ce moment. Sinon, Le plus simple serait de créer un
modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
n'y aurait plus qu'à remplir les cellules variables.
Penses-tu que ce soit possible ?
Daniel
daniel,
je t'envoi le fichier avec mon en tete actuelle
http://cjoint.com/?lAo0jtJ2D5
tu verras, j'ai mis des commentaires, pour peut etre faire des
copier-coller, si c'est plus simple.
Merci de ton aide précieuse.
YANN
"Daniel.C" a écrit :
Bon.
Les cellules fusionnées, c'est l'enfer !
D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
en faire un sacré paquet à mettre dans un entête, non. Il faut les
mettre sur combien de lignes. Si tu as des cellules fusionnées,
envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
sont. Je ne peux rien faire avant de l'avoir vu.
Daniel
salut daniel,
ben, ça plante à
.TypeText Text:=Sheets("DCA").Cells(1, i).Value
en me mettant sur i, i= 3
je précise que la ligne 3 est fusionnée entre C et E, mais tout comme
la ligne 2, 4 et 5.
la ligne 1 est fusionnée de B à E.
je ne sais pas si ça joue.
YANN
"Daniel.C" a écrit :
Regarde la macro ci-dessous.
Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
changes l'orientatiion de la page. Le dimensionnement se code au
niveau du tableau, pas au niveau de la colonne.
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils
/ 'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
'Set wordobj = CreateObject("Word.Application")
Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
Set mydoc =
wordobj.documents.Add(documentType:=wdNewBlankDocument)
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
NumColumns:= _
7, DefaultTableBehavior:=wdWord9TableBehavior,
AutoFitBehavior:= _
wdAutoFitWindow
With wordobj.Selection
For i = 1 To 7
.TypeText Text:=Sheets("DCA").Cells(1, i).Value
If i < 7 Then .MoveRight Unit:=wdCell
Next i
.MoveLeft Unit:=wdCell, Count:=6
.Tables(1).Columns(1).PreferredWidthType =
wdPreferredWidthPoints
.Tables(1).Columns(1).PreferredWidth =
CentimetersToPoints(1.85)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(3.01)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(2.55)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(1.85)
End With
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekMainDocument If NomDoc <> "" Then
mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
NomDoc
End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
Daniel
oui c'est bien ça Daniel.
pour les autres cellules, il faut qu'elle puisse se mettre à la
taille automatiquement si jamais l'utilisateur met en mode paysage
au lieu de portait (c'est à dire qu'elle se séparent en 3 l'espace
disponible).. enfin si c'est possible bien sûr.
Merci.
YANN
"Daniel.C" a écrit :
Juste une précision.
Pour la largeur des cellules d'entête sous Word, si je fais un
prorata des largeurs des cellules d'Excel que tu m'a fournies, avec
les marges standard gauche et droite de 2,5 cm, j'obtiens
- 1.85 cm
- 3.01 cm
- 2.55 cm
- 1.85 cm
respectivement pour les cellules A, B, F et G.
les largeurs des autres cellules étant à 2,32 cm
Peux-tu valider ceci ?
Daniel
Daniel,
je préfère que ça se fasse sous Excel, oui.
pour la bonne taille, je veux que les cellules du tableau occupent
toute la largeur de la page. Cependant, certains critères :
** les dimensions dans Word de certaines colonnes devront être fixe
colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
** les colonnes C, D et E, peut importe, en fait l'ajustement de la
taille devra se faire sur ces 3 colonnes (la même taille peut
être, pour plus de "beauté").
** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
voici mon code actuel pour créer mon document Word :
---
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu /
Outils / Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
Set wordobj = CreateObject("Word.Application")
'Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à
enregistrer") Set Mydoc =
wordobj.documents.Add(documentType:=wdNewBlankDocument) If
NomDoc <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" &
NomDoc 'wordobj.activedocument.SaveAs ThisWorkbook.Path &
"" & NomDoc End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
------
Merci
YANN
"Daniel.C" a écrit :
Bonjour.
Ca peut se faire avec une macro Word, mais la logique voudrait
que, sauf impossibilité, tu inclues les instructions dans ta
macro Excel. Quand tu parles de "la bonne taille", tu veux dire
que les cellules du tableau doivent occuper toute la largeur de
la page ou qu'elles doivent s'ajuster au texte ?
Poste ton code, ça sera plus facile.
Cordialement.
Daniel
Bonjour,
j'ai une macro de mon classeur Excel qui me crée un nouveau
document WORD. Une fois créé, comment insérer un en-tête dans ce
document Word ? Cet en-tete est en fait une zone qui est dans
Excel : feuille "DCA", de A1 à G7.
De plus, il faudrait que l'en-tête se mette à la bonne taille
automatiquement. ça se fait depuis les macros Excel ou Word?
je pose aussi ma question sur le forum Word, au cas où.
Merci.
YANN
ok, alors il met un message d'erreur,
"erreur d execution '5151' : word n'a pas pu lire ce document; il est peut
être corrompu; essayer l'une ou plusieurs des opérations suivantes : - ouvrez
et reparer le fichier - ouvrez le fichier avec le convertisseur
Récupération de texte"
et bloque sur la macro à ce niveau là :
----
wordobj.documents.Add Template:= _
"G:COLLypaenteteYannPourDaniel.dot", NewTemplate:úlse, _
DocumentType:=0
-----
je ne comprend pas, je l'ai mis en .dot pourtant. quand je double clic, Word
l'ouvre parfaitement, sans message ....
????
Merci.
YANN
"Daniel.C" a écrit :Voici la macro. Il faut que tu enregistres le document Word comme
modèle (extension .xlt), dans un dossier que tu mettras dans la macro à
la place du mien; d'autre part, il faut que les cellules de l'entête
qui sont à remplir soient vides dans le modèle.
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
'Set wordobj = CreateObject("Word.Application")
Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
wordobj.documents.Add Template:= _
"E:DonneesDanielmpfeenteteYannPourDaniel.dot",
NewTemplate:úlse, _
DocumentType:=0
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
With wordobj.Selection
.MoveRight wdCell
.TypeText Text:=[DGA!B1].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G3].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B2].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B3].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G5].Value
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
NomDoc
End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
Danielvoici ma matrice Word.
http://cjoint.com/?lApSlQlhMN
j'espère que ça te va.
PS : pas de soucis pour le temps, c'est deja tres gentil et généreux de
prendre du temps pour mes questions, je ne vais pas non plus être demandeur
de productivité ... :°))
YANN
"Daniel.C" a écrit :Je vais essayer, mais ne sois pas trop pressé. Je n'ai pas trop de
temps libre en ce moment. Sinon, Le plus simple serait de créer un
modèle Word que tu appelerais au lieu d'ouvrir le modèle standard. Il
n'y aurait plus qu'à remplir les cellules variables.
Penses-tu que ce soit possible ?
Danieldaniel,
je t'envoi le fichier avec mon en tete actuelle
http://cjoint.com/?lAo0jtJ2D5
tu verras, j'ai mis des commentaires, pour peut etre faire des
copier-coller, si c'est plus simple.
Merci de ton aide précieuse.
YANN
"Daniel.C" a écrit :Bon.
Les cellules fusionnées, c'est l'enfer !
D'abord, j'ai seulement pris les cellules de A1 à G1. De A1 à G7, ça va
en faire un sacré paquet à mettre dans un entête, non. Il faut les
mettre sur combien de lignes. Si tu as des cellules fusionnées,
envoie-moi (sur cjoint) une feuille avec les cellules telles qu'elles
sont. Je ne peux rien faire avant de l'avoir vu.
Danielsalut daniel,
ben, ça plante à
.TypeText Text:=Sheets("DCA").Cells(1, i).Value
en me mettant sur i, i= 3
je précise que la ligne 3 est fusionnée entre C et E, mais tout comme
la ligne 2, 4 et 5.
la ligne 1 est fusionnée de B à E.
je ne sais pas si ça joue.
YANN
"Daniel.C" a écrit :Regarde la macro ci-dessous.
Je ne suis pas persuadé que le dimensionnement ne change pas quand tu
changes l'orientatiion de la page. Le dimensionnement se code au
niveau du tableau, pas au niveau de la colonne.
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils
/ 'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
'Set wordobj = CreateObject("Word.Application")
Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
Set mydoc =
wordobj.documents.Add(documentType:=wdNewBlankDocument)
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
mydoc.Tables.Add Range:=wordobj.Selection.Range, NumRows:=1,
NumColumns:= _
7, DefaultTableBehavior:=wdWord9TableBehavior,
AutoFitBehavior:= _
wdAutoFitWindow
With wordobj.Selection
For i = 1 To 7
.TypeText Text:=Sheets("DCA").Cells(1, i).Value
If i < 7 Then .MoveRight Unit:=wdCell
Next i
.MoveLeft Unit:=wdCell, Count:=6
.Tables(1).Columns(1).PreferredWidthType =
wdPreferredWidthPoints
.Tables(1).Columns(1).PreferredWidth =
CentimetersToPoints(1.85)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(3.01)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(2.55)
.Move Unit:=wdColumn, Count:=1
.SelectColumn
.Columns.PreferredWidthType = wdPreferredWidthPoints
.Columns.PreferredWidth = CentimetersToPoints(1.85)
End With
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekMainDocument If NomDoc <> "" Then
mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
'wordobj.activedocument.SaveAs ThisWorkbook.Path & "" &
NomDoc
End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
Danieloui c'est bien ça Daniel.
pour les autres cellules, il faut qu'elle puisse se mettre à la
taille automatiquement si jamais l'utilisateur met en mode paysage
au lieu de portait (c'est à dire qu'elle se séparent en 3 l'espace
disponible).. enfin si c'est possible bien sûr.
Merci.
YANN
"Daniel.C" a écrit :Juste une précision.
Pour la largeur des cellules d'entête sous Word, si je fais un
prorata des largeurs des cellules d'Excel que tu m'a fournies, avec
les marges standard gauche et droite de 2,5 cm, j'obtiens
- 1.85 cm
- 3.01 cm
- 2.55 cm
- 1.85 cm
respectivement pour les cellules A, B, F et G.
les largeurs des autres cellules étant à 2,32 cm
Peux-tu valider ceci ?
DanielDaniel,
je préfère que ça se fasse sous Excel, oui.
pour la bonne taille, je veux que les cellules du tableau occupent
toute la largeur de la page. Cependant, certains critères :
** les dimensions dans Word de certaines colonnes devront être fixe
colone A = 8, colonne B = 13, colonne F = 11 et colonne G = 8
** les colonnes C, D et E, peut importe, en fait l'ajustement de la
taille devra se faire sur ces 3 colonnes (la même taille peut
être, pour plus de "beauté").
** De plus, j'ai une valeur en C3 de mon tableau, celle-ci sera
effacée. ** Enfin, l'en-tête n'a pas à être verouillé.
voici mon code actuel pour créer mon document Word :
---
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu /
Outils / Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
Set wordobj = CreateObject("Word.Application")
'Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à
enregistrer") Set Mydoc =
wordobj.documents.Add(documentType:=wdNewBlankDocument) If
NomDoc <> "" Then Mydoc.SaveAs ThisWorkbook.Path & "" &
NomDoc 'wordobj.activedocument.SaveAs ThisWorkbook.Path &
"" & NomDoc End If
wordobj.Visible = True
Set wordobj = Nothing
End Sub
------
Merci
YANN
"Daniel.C" a écrit :Bonjour.
Ca peut se faire avec une macro Word, mais la logique voudrait
que, sauf impossibilité, tu inclues les instructions dans ta
macro Excel. Quand tu parles de "la bonne taille", tu veux dire
que les cellules du tableau doivent occuper toute la largeur de
la page ou qu'elles doivent s'ajuster au texte ?
Poste ton code, ça sera plus facile.
Cordialement.
DanielBonjour,
j'ai une macro de mon classeur Excel qui me crée un nouveau
document WORD. Une fois créé, comment insérer un en-tête dans ce
document Word ? Cet en-tete est en fait une zone qui est dans
Excel : feuille "DCA", de A1 à G7.
De plus, il faudrait que l'en-tête se mette à la bonne taille
automatiquement. ça se fait depuis les macros Excel ou Word?
je pose aussi ma question sur le forum Word, au cas où.
Merci.
YANN
J'ai trouvé un truc
j'ai mis ça à la fin :
-----
If NomDoc <> "" Then
'mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
End If
------
Et là, il m'ouvre un "Document1", et un "Machin", les 2 documents
identiques, sachant que moi je lui ais dis "Machin" comme nom du
document...... ????
De plus, y'a un petit soucis dans le collage des informations:
3 lignes me suffisent et y'en a 4.
B3 d'excel se colle dans mon Word en E3 au lieu de B3
G5 d'excel se colle dans mon Word en C4 au lieu de E3
YANN
J'ai trouvé un truc
j'ai mis ça à la fin :
-----
If NomDoc <> "" Then
'mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
End If
------
Et là, il m'ouvre un "Document1", et un "Machin", les 2 documents
identiques, sachant que moi je lui ais dis "Machin" comme nom du
document...... ????
De plus, y'a un petit soucis dans le collage des informations:
3 lignes me suffisent et y'en a 4.
B3 d'excel se colle dans mon Word en E3 au lieu de B3
G5 d'excel se colle dans mon Word en C4 au lieu de E3
YANN
J'ai trouvé un truc
j'ai mis ça à la fin :
-----
If NomDoc <> "" Then
'mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
End If
------
Et là, il m'ouvre un "Document1", et un "Machin", les 2 documents
identiques, sachant que moi je lui ais dis "Machin" comme nom du
document...... ????
De plus, y'a un petit soucis dans le collage des informations:
3 lignes me suffisent et y'en a 4.
B3 d'excel se colle dans mon Word en E3 au lieu de B3
G5 d'excel se colle dans mon Word en C4 au lieu de E3
YANN
Bonjour.
Désolé. J'ai un problème avec Createobject et Word. Je teste donc avec
GetObject. Normalement, je remets GetObject en commentaire. La
différence est que CreateObject crée une instance de Word alors que
GetObject nécessite que Word soit déjà démarré. Comme je teste avec
GetObject, Word, que j'ai ouvert manuellement a déjà un document
standard ouvert; ce qui fait que, une fois ton document fermé, le
document standard reste, lui, ouvert. Je ne peux pas savoir ce qu'il en
est avec CreateObject, faute de pouvoir tester. Pour pallier ceci, si
le document est enregistré, je quitte Word. Donc pour résumer, si Word
n'est pas démarré, tu utilises CreateObject sinon, utilise Getobject
(mais pas les deux).
Je n'ai pas testé l'enregistrement, c'est toi qui a fourni le code.
Content que tu aies trouvé la solution.
Enfin, j'ai rectifié le problème de l'entête (vérifie quand même) :
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
Set wordobj = CreateObject("Word.Application")
'Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
wordobj.documents.Add Template:= _
"E:DonneesDanielmpfeenteteYannPourDaniel.dot",
NewTemplate:úlse, _
DocumentType:=0
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
With wordobj.Selection
.MoveRight wdCell
.TypeText Text:=[DGA!B1].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G3].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B2].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B3].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G5].Value
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
wordobj.Quit
End If
Set wordobj = Nothing
End Sub
> J'ai trouvé un truc
> j'ai mis ça à la fin :
> -----
> If NomDoc <> "" Then
> 'mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
> wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
> End If
> ------
>
> Et là, il m'ouvre un "Document1", et un "Machin", les 2 documents
> identiques, sachant que moi je lui ais dis "Machin" comme nom du
> document...... ????
>
> De plus, y'a un petit soucis dans le collage des informations:
> 3 lignes me suffisent et y'en a 4.
> B3 d'excel se colle dans mon Word en E3 au lieu de B3
> G5 d'excel se colle dans mon Word en C4 au lieu de E3
>
> YANN
Bonjour.
Désolé. J'ai un problème avec Createobject et Word. Je teste donc avec
GetObject. Normalement, je remets GetObject en commentaire. La
différence est que CreateObject crée une instance de Word alors que
GetObject nécessite que Word soit déjà démarré. Comme je teste avec
GetObject, Word, que j'ai ouvert manuellement a déjà un document
standard ouvert; ce qui fait que, une fois ton document fermé, le
document standard reste, lui, ouvert. Je ne peux pas savoir ce qu'il en
est avec CreateObject, faute de pouvoir tester. Pour pallier ceci, si
le document est enregistré, je quitte Word. Donc pour résumer, si Word
n'est pas démarré, tu utilises CreateObject sinon, utilise Getobject
(mais pas les deux).
Je n'ai pas testé l'enregistrement, c'est toi qui a fourni le code.
Content que tu aies trouvé la solution.
Enfin, j'ai rectifié le problème de l'entête (vérifie quand même) :
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
Set wordobj = CreateObject("Word.Application")
'Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
wordobj.documents.Add Template:= _
"E:DonneesDanielmpfeenteteYannPourDaniel.dot",
NewTemplate:úlse, _
DocumentType:=0
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
With wordobj.Selection
.MoveRight wdCell
.TypeText Text:=[DGA!B1].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G3].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B2].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B3].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G5].Value
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
wordobj.Quit
End If
Set wordobj = Nothing
End Sub
> J'ai trouvé un truc
> j'ai mis ça à la fin :
> -----
> If NomDoc <> "" Then
> 'mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
> wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
> End If
> ------
>
> Et là, il m'ouvre un "Document1", et un "Machin", les 2 documents
> identiques, sachant que moi je lui ais dis "Machin" comme nom du
> document...... ????
>
> De plus, y'a un petit soucis dans le collage des informations:
> 3 lignes me suffisent et y'en a 4.
> B3 d'excel se colle dans mon Word en E3 au lieu de B3
> G5 d'excel se colle dans mon Word en C4 au lieu de E3
>
> YANN
Bonjour.
Désolé. J'ai un problème avec Createobject et Word. Je teste donc avec
GetObject. Normalement, je remets GetObject en commentaire. La
différence est que CreateObject crée une instance de Word alors que
GetObject nécessite que Word soit déjà démarré. Comme je teste avec
GetObject, Word, que j'ai ouvert manuellement a déjà un document
standard ouvert; ce qui fait que, une fois ton document fermé, le
document standard reste, lui, ouvert. Je ne peux pas savoir ce qu'il en
est avec CreateObject, faute de pouvoir tester. Pour pallier ceci, si
le document est enregistré, je quitte Word. Donc pour résumer, si Word
n'est pas démarré, tu utilises CreateObject sinon, utilise Getobject
(mais pas les deux).
Je n'ai pas testé l'enregistrement, c'est toi qui a fourni le code.
Content que tu aies trouvé la solution.
Enfin, j'ai rectifié le problème de l'entête (vérifie quand même) :
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
Set wordobj = CreateObject("Word.Application")
'Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
wordobj.documents.Add Template:= _
"E:DonneesDanielmpfeenteteYannPourDaniel.dot",
NewTemplate:úlse, _
DocumentType:=0
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
With wordobj.Selection
.MoveRight wdCell
.TypeText Text:=[DGA!B1].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G3].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B2].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B3].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G5].Value
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
wordobj.Quit
End If
Set wordobj = Nothing
End Sub
> J'ai trouvé un truc
> j'ai mis ça à la fin :
> -----
> If NomDoc <> "" Then
> 'mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
> wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
> End If
> ------
>
> Et là, il m'ouvre un "Document1", et un "Machin", les 2 documents
> identiques, sachant que moi je lui ais dis "Machin" comme nom du
> document...... ????
>
> De plus, y'a un petit soucis dans le collage des informations:
> 3 lignes me suffisent et y'en a 4.
> B3 d'excel se colle dans mon Word en E3 au lieu de B3
> G5 d'excel se colle dans mon Word en C4 au lieu de E3
>
> YANN
Ouais, nikel, sauf qu'il n'ouvre pas le document Word comme il le faisait
avant, et comme tu me le précise.
pour palier ce pb, on pourrais ptèt lancer Word au tout début, juste
l'application et après utiliser GetObject , non ???
Merci YANN
"Daniel.C" a écrit :Bonjour.
Désolé. J'ai un problème avec Createobject et Word. Je teste donc avec
GetObject. Normalement, je remets GetObject en commentaire. La
différence est que CreateObject crée une instance de Word alors que
GetObject nécessite que Word soit déjà démarré. Comme je teste avec
GetObject, Word, que j'ai ouvert manuellement a déjà un document
standard ouvert; ce qui fait que, une fois ton document fermé, le
document standard reste, lui, ouvert. Je ne peux pas savoir ce qu'il en
est avec CreateObject, faute de pouvoir tester. Pour pallier ceci, si
le document est enregistré, je quitte Word. Donc pour résumer, si Word
n'est pas démarré, tu utilises CreateObject sinon, utilise Getobject
(mais pas les deux).
Je n'ai pas testé l'enregistrement, c'est toi qui a fourni le code.
Content que tu aies trouvé la solution.
Enfin, j'ai rectifié le problème de l'entête (vérifie quand même) :
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
Set wordobj = CreateObject("Word.Application")
'Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
wordobj.documents.Add Template:= _
"E:DonneesDanielmpfeenteteYannPourDaniel.dot",
NewTemplate:úlse, _
DocumentType:=0
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
With wordobj.Selection
.MoveRight wdCell
.TypeText Text:=[DGA!B1].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G3].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B2].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B3].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G5].Value
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
wordobj.Quit
End If
Set wordobj = Nothing
End SubJ'ai trouvé un truc
j'ai mis ça à la fin :
-----
If NomDoc <> "" Then
'mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
End If
------
Et là, il m'ouvre un "Document1", et un "Machin", les 2 documents
identiques, sachant que moi je lui ais dis "Machin" comme nom du
document...... ????
De plus, y'a un petit soucis dans le collage des informations:
3 lignes me suffisent et y'en a 4.
B3 d'excel se colle dans mon Word en E3 au lieu de B3
G5 d'excel se colle dans mon Word en C4 au lieu de E3
YANN
Ouais, nikel, sauf qu'il n'ouvre pas le document Word comme il le faisait
avant, et comme tu me le précise.
pour palier ce pb, on pourrais ptèt lancer Word au tout début, juste
l'application et après utiliser GetObject , non ???
Merci YANN
"Daniel.C" a écrit :
Bonjour.
Désolé. J'ai un problème avec Createobject et Word. Je teste donc avec
GetObject. Normalement, je remets GetObject en commentaire. La
différence est que CreateObject crée une instance de Word alors que
GetObject nécessite que Word soit déjà démarré. Comme je teste avec
GetObject, Word, que j'ai ouvert manuellement a déjà un document
standard ouvert; ce qui fait que, une fois ton document fermé, le
document standard reste, lui, ouvert. Je ne peux pas savoir ce qu'il en
est avec CreateObject, faute de pouvoir tester. Pour pallier ceci, si
le document est enregistré, je quitte Word. Donc pour résumer, si Word
n'est pas démarré, tu utilises CreateObject sinon, utilise Getobject
(mais pas les deux).
Je n'ai pas testé l'enregistrement, c'est toi qui a fourni le code.
Content que tu aies trouvé la solution.
Enfin, j'ai rectifié le problème de l'entête (vérifie quand même) :
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
Set wordobj = CreateObject("Word.Application")
'Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
wordobj.documents.Add Template:= _
"E:DonneesDanielmpfeenteteYannPourDaniel.dot",
NewTemplate:úlse, _
DocumentType:=0
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
With wordobj.Selection
.MoveRight wdCell
.TypeText Text:=[DGA!B1].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G3].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B2].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B3].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G5].Value
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
wordobj.Quit
End If
Set wordobj = Nothing
End Sub
J'ai trouvé un truc
j'ai mis ça à la fin :
-----
If NomDoc <> "" Then
'mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
End If
------
Et là, il m'ouvre un "Document1", et un "Machin", les 2 documents
identiques, sachant que moi je lui ais dis "Machin" comme nom du
document...... ????
De plus, y'a un petit soucis dans le collage des informations:
3 lignes me suffisent et y'en a 4.
B3 d'excel se colle dans mon Word en E3 au lieu de B3
G5 d'excel se colle dans mon Word en C4 au lieu de E3
YANN
Ouais, nikel, sauf qu'il n'ouvre pas le document Word comme il le faisait
avant, et comme tu me le précise.
pour palier ce pb, on pourrais ptèt lancer Word au tout début, juste
l'application et après utiliser GetObject , non ???
Merci YANN
"Daniel.C" a écrit :Bonjour.
Désolé. J'ai un problème avec Createobject et Word. Je teste donc avec
GetObject. Normalement, je remets GetObject en commentaire. La
différence est que CreateObject crée une instance de Word alors que
GetObject nécessite que Word soit déjà démarré. Comme je teste avec
GetObject, Word, que j'ai ouvert manuellement a déjà un document
standard ouvert; ce qui fait que, une fois ton document fermé, le
document standard reste, lui, ouvert. Je ne peux pas savoir ce qu'il en
est avec CreateObject, faute de pouvoir tester. Pour pallier ceci, si
le document est enregistré, je quitte Word. Donc pour résumer, si Word
n'est pas démarré, tu utilises CreateObject sinon, utilise Getobject
(mais pas les deux).
Je n'ai pas testé l'enregistrement, c'est toi qui a fourni le code.
Content que tu aies trouvé la solution.
Enfin, j'ai rectifié le problème de l'entête (vérifie quand même) :
Sub MacroWord()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Outils /
'Reference / Cocher "Microsoft Word xx.xx Library"
Dim NomDoc As String
Set wordobj = CreateObject("Word.Application")
'Set wordobj = GetObject(, "Word.Application")
NomDoc = InputBox("Entrez le nom du document Word à enregistrer")
wordobj.documents.Add Template:= _
"E:DonneesDanielmpfeenteteYannPourDaniel.dot",
NewTemplate:úlse, _
DocumentType:=0
wordobj.ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageHeader
With wordobj.Selection
.MoveRight wdCell
.TypeText Text:=[DGA!B1].Value
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G3].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B2].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G4].Value
.MoveRight wdCell, 2
.TypeText Text:=CStr([DGA!B3].Value)
.MoveRight wdCell, 3
.TypeText Text:=[DGA!G5].Value
End With
wordobj.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
If NomDoc <> "" Then
wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
wordobj.Quit
End If
Set wordobj = Nothing
End SubJ'ai trouvé un truc
j'ai mis ça à la fin :
-----
If NomDoc <> "" Then
'mydoc.SaveAs ThisWorkbook.Path & "" & NomDoc
wordobj.ActiveDocument.SaveAs ThisWorkbook.Path & "" & NomDoc
End If
------
Et là, il m'ouvre un "Document1", et un "Machin", les 2 documents
identiques, sachant que moi je lui ais dis "Machin" comme nom du
document...... ????
De plus, y'a un petit soucis dans le collage des informations:
3 lignes me suffisent et y'en a 4.
B3 d'excel se colle dans mon Word en E3 au lieu de B3
G5 d'excel se colle dans mon Word en C4 au lieu de E3
YANN