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 :

Macro Word défecteuse dans un tableau


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Février 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Macro Word défecteuse dans un tableau
    Bonjour,

    J'ai créé une petite macro qui permet de corriger des majuscules, des espaces, des guillemets… dans un Word, de manière à avoir un texte homogène. Il s'agit essentiellement de "rechercher et remplacer" sur certains éléments typographiques.
    La macro fonctionne correctement sur un texte standard, soit qu'on l'utilise sur l'ensemble du texte, soit qu'on l'utilise uniquement sur une portion de texte sélectionnée.

    Par contre, lorsqu'on l'utilise dans un tableau, il arrive que la macro modifie des éléments qui ne devraient pas être corrigés. En l'occurrence, une apostrophe qui ne pose d'habitude pas de problème (cf. Word_Macro_tab.PNG) est transformée en guillemet dans un tableau (cf. Word_Macro_tab_guil.PNG).
    J'ai remarqué que si je ne sélectionne que le texte de la cellule en question, la macro fonctionne correctement. Ce n'est que lorsque je sélectionne deux cellules adjacentes que l'erreur survient (cf. Word_Macro_tab_sel.PNG). Plus étrange encore, cela n'arrive que sur une seule apostrophe dans tout le tableau (apostrophe normale, pas d'espace avant ni après, rien de suspect…).

    Quelqu'un sait-il pourquoi la sélection de cellules pose problème et comment régler cela?

    D'avance merci beaucoup
    Images attachées Images attachées     

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

    Mettez un fichier exemple en ligne pour voir.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Février 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Mettez un fichier exemple en ligne pour voir.
    Voilà. Il y a le code de la macro dans un .txt et le document Word (en .docx) qui contient le texte et les tableaux.

    Merci beaucoup.

    Cordialement
    Fichiers attachés Fichiers attachés

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Chastabe Voir le message
    Je vous propose un cautère sur une jambe de bois :
    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
     
    Sub TesterLesCellules()
     
    Dim DocEnCours As Document
    Dim I As Integer, J As Integer, Position As Integer
    Dim TexteEnCours As String, TexteAChanger As String
     
        Set DocEnCours = ActiveDocument
        With DocEnCours
     
             TexteAChanger = Chr(160) & Chr(187)
             For I = 1 To .Tables.Count
                 For J = 1 To .Tables(I).Range.Cells.Count
                     TexteEnCours = .Tables(I).Range.Cells(J).Range.Text
                     Position = InStr(1, TexteEnCours, TexteAChanger, vbTextCompare)
     
                     If Position > 0 Then
                        .Tables(I).Range.Cells(J).Range.Select
                        'TesterLesCaracteres Selection
                        With Selection.Find
     
                             .ClearFormatting
                             .Replacement.ClearFormatting
                             .Text = TexteAChanger
                             .Replacement.Text = Chr(146)
                             .Execute Replace:=wdReplaceAll
     
                        End With
     
                        Debug.Print Position & " : " & .Tables(I).Range.Cells(J).Range.Text
                     End If
                 Next J
             Next I
        End With
        Set DocEnCours = Nothing
     
    End Sub
     
     
    Sub TesterLesCaracteres(ByVal ChaineATester As Selection)
     
    Dim K As Integer, L As Integer
     
        With ChaineATester
             For K = 1 To .Characters.Count
                 For L = 0 To 255
                     If Mid(.Range.Text, K, 1) = Chr(L) Then
                        Debug.Print "Caractère " & K & ", valeur : " & Chr(L) & ", code : " & L
                     End If
                 Next L
             Next K
        End With
     
    End Sub
    Nb : La procédure TesterLesCaracteres sert à repérer les caractères Ansi dans une chaîne.

Discussions similaires

  1. Macro Word depuis Excel avec tableau comme argument
    Par emorejbleu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/07/2013, 14h45
  2. Macro Word 2003 dans Word 2007
    Par soso61 dans le forum VBA Word
    Réponses: 1
    Dernier message: 04/06/2013, 20h51
  3. Réponses: 1
    Dernier message: 20/04/2009, 15h26
  4. Réponses: 2
    Dernier message: 25/04/2008, 13h40
  5. (VBA Word]Naviguer dans un tableau word
    Par aA189 dans le forum VBA Word
    Réponses: 6
    Dernier message: 17/09/2006, 20h14

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