Selectionner la premiere cellule de la ligne suivante dans un tableau word

cs_brau Messages postés 19 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 15 décembre 2014 - 4 nov. 2008 à 17:27
cs_brau Messages postés 19 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 15 décembre 2014 - 4 nov. 2008 à 22:31
Bonjour,
je voudrais parcourir un tableau word, et tester à chaque fois le contenu de la première cellule pour savoir si le contenu à + de 2 caractères ou pas. Si c'est le cas, je sélectionne la ligne complète et applique un style au texte.

Seulement mon code ne fonctionne pas, et n'étant pas développeur, j'avoue que je galère un peu...
Mon code ne marche pas très bien...

voici le code :

    Dim derniereLigne As Long, ligneCourante As Long
    Dim suppr As Boolean
' positionner le curseur au début du document
    Selection.HomeKey Unit:=wdStory

    Do
        Sleep 20
' descendre d'une ligne
            Selection.MoveDown Unit:=wdLine, Count:=1
            derniereLigne = ligneCourante

' sélectionner toute la ligne
        Selection.Expand wdCell

        If (Len(Selection.Text) > 2) Then
            Selection.Expand wdRow
           
                With Selection.Font
                    .Bold = True
                    .BoldBi = True
                End With
                With Selection.Font
                    .NameAscii = "Times New Roman"
                End With
                With Selection.Cells
                    With .Shading
                        .Texture = wdTextureNone
                        .ForegroundPatternColor = wdColorAutomatic
                        .BackgroundPatternColor = wdColorGray30
                    End With
        End If

' recupérer le numéro de ligne
        ligneCourante = Selection.Information(wdFirstCharacterLineNumber)

' le curseur ne descend plus : fin
    Loop Until derniereLigne = ligneCourante

Merci d'avance pour les conseils que vous m'apporterez.

brau

4 réponses

cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
4 nov. 2008 à 19:49
Bonjour brau, content de te retrouver sur vbfrance


J'ai testé ton code, il ne marche pas si mal !

_________________________

Deux soucis -mineurs-, malgré tout :

 a) je suis sous word 2003 et l'instruction sleep n'est pas reconnue
 b) il manque un End With dans ta proc.

_________________________

J'ai aussi deux remarques :


 a) Si ton tableau est tout en haut du document, la première ligne du tableau sera ignorée. En effet, la première chose que fait ta boucle est de descendre d'une ligne. Il faut alors que tu modifies ton programme ou, plus simplement, que tu mettes quelquechose au-dessus du tableau ; une marque de paragraphe, par exemple.


 b) Tu dis "je voudrais parcourir un tableau word", mais ta macro, elle, parcourt tout le document. C'est cohérent, à condition qu'il n'y ait rien d'autre que ton tableau dans le document.
_________________________

Ton problème vient peut-être du fait que le contenu d'une cellule de tableau word se termine toujours par deux caractères de contrôle invisibles. Il faut que tu en tiennes compte, et que tu remplaces ton instruction

If (Len(Selection.Text) > 2) Then

par

If (Len(Selection.Text) > 4) Then
_________________________

Voilà. Essaie déjà avec ces informations. Si ça ne fonctionne toujours pas, précise ce qui ne va pas, parce que mon code ne fonctionne pas... Mon code ne marche pas très bien, ça n'aide pas vraiment...

Cordialement
0
cs_brau Messages postés 19 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 15 décembre 2014
4 nov. 2008 à 20:13
Salut Orohena,
encore merci pour l'aide que tu m'avais donnée ! J'ai un peu évolué en vba depuis, enfin j'ai surtout appris a bidouiller avec ce qu'on m'a donné ;)

Concernant le code, il manque un end with, car j'ai supprimé quelques lignes de commentaire avant de coller le code ici, il a dû être supprimer en même temps ;)

le problème qui persiste, c'est lorsque j'ai une cellule (dans la 3 eme colonne par exemple) qui est remplie au point que ça tienne sur 2 pages. Du coup, lorsque la boucle recommence, la sélection se fait sur la 3 eme colonne...

Et pareil, s'il y a du texte après le tableau, le code plante... ça craint ;)

Un document peut contenir un ou plusieurs tableaux, avec du texte ou pas entre.

Merci encore pour ton aide !
0
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
4 nov. 2008 à 21:55
Ta cas est complexe et spécifique. Je ne sais pas si cela vaut la peine de continuer cette discussion ou s'il ne vaudrait pas mieux traiter le problème en privé.

Pourrais-tu m'envoyer un document type ? S'il y a des choses confidentielles, remplace-les par des gribouillages.

Aussi j'aimerais connaître la provenance de tes documents. Ont-ils été saisis ou importés ? S'ils ont été importés, il sera peut-être plus facile de travailler sur les sources. Le cas échéant, peut-être que tu pourrais m'en envoyer une ?

J'attends de recevoir ta doc pour l'analyse.

A bientôt
0
cs_brau Messages postés 19 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 15 décembre 2014
4 nov. 2008 à 22:31
je peux essayer de te fournir un document, en modifiant le contenu, car c'est confidentiel...
Ils sont remplis et générés via un logiciel.

Je m'occupe de te fournir ça dés demain matin, ou puis je t'envoyer un exemple?

Je te donnerai aussi les traitements par macro que je fais.

Merci beaucoup par avance,

brau
0
Rejoignez-nous