IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Manipulation de Deux Documents Word Via Une Macro


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 53
    Points : 27
    Points
    27
    Par défaut Manipulation de Deux Documents Word Via Une Macro
    Bonjours à Tous
    j'ai créé une macro qui réalise un traitement que j'ai posté ce que je souhaite c'est que ce traitement s'exécute à l'aide d'une boucle jusqu’à l'atteindre la fin de document
    Mon code utilisé dans la macro est le suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    ' Ouverture du 1er Fichier Pour Copier Son Contenu Dans un Autre il contient une entête
     
        ChangeFileOpenDirectory "E:\Donnees_Notaire\Fichier_Doc\Formalite\"
        Documents.Open FileName:="mod_forme.doc", ConfirmConversions:=False, _
        ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="", _
        DocumentDirection:=wdRightToLeft
        ActiveDocument.SaveAs FileName:="source.doc", FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
     
        ' Ouverture du Fichier Principal qui contient un tableau de deux colonnes
        ' son centenu est dans la colonne de Gauche l'autre colonne est vide
        ' Je selectionne un certaine nombre de lignes
     
        ChangeFileOpenDirectory "E:\Donnees_Notaire\Fichier_Doc\Actes_Etablis\"
        Documents.Open FileName:="Destination.doc", ConfirmConversions:=False, _
        ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="", _
        DocumentDirection:=wdRightToLeft
        Selection.MoveLeft Unit:=wdCharacter, Count:=2
        Selection.MoveDown Unit:=wdLine, Count:=1
        Selection.HomeKey Unit:=wdStory
        Selection.MoveLeft Unit:=wdCharacter, Count:=1
        Selection.MoveRight Unit:=wdCharacter, Count:=1
        Selection.MoveDown Unit:=wdLine, Count:=4, Extend:=wdExtend
        Selection.EndKey Unit:=wdLine, Extend:=wdExtend
        Selection.MoveDown Unit:=wdLine, Count:=24, Extend:=wdExtend
        Selection.Copy
     
        ' J'ouvre le fichier de déstination je crée un tableau de Deux colonne
        ' avec les mêmes paramètres du tableau que j'ai selectionner auparavant
        ' Je colle ma selection dans la colonne de gauche
     
        ChangeFileOpenDirectory "E:\Donnees_Notaire\Fichier_Doc\Formalite\"
        Documents.Open FileName:="08582020.doc", ConfirmConversions:=False, _
        ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="", _
        DocumentDirection:=wdRightToLeft
        Selection.EndKey Unit:=wdStory
        Selection.TypeParagraph
        ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:= _
            2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
            wdAutoFitFixed
        With Selection.Tables(1)
            If .Style <> "Grille du tableau" Then
                .Style = "Grille du tableau"
            End If
            .ApplyStyleHeadingRows = True
            .ApplyStyleLastRow = False
            .ApplyStyleFirstColumn = True
            .ApplyStyleLastColumn = False
            .ApplyStyleRowBands = True
            .ApplyStyleColumnBands = False
        End With
        Selection.Tables(1).Select
        Selection.Tables(1).Rows.LeftIndent = CentimetersToPoints(0.29)
        Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
        Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
        Selection.MoveRight Unit:=wdCharacter, Count:=1
        Selection.MoveUp Unit:=wdLine, Count:=1
        Selection.MoveRight Unit:=wdCharacter, Count:=1
        Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        Selection.Columns.PreferredWidthType = wdPreferredWidthPoints
        Selection.Columns.PreferredWidth = CentimetersToPoints(12.25)
        Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
        Selection.MoveLeft Unit:=wdCharacter, Count:=2
        Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        Selection.Columns.PreferredWidthType = wdPreferredWidthPoints
        Selection.Columns.PreferredWidth = CentimetersToPoints(4)
        Selection.MoveRight Unit:=wdCharacter, Count:=1
        Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        Selection.PasteAndFormat (wdPasteDefault)
        ActiveDocument.Save
        ' je revient au fichier Source pour une Nouvelle Selection
        ' a partir de l'endroit ou je me suis arréte
     
        ChangeFileOpenDirectory "E:\Donnees_Notaire\Fichier_Doc\Actes_Etablis\"
        Documents.Open FileName:="08582020.doc", ConfirmConversions:=False, _
        ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="", _
        DocumentDirection:=wdRightToLeft
        Selection.MoveDown Unit:=wdLine, Count:=1
        Selection.HomeKey Unit:=wdLine
        Selection.MoveDown Unit:=wdLine, Count:=43, Extend:=wdExtend
        Selection.Copy
     
        ' J'ouvre le fichier de déstination je crée un tableau de Deux colonne
        ' avec les mêmes paramètres du tableau que j'ai selectionner auparavant
        ' Je colle ma selection dans la colonne de Droite
     
        ChangeFileOpenDirectory "E:\Donnees_Notaire\Fichier_Doc\Formalite\"
        Documents.Open FileName:="08582020.doc", ConfirmConversions:=False, _
        ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="", _
        DocumentDirection:=wdRightToLeft
        Selection.MoveDown Unit:=wdLine, Count:=1
        Selection.TypeParagraph
        ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:= _
        2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed
        With Selection.Tables(1)
            If .Style <> "Grille du tableau" Then
                .Style = "Grille du tableau"
            End If
            .ApplyStyleHeadingRows = True
            .ApplyStyleLastRow = False
            .ApplyStyleFirstColumn = True
            .ApplyStyleLastColumn = False
            .ApplyStyleRowBands = True
            .ApplyStyleColumnBands = False
        End With
        Selection.Tables(1).Select
        Selection.Tables(1).Rows.LeftIndent = CentimetersToPoints(-2.71)
        Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
        Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
        Selection.MoveLeft Unit:=wdCharacter, Count:=1
        Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        Selection.MoveRight Unit:=wdCharacter, Count:=1
        Selection.MoveUp Unit:=wdLine, Count:=1
        Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        Selection.Columns.PreferredWidthType = wdPreferredWidthPoints
        Selection.Columns.PreferredWidth = CentimetersToPoints(4)
        Selection.MoveLeft Unit:=wdCharacter, Count:=2
        Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        Selection.Columns.PreferredWidthType = wdPreferredWidthPoints
        Selection.Columns.PreferredWidth = CentimetersToPoints(12.25)
        Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
        Selection.PasteAndFormat (wdPasteDefault)
        ActiveDocument.Save
     
     
        ActiveDocument.Close
        ActiveDocument.Close
    End Sub
    si quelqu'un peut m'aider je serais reconnaissante
    @+

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 53
    Points : 27
    Points
    27
    Par défaut Documents Word Via Une Macro
    Bonjours à tous
    Est ce qu'il y a quelqu'un au bout du fil ????

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par yacine1 Voir le message
    Bonjour,

    Difficile de comprendre votre problème.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 53
    Points : 27
    Points
    27
    Par défaut manipulation de macro
    Bonjours
    avant tous je vous remercie de vôtre réponse qui est pertinente j'explique mon problème
    j'ai 02 fichiers word le premier FichierSource.Doc contient un tableau de 02 colonnes dont la colonne de gauche est remplis et la colonne de droite est vide
    1- ce que je souhaite réaliser c'est que je sélectionne un certaine nombre de lignes par exemple 20 lignes
    2- j'ouvre le deuxième fichier word FichierDestination.Doc je crée un tableau avec 02 colonnes
    3- Je colle ma sélection dans la colonne droite du tableau
    4- Je revient au premier fichier FichierSource.Doc je sélectionne la suite des lignes de la colonne droite par exemple 30 lignes
    5- j'ouvre le deuxième fichier word FichierDestination.Doc je crée un tableau avec 02 colonnes
    6- Je colle ma sélection dans la colonne gauche du tableau
    Mon Problème est que je n'arrive pas a boucler jusqu’à la fin du document FichierSource.Doc pour réaliser les étapes 1---6
    j 'espère que j'ai résumer mon problème

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par yacine1 Voir le message
    Bonjour,

    • Pourquoi dans un premier temps, vous sélectionnez et copiez 20 lignes et 30 dans dans le deuxième ?
    • Pourquoi 20 lignes ? Pourquoi 30 lignes ?
    • A quel moment, savez vous que vous allez sélectionner 20, puis 30 lignes ? C'est là que ce n'est pas clair, car si vous savez que vous collez 30 lignes dans le second temps, vous devriez créer un tableau de 30 lignes dans le premier.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 53
    Points : 27
    Points
    27
    Par défaut manipulation de macro
    Bonjours
    Encore merci de vôtre attention en ce qui concerne vôs questions concernant le nombre de lignes le nombre ici n'a pas d'importance j'ai seulement donner un exemple pourvu que je sélectionne une partie de quelques lignes c'est tout le problème que je rencontre c'est comment coller cette sélection dans le fichierDestination.Doc et ensuite je revient sur le fichierSource.Doc et je continue la sélection en répétant la même chose jusqu'à la fin du document en précisant que le coller doit être alterné un coups dans la colonne gauche et d'autre dans la colonne de droite
    je souhaite que j'été claire
    @+

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par yacine1 Voir le message
    Parmi les solutions possibles, une de celles que je verrais, consisterait à utiliser un Userform en mode modeless, c'est à dire qu'il est toujours possible de naviguer dans le fichier et de réaliser des sélections. Ce userform permettrait de définir à l'aide d'un champ de type OptionButton, l'endroit où sera collée la sélection (colonnes de droite ou de gauche) et de valider le collage et de changer la nouvelle colonne de sélection.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 53
    Points : 27
    Points
    27
    Par défaut manipulation de macro
    Bonjours;
    Désolé pour le retard en ce qui concerne le UserForm je n'ai pas besoin car le traitement que je voulais démarre à partir d'un bouton si je Click dessus le lancement de la macro exécute le traitement que je souhaite c-a-d l'utilisateur de l'application Click sur le bouton et la macro se lance automatiquement
    Ma Macro est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    Sub MacroRemplir02()
     
    Dim NbrPages As Integer
    Dim PageEncours As Integer
    Dim flag As Boolean
     
        ChangeFileOpenDirectory "E:\Donnees\Fichier_Doc\Actes_Etablis\"
        Documents.Open FileName:="FichierSource.doc", ConfirmConversions:=False, _
        ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="", _
        DocumentDirection:=wdRightToLeft
        'NbrPages = Selection.Information(wdNumberOfPagesInDocument)
        ActiveDocument.Bookmarks("\endofdoc").Select
        NbrPages = Selection.Information(wdActiveEndPageNumber)
     
     
        '------------------------------------------------------------------------------------
     
        ChangeFileOpenDirectory "E:\Donnees\Fichier_Doc\Forme\"
        Documents.Open FileName:="mod_forme.doc", ConfirmConversions:=False, _
        ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="", _
        DocumentDirection:=wdRightToLeft
        ActiveDocument.SaveAs FileName:="FichierDestination.doc", FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
     
        '------------------------- DEBUT DE LA BOUCLE -----------------------------
        flag = False
        While flag = False
            ChangeFileOpenDirectory "E:\Donnees\Fichier_Doc\Actes_Etablis\"
            Documents.Open FileName:="FichierSource.doc", ConfirmConversions:=False, _
            ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
            PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
            WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="", _
            DocumentDirection:=wdRightToLeft
            Selection.MoveRight Unit:=wdCharacter, Count:=1
            Selection.MoveDown Unit:=wdLine, Count:=3, Extend:=wdExtend
            Selection.EndKey Unit:=wdLine, Extend:=wdExtend
            Selection.MoveDown Unit:=wdLine, Count:=16, Extend:=wdExtend
            Selection.Copy
            'NbrPages = ActiveDocument.ActiveWindow.Panes(1).Pages.Count
     
            PageEncours = Selection.Information(wdActiveEndPageNumber)
            If PageEncours <= NbrPages Then flag = True
     
     
     
            '--------------------------------------------------------------------------------
     
            ChangeFileOpenDirectory "E:\Donnees\Fichier_Doc\Forme\"
            Documents.Open FileName:="FichierDestination.doc", ConfirmConversions:=False, _
            ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
            PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
            WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="", _
            DocumentDirection:=wdRightToLeft
            Selection.EndKey Unit:=wdStory
            Selection.TypeParagraph
            ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:= _
            2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
            wdAutoFitFixed
            With Selection.Tables(1)
                If .Style <> "Grille du tableau" Then
                    .Style = "Grille du tableau"
                End If
                .ApplyStyleHeadingRows = True
                .ApplyStyleLastRow = False
                .ApplyStyleFirstColumn = True
                .ApplyStyleLastColumn = False
                .ApplyStyleRowBands = True
                .ApplyStyleColumnBands = False
            End With
            Selection.Tables(1).Select
            Selection.Tables(1).Rows.LeftIndent = CentimetersToPoints(0.29)
            Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
            Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
            Selection.MoveRight Unit:=wdCharacter, Count:=1
            Selection.MoveUp Unit:=wdLine, Count:=1
            Selection.MoveRight Unit:=wdCharacter, Count:=1
            Selection.SelectColumn
            Selection.Columns.PreferredWidthType = wdPreferredWidthPoints
            Selection.Columns.PreferredWidth = CentimetersToPoints(12)
            Selection.MoveLeft Unit:=wdCharacter, Count:=2
            Selection.MoveRight Unit:=wdCharacter, Count:=1
            Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
            Selection.MoveLeft Unit:=wdCharacter, Count:=1
            Selection.SelectColumn
            Selection.Columns.PreferredWidthType = wdPreferredWidthPoints
            Selection.Columns.PreferredWidth = CentimetersToPoints(4)
            Selection.MoveRight Unit:=wdCharacter, Count:=1
            Selection.SelectColumn
            Selection.PasteAndFormat (wdPasteDefault)
            Selection.SelectColumn
            With Selection.ParagraphFormat
                .LeftIndent = CentimetersToPoints(0)
                .SpaceBefore = 0
                .SpaceBeforeAuto = False
                .SpaceAfter = 0
                .SpaceAfterAuto = False
                .LineSpacingRule = wdLineSpaceExactly
                .LineSpacing = 14
                .WidowControl = True
                .KeepTogether = False
                .PageBreakBefore = False
                .NoLineNumber = False
                .Hyphenation = True
                .FirstLineIndent = CentimetersToPoints(0)
                .CharacterUnitLeftIndent = 0
                .CharacterUnitFirstLineIndent = 0
                .LineUnitBefore = 0
                .LineUnitAfter = 0
                .MirrorIndents = False
                .TextboxTightWrap = wdTightNone
                .ReadingOrder = wdReadingOrderRtl
            End With
            ActiveDocument.Save
     
            ChangeFileOpenDirectory "E:\Donnees\Fichier_Doc\Actes_Etablis\"
            Documents.Open FileName:="FichierSource.doc", ConfirmConversions:=False, _
            ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
            PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
            WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="", _
            DocumentDirection:=wdRightToLeft
            Selection.MoveDown Unit:=wdLine, Count:=1
            Selection.HomeKey Unit:=wdLine
            Selection.MoveDown Unit:=wdLine, Count:=20, Extend:=wdExtend
            Selection.Copy
            ChangeFileOpenDirectory "E:\Donnees\Fichier_Doc\Forme\"
            Documents.Open FileName:="FichierDestination.doc", ConfirmConversions:=False, _
            ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
            PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
            WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="", _
            DocumentDirection:=wdRightToLeft
            Selection.EndKey Unit:=wdStory
            Selection.TypeParagraph
            ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:= _
            2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
            wdAutoFitFixed
            With Selection.Tables(1)
                If .Style <> "Grille du tableau" Then
                    .Style = "Grille du tableau"
                End If
                .ApplyStyleHeadingRows = True
                .ApplyStyleLastRow = False
                .ApplyStyleFirstColumn = True
                .ApplyStyleLastColumn = False
                .ApplyStyleRowBands = True
                .ApplyStyleColumnBands = False
            End With
            Selection.Tables(1).Select
            Selection.Tables(1).Rows.LeftIndent = CentimetersToPoints(-2.71)
            Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
            Selection.Tables(1).PreferredWidth = CentimetersToPoints(16)
            Selection.MoveLeft Unit:=wdCharacter, Count:=1
            Selection.SelectColumn
            Selection.Columns.PreferredWidthType = wdPreferredWidthPoints
            Selection.Columns.PreferredWidth = CentimetersToPoints(12)
            Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
            Selection.MoveRight Unit:=wdCharacter, Count:=1
            Selection.SelectColumn
            Selection.Columns.PreferredWidthType = wdPreferredWidthPoints
            Selection.Columns.PreferredWidth = CentimetersToPoints(4)
            Selection.MoveLeft Unit:=wdCharacter, Count:=2
            Selection.SelectColumn
            Selection.PasteAndFormat (wdPasteDefault)
            Selection.SelectColumn
            With Selection.ParagraphFormat
                .LeftIndent = CentimetersToPoints(0)
                .RightIndent = CentimetersToPoints(0)
                .SpaceBefore = 0
                .SpaceBeforeAuto = False
                .SpaceAfter = 0
                .SpaceAfterAuto = False
                .LineSpacingRule = wdLineSpaceExactly
                .LineSpacing = 14
                .WidowControl = True
                .KeepWithNext = False
                .KeepTogether = False
                .PageBreakBefore = False
                .NoLineNumber = False
                .Hyphenation = True
                .FirstLineIndent = CentimetersToPoints(0)
                .OutlineLevel = wdOutlineLevelBodyText
                .CharacterUnitLeftIndent = 0
                .CharacterUnitRightIndent = 0
                .CharacterUnitFirstLineIndent = 0
                .LineUnitBefore = 0
                .LineUnitAfter = 0
                .MirrorIndents = False
                .TextboxTightWrap = wdTightNone
                .ReadingOrder = wdReadingOrderRtl
            End With
            ActiveDocument.Save
        Wend
        MsgBox ("FIN DE DOC")
     
        ActiveDocument.Close
        ActiveDocument.Close
    End Sub
    Cette Macro copier et coller exactement comme prévue mais au bout de la 3ème page le programme refait la copie a partir dur debut de document fichierSource.Doc et quant je teste sur la fin du document in ne sort pas de la boucle c'est ca mon problème
    j'espère que j'été claire
    @+

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par yacine1 Voir le message
    Avez un fichier exemple à mettre en ligne ?

  10. #10
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 53
    Points : 27
    Points
    27
    Par défaut manipulation de macro
    Bonjours ,
    Je met un exemple de fichier - FichierSource.Doc & FichierDestination.Doc
    Le Fichier Source contient un tableau avec 02 colonnes dont la colonne de gauche est remplis
    je sélectionne une partie ou un fragment du texte puis je le colle dans le fichier Destination mais en alternant entre les deux colonnes droite et gauche
    une fois dans la colonne gauche et l'autre dans la colonne de droite et à la fin du traitement j'aurais une fichier comme il est montré dans FichierDestination.Doc
    Fichiers attachés Fichiers attachés

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par yacine1 Voir le message
    De combien de pages au maximum peut contenir votre fichier source ?

  12. #12
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 53
    Points : 27
    Points
    27
    Par défaut manipulation de macro
    Bonjour;
    Concernant le FichierSource.Doc que j'utilise actuellement il ya 140 Pages

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par yacine1 Voir le message
    A quelle fréquence devez vous faire cette transformation ?

  14. #14
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 53
    Points : 27
    Points
    27
    Par défaut manipulation de macro
    Je n'ai pas compris vôtre question ?

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par yacine1 Voir le message
    Je n'ai pas compris vôtre question ?
    Combien de fois ce code sera utilisé ?

  16. #16
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 53
    Points : 27
    Points
    27
    Par défaut manipulation de macro
    tant-que je n'ai pas atteint la fin du document FichierSource.Doc je continue a copier et coller la sélection
    c-a-d je sélectionne un certains nombre de lignes du fichierSource.Doc et je colle cette selection dans le fichierDestination.Doc mais en alternance une fois dans la colonne Gauche et d'autre dans la colonne Droite jusqu'à la fin du document FichierSource.Doc

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par yacine1 Voir le message
    Ce n'était pas la réponse attendue :

    Sur les 140 pages du document : Toutes les pages doivent être traitées de cette manière ?
    Combien de fois devez-vous faire ce traitement par année ?

    Je vous pose toutes ces questions pour voir la méthode à utiliser.

  18. #18
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 53
    Points : 27
    Points
    27
    Par défaut manipulation de macro
    Bonsoir ;
    Tous d’abord je tient à vous remercier de vôtre intérêt pour ce sujet et ca ma fait plaisir de discuter et échanger des idées avec vous d’où le but de ce forum pour bien comprendre mon problème je suis un programmateur WINDEV ca fait plus de 20 ans j’ai rencontrer ce problème pour des raisons de programmation je n’arrive pas a concrétiser ce que mon client veut j’ai développer une application qui gère un cabinet de notariat je m’explique au niveau du cabinet de notariat dés que l’acte est signé par les partis ainsi que par le notaire il ya des démarches à faire au niveau de la conservation
    Le Dépôt du dossier au niveau de la conservation avec une copie de l’acte qui est rédigée et se trouve dans la base de données ce fameux fichier est le fichierSource.Doc
    ainsi que le fichierDestination.Doc qui contient ce qu’ont appel la formalité foncière
    le fichierSource.Doc est un document word contenant un tableau de 02 colonnes dont la colonne de gauche contient la totalité de l’acte et la colonne de droite est vide vous allez me demander quelle est la nécessité d’existence du tableau je vous répond pour facilité la mise en page du texte de l’acte
    Pour copie et coller tout le contenu de la colonne gauche vers le fichier le FichierDestination.Doc qui contient lui aussi un tableau de 02 colonnes il faut que je sélectionne un certains nombre de lignes et puis je colle ma sélection dans le fichier FichierDestination.Doc mais le premier collage sera réaliser dans la colonne de gauche et le deuxième collage sera réaliser dans la colonne de droite et ainsi de suite je réaliser un va et vient entre le fichier fichierSource.Doc et le fichier FichierDestination.Doc jusqu'à la fin du fichier fichierSource.Doc
    Comme windev est un peut limité au sujet de manipulation de word je me suis orienter vers les macros word et comme je suis moi aussi limité côté vba je ne trouve pas de solution a mon problème a la fin je vous schématise un peut ce que je souhaite vraiment réaliser :
    1-Ouverture du modèle Formalité.Doc qui contient seulement l’entête
    2- Sauvegarder ce modèle sous le nom FichierDestination.Doc
    3- Ouverture du fichier fichierSource.Doc je me positionne sur la première ligne et je sélectionne un certains nombre de lignes
    4- j’ouvre le fichier FichierDestination.Doc et je colle ma sélection dans la colonne gauche du tableau
    5- j’ouvre le fichier fichierSource.Doc je me positionne sur la dernière ligne ou je me suis arrêté pendant ma première sélection et je sélectionne un certains nombre de lignes
    6- j’ouvre le fichier FichierDestination.Doc et je colle ma sélection dans la colonne droite du tableau
    Et ainsi de suite jusqu'à la fin du document fichierSource.Doc
    en ce qui concerne le nombre de fois d'utliser cette manipulation désque l'acte est signé par les partis et le notaire l'utilisateur peut générer le fichier FichierDestination.Doc a partir d'un bouton
    J’espère que j’ai bien résumer la problématique et une deuxième fois je vous remercie de vos réponses instantanées

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par yacine1 Voir le message
    Merci pour votre réponse.

    J'ai regardé le principe de transférer le contenu d'une colonne d'un tableau de N pages sur N tableaux d'une page. Je n'ai pas regardé le principe du déversement dans deux types de tableaux (gauche, droite) qui me semble assez facile à régler avec deux objets quickpart, qu'on appellerait alternativement.

    Je suis parti sur l'idée de découper chaque page du tableau source et de transférer sur le fichier cible sans avoir à faire de sélection manuellement. Avec la façon dont est organisé le fichier, ce découpage passe par le repérage des mots début et fin (au sens de Word) pour chaque page. Cette méthode est trop chronophage. Pour exemple, sur votre fichier de 5 pages, les résultats sont les suivants : (Nb : Il faut retirer 1 à la position du mot fin pour les pages 1 à 4.) Le temps de traitement est rédhibitoire.
    Pièce jointe 585013

    Une autre méthode consiste à travailler avec la collection Sentences au lieu de la collection Words selon le même principe :
    Pièce jointe 585014
    Le résultat est acceptable même en extrapolant sur 140 pages. Pour retrouver les limites Words de la première méthode, il faudrait sélectionner les phrases entre deux pages et en déduire la position des mots limites. De mon point de vue cela ne sert à rien.

    Un résultat encore plus rapide existe si le recherche se fait sur la collection Paragraphs puisqu'il s'agit d'une collection de phrases.

    Est-il donc nécessaire de respecter scrupuleusement le découpage par mots, alors que celui par phrases ou par paragraphes est beaucoup plus rapide ?

    Ci-dessous, le code qui analyse le découpage par phrases :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    Option Explicit
     
    Public MatricePages() As Variant
     
    Sub TestSourceParPhrases()
     
    Dim I As Long
    Dim DocSource As Document
    Dim HeureDebut2, HeureFin2, TempsTotal2
     
     
        HeureDebut2 = Timer
     
        On Error GoTo Fin
     
        Application.ScreenUpdating = False
     
        Set DocSource = Documents("FichierSource.doc")
        With DocSource
     
             If .Tables.Count = 0 Then GoTo Fin
     
             With Selection
                  .EndKey unit:=wdStory
                  ReDim MatricePages(.Range.Information(wdActiveEndPageNumber) - 1, 1)
             End With
     
             DeFinirLaMatriceDesPhrases DocSource
     
       End With
     
       For I = LBound(MatricePages, 1) To UBound(MatricePages, 1)
          Debug.Print "Page : " & I + 1 & ", phrase début : " & MatricePages(I, 0) & ", phrase fin : " & MatricePages(I, 1)
       Next I
     
       HeureFin2 = Timer
       TempsTotal2 = HeureFin2 - HeureDebut2
     
         Debug.Print "Temps total du traitement : " & Round(TempsTotal2, 1) & " seconde(s)"
     
       GoTo Fin
     
    Fin:
     
       Application.ScreenUpdating = True
     
       Set DocSource = Nothing
     
    End Sub
     
    Sub DeFinirLaMatriceDesPhrases(ByVal DocSource2 As Document)
     
    Dim I As Long
    Dim TableSource As Table
    Dim PageEncours As Integer
    Dim MotDebut As String, MotFin As String
     
     
        With DocSource2
     
             Set TableSource = .Tables(1)
             PageEncours = 1
             MatricePages(PageEncours - 1, 0) = 1
     
             With TableSource.Columns(2).Cells(1).Range
                   For I = 1 To .Sentences.Count
                       With .Sentences(I)
                             MatricePages(PageEncours - 1, 1) = I
                            .Select
                            If Selection.Range.Information(wdActiveEndPageNumber) > PageEncours Then
                               PageEncours = PageEncours + 1
                               MatricePages(PageEncours - 1, 0) = I-1
                            End If
                       End With
                   Next I
             End With
     
             Set TableSource = Nothing
     
        End With
     
    End Sub
    Le principe du traitement qui suit est de sélectionner les ranges délimitées par les mots ou les phrases avec l'instruction SetRange et de coller le résultat dans le fichier cible.

  20. #20
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 53
    Points : 27
    Points
    27
    Par défaut manipulation de macro
    Bonjours ;
    Merci pour vôtre réponse j'ai examiner vôtre démarche et suite aux deux images je croit que vous êtes sur le bon chemin l'idée de découper le texte en paragraphes est prometteuse
    j'ai pris le code tel qu’il est et je l'ai coller dans une macro et quant j'exécute la macro je ne vois aucun résultat et par la même occasion je ne voit pas ou est situer le fichier de destination FichierDestination.Doc qui va contenir l'ensemble du texte
    aussi les variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Explicit
    Public MatricePages() As Variant
    je n'ai aucune idée sur leurs utilité
    @+

Discussions similaires

  1. [WD-2010] Supprimer une page en double sur word via une macro
    Par Jessicat dans le forum Word
    Réponses: 0
    Dernier message: 16/09/2016, 20h21
  2. Réponses: 3
    Dernier message: 17/06/2015, 22h30
  3. [XL-2003] savegarder dans un meme document word depuis une macro Excel
    Par jabranejb dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/12/2012, 22h51
  4. Réponses: 1
    Dernier message: 27/07/2011, 21h30
  5. Ecrire dans un document Word avec une macro Word
    Par deruyter dans le forum VBA Word
    Réponses: 2
    Dernier message: 14/01/2010, 00h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo