Suppression d'un saut de paragraphe entre deux tableaux sous Word 2003
MatFoX31
Messages postés2Date d'inscriptionlundi 19 janvier 2009StatutMembreDernière intervention10 février 2011
-
8 févr. 2011 à 18:01
MatFoX31
Messages postés2Date d'inscriptionlundi 19 janvier 2009StatutMembreDernière intervention10 février 2011
-
10 févr. 2011 à 15:27
Bonjour à tous !
D'habitude je trouve toujours mon bonheur sur ce site lorsque je suis bloqué, mais cette fois-ci que nenni.
Désolé à l'avance si je n'ai pas posté au bon endroit, il ne s'agit pas à proprement parler de VB mais de VBA, voire de Word.
Voici le problème :
Dans mon document Word, j'ai un tableau d'une ligne, un retour paragraphe, puis un tableau d'une ligne, un retour paragraphe et ainsi de suite. Dans ce document, il y a également du texte, des titres,...
Je voudrais, à l'aide d'une macro, supprimer tous les retours paragraphe du document à chaque fois qu'il se situe entre deux tableaux.
Ce que j'ai fait comme test : A l'aide de la fonction "Rechercher" de Word, si l'on met dans la zone de texte le caractère "^p", on détecte bien les sauts de paragraphe entre tableaux, et ceux du reste du document également.
Par contre, si on utilise la fonction "Remplacer", et qu'on remplace par "toto" (original je sais...), les sauts de paragraphes entre tableaux ne sont pas remplacés, alors que ceux du reste du document le sont.
Les sauts de paragraphe entre tableaux sont-ils différent des sauts de paragraphe "normaux" en terme de caractère de détection ? Si oui, il y peut-être un moyen de l'exploiter pour n'appliquer cette mise en forme qu'aux sauts de paragraphe entre 2 tableaux.
Merci d'avance !
A voir également:
Suppression d'un saut de paragraphe entre deux tableaux sous Word 2003
MatFoX31
Messages postés2Date d'inscriptionlundi 19 janvier 2009StatutMembreDernière intervention10 février 2011 10 févr. 2011 à 15:27
Effectivement, "saut" n'est pas le bon terme, c'est une marque de paragraphe, soit l'équivalent de "^p".
Mais je viens de trouver une solution à mon problème. Je me place à la fin de chaque tableau, puis juste après en être sorti, je supprime la ligne active si celle ci est égale à une marque de paragraphe.
Voici le code si ça peut intéresser quelqu'un :
Dim ligne As Integer
Dim valeur As Integer
Dim nbTableaux As Integer
Dim nbTableaux_after As Integer
Dim tableau As Integer
Sub Supprime_lignes_vides()
tableau = 3 'Je ne dois pas toucher aux 2 premiers tableaux
nbTableaux = ActiveDocument.Tables.Count
While tableau <= nbTableaux
ActiveDocument.Tables(tableau).Select
If Selection.Information(wdWithInTable) = True Then
Selection.Tables(1).Select
Selection.ParagraphFormat.KeepWithNext = True
Selection.Cells(Selection.Cells.Count).Select
Do While Selection.Information(wdWithInTable) = True
Selection.MoveRight Unit:=wdCharacter, Count:=1
Loop
If Selection = Chr(13) Then Selection.Delete Unit:=wdCharacter, Count:=1
End If
nbTableaux_after = ActiveDocument.Tables.Count
If nbTableaux = nbTableaux_after Then
Selection.ParagraphFormat.KeepWithNext = False
tableau = tableau + 1
Else
nbTableaux = nbTableaux_after
End If