VBA:Justifier un copier-coller d'exl vers wrd

Résolu/Fermé
Mr_Flush Messages postés 8 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 30 juillet 2010 - 19 juil. 2010 à 11:58
Mr_Flush Messages postés 8 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 30 juillet 2010 - 30 juil. 2010 à 09:19
Bonjour à tous,

J'ai crée un petit programme sous VBA (version Excel), qui a pour but principal de copier à partir d'un classeur excel les cases de mon choix et de les coller dans un nouveau document word créé pour l'occasion. Chaque case excel contient un titre et plusieurs paragraphes, j'ai effectué les retours chariot avec [alt]+[entrée].

Je voudrais que lors du collage dans le fichier excel, les paragraphes soient justifiés. J'ai utilisé la commande wdAlignParagraphJustify qui fonctionne correctement, mais un problème apparaît: En collant, Word justifie absolument tout (i.e. même s'il n'y a que deux mots dans une ligne de la case Excel, en collant sur le fichier Word ces deux mots prendront toute la ligne).

Cela semble venir du fait que alt+entrée ne soit pas considéré sous word comme un retour chariot puisqu'en cliquant sur Afficher/masquer je n'ai pas de ¶ entre les paragraphes mais une flèche de retour à la ligne (du type de celle dessinée sur la touche entrée du clavier). Du coup word justifie tout.

Auriez-vous une solution pour pouvoir justifier "normalement", c'est à dire ni les titres, ni les fins de paragraphes? J'espère avoir été clair.

En vous remerciant,
Mr_Flush

4 réponses

Mr_Flush Messages postés 8 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 30 juillet 2010
23 juil. 2010 à 15:29
Je up un peu, désolé :/.

Peut-être me suis-je mal exprimer, ou ai-je mis mon post dans un mauvais forum?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
23 juil. 2010 à 16:50
Salut,
Non tu t'es très bien exprimé. Cependant, je ne trouve pas vraiment de solutions, et je ne dois pas être le seul...
Voici les différentes propriétés d'alignement :
wdAlignParagraphCenter Aligné au centre.
wdAlignParagraphDistribute Les caractères du paragraphe sont distribués équitablement pour remplir toute la largeur du paragraphe.
wdAlignParagraphJustify Totalement justifié.
wdAlignParagraphJustifyHi Justifié avec un rapport élévé de compression de caractères.
wdAlignParagraphJustifyLow Justifié avec un faible rapport de compression de caractères.
wdAlignParagraphJustifyMed Justifié avec un rapport moyen de compression de caractères.
wdAlignParagraphLeft Aligné à gauche.
wdAlignParagraphRight Aligné à droite.
essaye peut être (si ce n'est déjà fait) les Hi, Low ou Med, juste pour voir si cela change...
trouvées ici

Il faudrait que tu nous copie/colle tout ton code ici, juste pour voir si quelqu'un comprends quelque chose, ou pour voir s'il n'y a pas une autre solution : copier/coller tes titres en alignements à gauche puis tes paragraphes (ça n'est qu'une piste...)

Pour moi, je serais de retour lundi et constaterait l'avancée, ou non, des travaux...
Bon week end
0
Mr_Flush Messages postés 8 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 30 juillet 2010
27 juil. 2010 à 14:55
Désolé je viens également de rentrer. En tout cas merci pour la réponse.

J'ai eu un instant une lueur d'espoir car je ne connaissais pas la fonction wdAlignParagraphDistribute, mais cela n'a malheureusement pas réglé le problème (d'ailleurs je ne vois pas de différence entre Distribute et Justify, en tout cas pas pour mon cas).

Voici un extrait de mon code, je n'ai mis que ce qui je pense pourrait être utile:

Module principal
Public appWrd As Word.Application 'Crée le document word
Public docWrd As Word.Document
Public Auto As Boolean

Sub Traitement_Exigences_Clients()
    Set appWrd = CreateObject("Word.Application")
    Set docWrd = appWrd.Documents.Open(ThisWorkbook.Path & "\Masque_Exigences_Clients.doc")
    Dim NomDoc As String
    NomDoc = InputBox("Comment souhaitez-vous appelez votre fichier?"
    docWrd.SaveAs (ThisWorkbook.Path & "\" & NomDoc & ".doc")
End sub


Autre module
    If CheckBox3 = True Then
        Range("A5").Select
        Selection.Copy
        appWrd.Selection.PasteSpecial Placement:=wdFloatOverText
    End If 'Il y a une vingtaine de checkbox comme cela qui copient et collent sous word si la checkbox renvoie true

    docWrd.Paragraphs.Alignment = wdAlignParagraphJustifyMed
    Application.CutCopyMode = False
    appWrd.Visible = True
    appWrd.Activate
    Me.Hide
End
End Sub


Voila. Dans la case "A5" en question ici, il y a un titre, et plusieurs paragraphes. Le nombre de paragraphes étant variable dans les différentes cellules que je souhaite coller, je ne peux pas vraiment mettre le titre dans une cellule où le copié-collé se ferais avec un alignement à gauche, et les paragraphes dans une autre cellule où le collage se ferait en justifiant. Et de toute façon cela ne règlerait pas le problème de la fin des paragraphes qui se justifie tout seul..

Bref, je ne m'en sors pas ! N'y aurait-il pas juste moyen d'effectuer sous excel des retour chariots qui soient compris en tant que tels par word?
0
Mr_Flush Messages postés 8 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 30 juillet 2010
27 juil. 2010 à 14:59
En fait je m'étais trompé, il y a effectivement une grande différence entre Justify et Distribute. Cela dit, ce n'est pas ce que je veux non plus ^^
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
27 juil. 2010 à 15:38
Salut,
Malheureusement, je ne vois pas comment t'aider davantage.
As tu essayé toutes les possibilités (hi, med, low) ?
Sinon peut être justifier sous excel avant de transférer sous word :
If CheckBox3 = True Then
        Range("A5").Select
    With Selection
        .HorizontalAlignment = xlJustify
    End With
        Selection.Copy
        appWrd.Selection.PasteSpecial Placement:=wdFloatOverText
    End If
0
Mr_Flush Messages postés 8 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 30 juillet 2010
Modifié par Mr_Flush le 27/07/2010 à 16:25
Oui j'ai bien essayé tout ça.
Justifier sous excel est une bone idée, mais malheureusement le copier coller n'a pas l'air de garder l'alignement du texte (bizarre puisque mon titre en gras sous excel reste en gras sous word...). J'ai essayé de trouver un type de copier coller qui garderait le formatage (ou au minimum l'alignement), mais sans succès :/.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
27 juil. 2010 à 16:50
Alors essayer de copier coller comme ceci :
If CheckBox3 = True Then
        Range("A5").Select
    With Selection
        .HorizontalAlignment = xlJustify
    End With
        Selection.Copy
        appWrd.Selection.Paste
    End If
0
Mr_Flush Messages postés 8 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 30 juillet 2010
29 juil. 2010 à 11:35
Rien n'y fait :/. Ca paraît tellement simple comme ça.. c'est fou de ne pas trouver de solutions!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
29 juil. 2010 à 11:46
Bon. Au lieu de traiter le problème par Excel, essayons de le traiter par Word...
J'ai trouvé ici une solution qui consiste à :
Ce que tu décris semble provenir non pas d'un retour à la ligne avec
fin de paragraphe (touche ) mais plustôt de la touche Maj+
Si c'est le cas, voici ce qu'il faut faire.
Word : Outils/Options... [Compatibilité]
Cocher l'option : Etirer les espaces des lignes finissant par
Maj+RETOUR

Essaye et tiens nous au courant...
0
Mr_Flush Messages postés 8 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 30 juillet 2010
29 juil. 2010 à 16:31
A priori......... Ca marche! :)
Du coup même plus besoin d'utiliser wdAlignParagraphMed, à partir du moment où le document word est initialisé en mode justifié.

Conclusion: Quand un problème reste sans réponse, changer de point de vue! Merci beaucoup pour le temps passé, tout le monde n'aurait pas fait ça:).
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
29 juil. 2010 à 16:34
Et ben j't'assure ça fait plaisir!!
Honnêtement, quand j'ai pris ce sujet, je n'y croyais pas moi même...
Quant à : tout le monde n'aurait pas fait ça tu serais surppris de cela. Ce site est fait pour cela et bon nombre de ces membres ne "lâchent pas l'affaire" comme on dit.
Bonne fin de journée.
0