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 :

Comment remplacer les marques de paragraphe par un retour à la ligne simple ? [WD-2007]


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Points : 31
    Points
    31
    Par défaut Comment remplacer les marques de paragraphe par un retour à la ligne simple ?
    Bonjour,

    Je cherche à remplacer les marques de paragraphe des cellules de la première colonne d'un tableau par un "retour à la ligne" simple.
    Car lors de la suite de la macro, lorsque la 1ère colonne du tableau est divisée en 2, le texte du 2eme paragraphe des cellules passe dans la nouvelle colonne (au lieu de rester dans la première).
    Cela ne se produit pas avec un retour à la ligne sans nouveau paragraphe.

    Le code que j'ai tenté supprime le contenu des cellules.
    Pourriez vous m'aider le corriger ?

    D'avance tous mes remerciements,
    Marino

    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
     
    Sub RemplacerMarqueDeParagraphe(ByVal DocEnCours6 As Document, ByVal NumeroTable As Integer)
     
    Dim L As Integer
    Dim MyString As String
     
    With DocEnCours6
        If .Tables.Count >= NumeroTable Then
            Set MaTable = .Tables(NumeroTable)
     
            With MaTable
                For L = 2 To MaTable.Rows.Count
                    .Cell(L, 1).Range.Text = MyString
                    MyString = Replace(MyString, CR(13), CR(10))    'Ne fonctionne pas : Vide les cellules entièrement, au lieu de remplacer la marque de paragraphe par un retour à la ligne
                Next
            End With
        End If
    End With
     
    End Sub

  2. #2
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut,
    CR()?
    Chr() ou ChrW() !
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Bonjour Hypérion,

    Merci pour la correction de mon étourderie
    Cependant le nouveau code supprime toujours le texte des cellules de la colonne 1

    Voilà les 3 codes essayés pour la ligne "replace". Ils donnent tous le même résultat : le texte après la marque de paragraphe est transféré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MyString = Replace(MyString, Chr(13), Chr(10))
    MyString = Replace(MyString, ChrW(13), ChrW(10))
    MyString = Replace(MyString, vbCr, vbLf)
    MyString = Replace(MyString, vbCrLf, vbLf)
    Pourrais-tu m'indiquer comment faire, pour coder ce qui fonctionne manuellement
    - remplacer l'équivalent de "Enter"
    - l'équivalent de "Shift Enter" (shift = flèche vers le haut - je précise au cas où mon vocabulaire ne soit pas approprié)

    Merci encore de ton aide,
    Cordialement,
    Marino

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

    Dans votre code d'origine, vous déclarez une variable MyString en début de procédure, et vous demandez à la cellule de la première colonne de prendre le contenu de MyString, c'est normal que la cellule soit vide. Vous avez dû louper une ligne de code pour dire à MyString de prendre le contenu de la cellule (enfin je suppose).

    Sinon pour régler votre problème, il vous faut extraire avec la fonction Mid, les caractères de la chaîne présente dans votre cellule jusqu'à l'avant dernier ou le dernier caractère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
             MyString = Mid(.Cell(L, 1).Range.Text,1,len(.Cell(L, 1).Range.Text)-2)  ' Ou -1, à adapter.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Bonjour Eric,

    Merci de votre lecture et suggestion.
    J'ai modifié le code comme ci-dessous.
    Cette fois les cellules ne sont pas vidées, mais le texte situé après la marque de paragraphe est toujours transféré dans la cellule contigüe (lors de la division de la colonne)

    Pourriez-vous regarder à nouveau ?
    A quoi sert le -1 ou -2 ? (même résultat dans les 2 cas)

    D'avance tous mes remerciements
    Marino

    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
     
    Sub RemplacerMarqueDeParagraphe(ByVal DocEnCours6 As Document, ByVal NumeroTable As Integer)
    ' Cette procédure doit remplacer les marques de paragraphe par des retours à la ligne simples car le texte du 2eme paragraphe des cellules est transféré en 2eme colonne lors de la division de la première colonne en 2 (procedure suivante)
    Dim L As Integer
    Dim MyString As String
     
    With DocEnCours6
        If .Tables.Count >= NumeroTable Then
            Set MaTable = .Tables(NumeroTable)
     
            With MaTable
                For L = 2 To MaTable.Rows.Count
     
                    MyString = Mid(.Cell(L, 1).Range.Text, 1, Len(.Cell(L, 1).Range.Text) - 1)
                    MyString = Replace(MyString, Chr(13), Chr(10)) 
     
                    .Cell(L, 1).Range.Text = MyString
     
                Next
            End With
        End If
    End With
     
    End Sub

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Marino69 Voir le message
    • Désolé, je n'ai pas encore compris ce que vous cherchiez à faire.
    • Le mieux serait de mettre un exemple en ligne sans données confidentielles avec des explications.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Eric,

    Voici en pièce jointe, un fichier avec les 2 procédures successives à lancer avec "LancerLaMacro"
    La 2eme procédure va diviser en 3 colonnes la 1ere colonne de la table 4

    J'ai saisi deux textes dans la première colonne :
    - le 1er contient 1 seul paragraphe, "passage à la ligne" fait à l'aide de Shift/Enter - Ce texte va rester entièrement dans sa cellule d'origine
    - le 2eme contient 2 paragraphes, "passage à la ligne" fait à l'aide de Enter - Le texte du 2eme paragraphe va migrer dans la colonne créée par la 2eme procédure

    La première procédure a pour objectif de transformer la "marque de paragraphe" en "retour à la ligne simple" pour éviter cette migration, lors de l'exécution de la 2eme procédure.

    En espérant que mon problème est maintenant plus clair.

    Remerciements,
    Marino
    Fichiers attachés Fichiers attachés

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Marino69 Voir le message
    Sans doute suis-je un gros , mais est-cela que vous souhaitez obtenir ? Dans votre explication, je comprends que la colonne 1 est encore subdivisée en 3 colonnes alors que les colonnes 2 et 3 sont présentes.
    Pièce jointe 419858

    Sinon, placez un vidage d'écran de ce que vous souhaitez obtenir. J'arrive encore à comprendre les images

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Bonjour Eric,

    Toutes mes excuses pour mes explications maladroites.

    Je voudrais que le texte de la 2ème ligne reste entièrement dans sa cellule d'origine.
    Une partie de ce texte migre dans la colonne d'à côté (colonne crée par la macro suivante, par division en 3 de la colonne où se trouve le texte au départ).
    Ce texte migre, parce que c'est un paragraphe.

    Du coup j'essais de supprimer la marque de paragraphe en la remplaçant par "retour à la ligne", pour avoir la même configuration que le 1er texte (celui ci reste à sa place lors de la transformation du tableau).
    Illustration dans la pièce jointe, complétée avec le résultat attendu.

    Merci beaucoup pour votre patience!

    Cordialement,
    Marino

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Marino69 Voir le message
    • Ma solution consiste à charger une matrice par le contenu des cellules de la colonne 1, le restitue après la création des colonnes et efface la colonne 2.
    • La taille des caractères après copie est celle que vous avez définie dans votre procédure FractionnerEn3Colonnes.
    • Les procédures sont placées dans un module standard et non dans ThisDocument.

    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
     
    Option Explicit
     
    Public MatriceColonne1() As Variant
     
    Sub LancerLaMacro()
     
    Dim DocEnCours As Document
    Dim MaTable As Table
    Dim I As Integer
     
            On Error GoTo Fin
     
            Erase MatriceColonne1
            Set DocEnCours = ActiveDocument
     
            With DocEnCours
     
                 If .Tables.Count > 3 Then
                    Set MaTable = .Tables(4)
                    ChargerLaMatriceColonne1 MaTable
                 Else
                    MsgBox "Le nombre de tables est de " & .Tables.Count, vbCritical
                    GoTo Fin
                 End If
     
                 FractionnerEn3Colonnes DocEnCours, 4
     
                 With MaTable
                      For I = 2 To .Rows.Count
                        With .Cell(I, 1).Range
                             .Text = MatriceColonne1(I - 1)
                        End With
                        .Cell(I, 2).Range.Text = ""
                      Next I
                 End With
     
            End With
     
            GoTo Fin
     
    Fin:
     
     
           Set MaTable = Nothing
           Set DocEnCours = Nothing
     
    End Sub
     
    Sub ChargerLaMatriceColonne1(ByVal TableEnCours As Table)
     
    Dim J As Integer
        With TableEnCours
             ReDim MatriceColonne1(.Rows.Count - 1)
             For J = 1 To .Rows.Count
                 MatriceColonne1(J - 1) = .Cell(J, 1).Range.Text
             Next J
        End With
     
    End Sub
     
    Sub FractionnerEn3Colonnes(ByVal DocEnCours7 As Document, ByVal NumeroTable As Integer)
    'Pour modifier les colonnes de la table 4
     
    Dim L As Integer
    Dim MaTable As Table
     
     
        With DocEnCours7
             If .Tables.Count >= NumeroTable Then
                Set MaTable = .Tables(NumeroTable)
     
     
                With MaTable
                    .Columns(1).Cells.Split NumRows:=1, NumColumns:=3, MergeBeforeSplit:=False
                    .Cell(1, 2).Range.Text = "Colonne ajoutée"
                    .Cell(1, 3).Range.Text = "Colonne ajoutée"
                End With
     
                With MaTable.Cell(1, 2).Range.Font
                    .Bold = False
                    .Name = "Arial"
                    .Size = 7
                End With
     
                With MaTable.Cell(1, 3).Range.Font
                    .Bold = False
                    .Name = "Arial"
                    .Size = 7
                End With
     
                With MaTable
                    For L = 2 To MaTable.Rows.Count
                    .Cell(L, 1).Range.Font.Size = 11
                Next
     
                End With
     
                Set MaTable = Nothing
             End If
        End With
     
    End Sub

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Eric merci pour cette solution !

    Je suis arrivée à l'intégrer dans l'enchainement des procédures de l'ensemble des macros du formulaire ... ou presque !:

    la Sub "ModifierTableau" (= renommage de "LancerLaMacro") s'exécute correctement et le résultat est conforme : chouette!

    Par contre, j'ai un dysfonctionnement et une "bizarrerie" :

    - la bizarrerie :
    La variable MaTable est déjà déclarée en variable publique (Public MaTable As Table)
    Néanmoins, si je ne la déclare pas à nouveau au niveau de la sub, la macro s'arrête après "FractionnerEn3Colonnes"
    Je l'ai donc déclarée aux 2 niveaux ce qui ne me semble pas très orthodoxe (j'en réfère à vos précédents conseils du mos de juillet )

    - le dysfonctionnement :
    L'exécution de l'ensemble des procédures s'arrête après la procédure "ModifierTableau" - pas d'enchainement de la procédure suivante ("CopieLargeursColonnesTableSource").


    Du coup, j'ai encore besoin de ton support
    D'avance, remerciements !

    Marino


    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
     
    Sub ModifierTableau(ByVal DocEnCours6 As Document, ByVal NumeroTable As Integer)
     
    'Public MatriceColonne1() As Variant --> mis dans le Module 1_variablesPubliques
    'Dim DocEnCours6 As Document  --> déjà déclaré dans le titre de la sub
    Dim MaTable As Table  '--> est aussi en variable publique (mais si pas déclarée dans la macro, la macro s'arrête après "fractionner en 3 colonnes"
     
     
    Dim I As Integer
     
            On Error GoTo Fin
     
            Erase MatriceColonne1
     
            With DocEnCours6   'remplace : Set DocEnCours6 = ActiveDocument
     
                 If .Tables.Count > 3 Then
                    Set MaTable = .Tables(NumeroTable)    'remplace Set MaTable = .Tables(4)
                    ChargerLaMatriceColonne1 MaTable   'procédure décrite après celle-ci
                 Else
                    MsgBox "Le nombre de tables est de " & .Tables.Count, vbCritical
                    GoTo Fin
                 End If
     
                 FractionnerEn3Colonnes DocEnCours, 4  'procédure décrite après celle-ci
     
                 With MaTable
                      For I = 2 To .Rows.Count
                        With .Cell(I, 1).Range
                             .Text = MatriceColonne1(I - 1)
                        End With
                        .Cell(I, 2).Range.Text = ""
                      Next I
                 End With
     
            End With
     
            GoTo Fin
     
    Fin:
           Set MaTable = Nothing
           Set DocEnCours = Nothing
     
    End Sub
     
    Sub ChargerLaMatriceColonne1(ByVal TableEnCours As Table)
     
    Dim J As Integer
        With TableEnCours
             ReDim MatriceColonne1(.Rows.Count - 1)
             For J = 1 To .Rows.Count
                 MatriceColonne1(J - 1) = .Cell(J, 1).Range.Text
             Next J
        End With
     
    End Sub
     
     
    Sub FractionnerEn3Colonnes(ByVal DocEnCours7 As Document, ByVal NumeroTable As Integer)
    'Pour modifier les colonnes de la table 4
     
    Dim L As Integer
     
     
        With DocEnCours7
             If .Tables.Count >= NumeroTable Then
                Set MaTable = .Tables(NumeroTable)
     
     
                With MaTable
                    .Columns(1).Cells.Split NumRows:=1, NumColumns:=3, MergeBeforeSplit:=False
                    .Cell(1, 2).Range.Text = "Rev. du document"
                    .Cell(1, 3).Range.Text = "Date"
                End With
     
                With MaTable.Cell(1, 2).Range.Font
                    .Bold = False
                    .Name = "Arial"
                    .Size = 7
                End With
     
                With MaTable.Cell(1, 3).Range.Font
                    .Bold = False
                    .Name = "Arial"
                    .Size = 7
                End With
     
                With MaTable
                    For L = 2 To MaTable.Rows.Count
                    .Cell(L, 1).Range.Font.Size = 11
                Next
     
                End With
     
                Set MaTable = Nothing
             End If
        End With
     
    End Sub
     
    Sub CopieLargeursColonnesTableSource(ByVal DocSource2 As Document, ByVal NumeroTableSource As Integer, ByVal DocEnCours8 As Document, ByVal NumeroTableEnCours)
    'Pour mettre les colonne de la table 4 aux mêmes dimensions que celles la table source
     
    Dim C As Integer
     
    Set TableSource = DocSource2.Tables(1)
     
        With DocEnCours8
            If .Tables.Count >= NumeroTableEnCours Then
                Set MaTable = .Tables(NumeroTableEnCours)
     
                With MaTable
                    For C = 1 To MaTable.Columns.Count
                     .Columns(C).Width = TableSource.Columns(C).Width
                    Next
     
                    'MaTable.Rows.Alignment = wdAlignRowCenter 'pour centrer le tableau horizontalement - deplacé dans FormaterToutesLesTables
     
                End With
     
                Set MaTable = Nothing
     
            End If
        End With
     
    Set TableSource = Nothing
     
    End Sub
    ]

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Marino69 Voir le message
    Où as-tu placé tes macros ?

    Une variable Public ne se déclare que dans un module standard (Clic-Droit dans la fenêtre des projets sur ThisDocument par exemple et Insérer module), tu y transfères toutes tes macros et tu fais un essai pour voir. Fais l'essai avec le document que j'ai mis dans ma dernière réponse et regarde comment le code est placé, il n'y a pas de raison que cela ne marche pas chez toi.

  13. #13
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Bonjour Eric,

    J’ai pu corriger les 2 anomalies !
    - A la « Fin » de « ModifierTableau », j’ai supprimé « DocEnCours = Nothing », car j’avais remplacé « Set DocEnCours6 = ActiveDocument » par « With / End with » : la macro suivante s’enchaine maintenant correctement
    - A la « Fin » de « FractionnerEn3Colonnes », qui est appelée en cours de « ModifierTableau », j’ai supprimé « Set MaTable = Nothing » car la valeur de MaTable est utilisée dans la suite de « ModifierTableau » : le texte capturé est restitué correctement à sa place initiale, même avec la variable « MaTable » déclarée uniquement en variable publique.


    Je vais donc clore cette discussion avec encore tous mes remerciements.

    Je vais en ouvrir une autre sur un autre thème : je n'arrive pas à mettre en œuvre la fonction Trim, pour supprimer les espaces surnuméraires situés de part et d'autre d'une chaine ...

    Voici le code adapté à mon projet :
    La procédure est appelée par :
    ModifierTableau DocEnCours, 4

    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
     
    Sub ModifierTableau(ByVal DocEnCours6 As Document, ByVal NumeroTable As Integer)
     
    'Public MatriceColonne1() As Variant --> mis dans le Module 1_variablesPubliques
    'Dim MaTable As Table  '--> mis dans le Module 1_variablesPubliques
     
     
    Dim I As Integer
     
            On Error GoTo Fin
     
            Erase MatriceColonne1
     
            With DocEnCours6                                    
     
                 If .Tables.Count > 3 Then
                    Set MaTable = .Tables(NumeroTable)                  
                    ChargerLaMatriceColonne1 MaTable                     
                 Else
                    MsgBox "Le nombre de tables est de " & .Tables.Count, vbCritical
                    GoTo Fin
                 End If
     
                 FractionnerEn3Colonnes DocEnCours, NumeroTable                           
     
                 With MaTable
                      For I = 2 To .Rows.Count
                        With .Cell(I, 1).Range
                             .Text = MatriceColonne1(I - 1)
                        End With
                        .Cell(I, 2).Range.Text = ""
                      Next I
                 End With
     
            End With
     
            GoTo Fin
     
    Fin:
           Set MaTable = Nothing
     
     
    End Sub
     
    Sub ChargerLaMatriceColonne1(ByVal TableEnCours1 As Table)
    ' Cette procedure charge le contenu des cellules de la colonne 1 de la table, dans une variable matricielle
    ' Ce contenu est recopier dans la colonne 1 après "FractionnerEn3Colonnes"
    ' Cela permet d'éviter la migration des paragraphes de la colonne 1 vers les colonnes crées par cette macro
     
    Dim J As Integer
        With TableEnCours1
             ReDim MatriceColonne1(.Rows.Count - 1)
             For J = 1 To .Rows.Count
                 MatriceColonne1(J - 1) = .Cell(J, 1).Range.Text
             Next J
        End With
     
    End Sub
     
     
    Sub FractionnerEn3Colonnes(ByVal DocEnCours7 As Document, ByVal NumeroTable As Integer)
    'Pour modifier les colonnes de la table 4
     
    Dim L As Integer
     
     
        With DocEnCours7
             If .Tables.Count >= NumeroTable Then
                Set MaTable = .Tables(NumeroTable)
     
     
                With MaTable
                    .Columns(1).Cells.Split NumRows:=1, NumColumns:=3, MergeBeforeSplit:=False
                    .Cell(1, 2).Range.Text = "Rev. du document"
                    .Cell(1, 3).Range.Text = "Date"
                End With
     
                With MaTable.Cell(1, 2).Range.Font
                    .Bold = False
                    .Name = "Arial"
                    .Size = 7
                End With
     
                With MaTable.Cell(1, 3).Range.Font
                    .Bold = False
                    .Name = "Arial"
                    .Size = 7
                End With
     
                With MaTable
                    For L = 2 To MaTable.Rows.Count
                    .Cell(L, 1).Range.Font.Size = 11
                    Next
                End With
     
     
             End If
        End With
     
    End Sub

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Marino69 Voir le message
    Je vais en ouvrir une autre sur un autre thème : je n'arrive pas à mettre en œuvre la fonction Trim, pour supprimer les espaces surnuméraires situés de part et d'autre d'une chaine ...
    Bonjour,

    Quel est ton problème exactement ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment remplacer les espaces par la valeur NULL
    Par ToniConti dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 15/04/2010, 12h41
  2. Réponses: 3
    Dernier message: 28/03/2008, 18h00
  3. Réponses: 3
    Dernier message: 18/02/2008, 14h05
  4. Comment remplacer les tabulations par des espaces ?
    Par richarno dans le forum Langage
    Réponses: 7
    Dernier message: 25/10/2007, 13h05
  5. Réponses: 2
    Dernier message: 29/11/2005, 14h17

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