Bonjour,
J'ai créé comme tu me le demandais une macro avec l'enregistreur de macro mais je me suis aperçu que cette macro supprimai les lignes que j'avais sélectionné alors que dans mon cas, je ne connais pas la position des lignes vides.
C'est un bon point de départ... et c'est CE code qui tu aurais du nous poster sur le forum.
Suite à ça.. nous aurions pu essayer de t'aider à l'adapter à tes besoins.
Copier/coller du code provenant de n'importe où sans savoir à quoi il sert ni même s'il fonctionne ne peut que te desservir et n'a aucun intérêt lorsque l'on pose une question...
C'est comme si demain, lorsque je venais poser une question sur l'utilisation d'une librairie java et que pour illustrer ma question je postais une recette de tartes aux pommes.....
Je caricature bien sur...
Donc reprenons depuis le début :
Tu cherches à supprimer les lignes vides (sans en connaitre l'emplacement à l'avance) de tableaux créés sous WORD.
Macro étant destinée à fonctionner sous ta version d'office : 2003
En gros :Il va donc te falloir
- Une boucle qui parcours tes tableaux
- Un test conditionnel pour s'assurer que la ligne est vide
- Une instruction qui supprime ces lignes.
Avec la macro que tu as enregistré.. tu disposes déjà au moins de la suppression.
Tu peux aussi t'inspirer de macros telles que celles présentes dans ce site :
http://www.extendoffice.com/documents/word/721-word-remove-empty-rows-columns-in-table.html
The VBA code to remove all empty rows and columns from tables:
Sub DeleteEmptyTablerowsandcolumns()
Application.ScreenUpdating = False
Dim Tbl As Table, cel As Cell, i As Long, n As Long, fEmpty As Boolean
With ActiveDocument
For Each Tbl In .Tables
n = Tbl.Columns.Count
For i = n To 1 Step -1
fEmpty = True
For Each cel In Tbl.Columns(i).Cells
If Len(cel.Range.Text) > 2 Then
fEmpty = False
Exit For
End If
Next cel
If fEmpty = True Then Tbl.Columns(i).Delete
Next i
Next Tbl
End With
With ActiveDocument
For Each Tbl In .Tables
n = Tbl.Rows.Count
For i = n To 1 Step -1
fEmpty = True
For Each cel In Tbl.Rows(i).Cells
If Len(cel.Range.Text) > 2 Then
fEmpty = False
Exit For
End If
Next cel
If fEmpty = True Then Tbl.Rows(i).Delete
Next i
Next Tbl
End With
Set cel = Nothing: Set Tbl = Nothing
Application.ScreenUpdating = True
End Sub
Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane