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 :

Récupérer caractères d'une cellule d'un tableau


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Novembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Novembre 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Récupérer caractères d'une cellule d'un tableau
    Bonjour à tous,

    Via Excel, je parcours un word, dans lequel il y a des tableaux (avec parfois des cellules fusionnées), je remplace le texte en rouge par du noir, etc ...

    Mais le caractère de cellule vide (une sorte de rond avec des pointes ...) n'est pas passé en noir, parce que ce n'est pas un caractère en fait ...

    Est-il possible une fois que je suis dans la cellule, de sélectionner via (longueur du texte - 2 , sur 2) ce petit malotru ... ?


    Je vous laisse le bout de code (je sais surement moche ...) ; les commentaires sont mes tests malheureusement infructueux.
    Je ne répondrais que Lundi (le code est au boulot et moi pas ce week-end).

    Merci d'avance pour les échanges
    et A+
    LM



    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
    If NbTableau > 0 Then
    For Each Tableau In objWord.Selection.Tables
        For Each Ligne In Tableau.Rows
            For Each Cellule In Ligne.Cells
     
             TexteCellule = Cellule.Range.Text
             LongueurTexteCellule = Len(Cellule.Range.Text)
     
             MsgBox TexteCellule & " / " & LongueurTexteCellule
    '
    ' les deux derniers caractères forcés à noir et non rayé
    '
    '            Right(Cellule.Range.Text, 2).Font.Color = wdColorBlack
     
    '''            TexteCellule.Font.Color = wdColorBlack
     
     
                If LongueurTexteCellule = 2 Then
    ''            TexteCellule.Select
    ''            Right(Cellule.Range.Text, 2).Select
    ''''            Cellule.Select
    ''''           With Cellule.Range.Text.Characters(Len(Cellule.Range.Text) - 2, 2).Font
                With Cellule.Characters(Len(Cellule.Range.Text) - 2, 2).Font
     
     
    '            With Cellule.Range.Font
    '            With Cellule.Range.Text
    '            Selection.Characters.Text
    ''''            Selection.Text.Characters
    ''''            With Selection.Characters(Len(Cellule.Range.Text) - 2, 2).Font
    '            Right(Cellule.Range.Text, 2).Select
     
    '            With Right(Cellule.Range.Text, 2).Font
    '            With TexteCellule.Font
    '            With Selection.Font
                .Color = wdColorBlack
                .Strikethrough = False
                End With
                End If
     
            Next Cellule
        Next Ligne
     
     
    Next Tableau
    'Next T
    End If

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

    A adapter : (Référencer la dll Microsoft Word dans un premier temps)

    En phase de développement, il est plus facile de travailler en early binding (en référençant la dll Word) car vous bénéficiez de l'intellisense qui vous permet de voir les méthodes et propriétés des objets que vous utilisez (en mettant un . derrière l'objet). Une fois votre code validé, vous pourrez repasser en late binding, typer vos variables Word en Object et déréférencer la dll Word.

    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
     
    Sub RepeindreLesCaracteresDesCellulesEnNoir()
     
    Dim wApp As Word.Application
    Dim DocAModifier As Word.Document
    Dim MaSelection As Word.Selection
    Dim MaTable As Word.Table
     
    Dim NomDuCourrier As String
    Dim I As Integer, J As Integer
     
        NomDuCourrier = "Essai modification"
     
        Set wApp = CreateObject("Word.Application")
     
        With wApp
     
              .Visible = True
              .Activate
              .Documents.Open Filename:=CheminFichiersWord & NomDuCourrier
              Set DocAModifier = wApp.ActiveDocument
              ' Set MaSelection = wApp.Selection  ' au cas où vous auriez besoin de travailler avec une sélection du document.
     
              With DocAModifier
                   For I = 1 To .Tables.Count
                      .Tables(I).Range.Font.ColorIndex = wdColorBlack
                   Next I
                   '.Close savechanges:=True
              End With
     
              '.Quit
     
        End With
     
        Set MaSelection = Nothing
        Set MaTable = Nothing
        Set DocAModifier = Nothing
        Set wApp = Nothing
     
    End Sub

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Novembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Novembre 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour Eric,

    D'après ce que je comprend, avec ton code je vais remettre tous les caractères de la cellule en noir.
    Sauf que si dans une cellule j'ai du rouge ou du bleu, je veux garder le bleu.

    Mais ça j'arrive à faire, en balayant tous les caractères du texte (là il balaye aussi le texte des tableau).
    Mon souci, est que le caractère de cellule vide, n'est pas considéré comme un caractère et que même en balayant tous les caractères, ce dernier reste bêtement rouge ...
    Et cela est pareil pour les rayés, que je dois supprimer et là quand j'ai une cellule vide ça plante , car je veux supprimer le caractère vide d'une cellule qui est rayé, sauf que la macro ne trouve pas de caractère ...

    J'arrive à voir le texte entier, et la lecture (qui fait bien la longueur du texte + 2 ) dans la msgbox.
    Par contre je n'arrive pas à récupérer la police des deux derniers caractères ...

    Faut-il extraire tout le texte , le copier - coller après modif ?
    Une solution même moche même longue (je ne suis plus à ça près ) m'irait à merveille

    A+
    LM

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

    Tu as un exemple à mettre en ligne ?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Novembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Novembre 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bon voilà je ne sais pas comment cela va sortir sur le forum

    En copie brute on ne voit rien mais
    Je vais essayer avec un word en PJ, je regarde ce qui sort, bon ok ça marche,

    Dans la cellule Référence à rappeler, j'ai en fin le caractère qui est rouge et barré, c'est lui le plus embétant car il fait planter ma macro quand je veux supprimer les caractères rayés.
    Dans la cellule su condition, j'ai le caractère rouge simplement, lui j'arrive à la passer en noir, en testant si la longueur est 2, passe la police en noir.

    Merci pour ton aide ...
    Fichiers attachés Fichiers attachés

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Laurent33160 Voir le message
    Deux codes :
    • L'un pour toutes les cellules.
    • L'autre pour les cellules 9 et 16.

    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
     
    Sub CouleurFinDeCellule()
     
    Dim I As Integer
     
        With ActiveDocument.Tables(1)
             For I = 1 To .Range.Cells.Count
                 .Range.Cells(I).Select
                 Selection.EndKey
                 Selection.Range.MoveEnd Unit:=wdCharacter
                 Selection.Font.Color = wdColorAutomatic
             Next I
        End With
     
    End Sub
     
     
    Sub CouleurFinDeCellule2()
     
    Dim I As Integer
     
        With ActiveDocument.Tables(1)
             For I = 1 To .Range.Cells.Count
                 Select Case I
                        Case 9, 16
                            .Range.Cells(I).Select
                            Selection.EndKey
                            Selection.Range.MoveEnd Unit:=wdCharacter
                            Selection.Font.Color = wdColorAutomatic
                 End Select
             Next I
        End With
     
    End Sub

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Novembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Novembre 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour Eric,

    Je teste ça ; j'espère demain, je te ferais le retour, mais cela m'a l'air de correspondre à ce que je cherche.

    A+
    LM

Discussions similaires

  1. Récupérer Id d'une cellule d'un tableau
    Par Arsene12 dans le forum jQuery
    Réponses: 4
    Dernier message: 27/05/2017, 16h05
  2. Réponses: 1
    Dernier message: 06/12/2014, 22h03
  3. Récupérer une cellule d'un tableau d'un Repeater
    Par Spellbinder dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/04/2011, 10h13
  4. Réponses: 2
    Dernier message: 24/01/2008, 13h32

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