Supprimer les lignes vides d'un tableau Word [Résolu]

Messages postés
29
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
15 mars 2014
- - Dernière réponse : gerardmireille
Messages postés
29
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
15 mars 2014
- 17 mars 2014 à 14:07
Bonjour,
je cherche vainement une macro me permettant de supprimer les lignes vides d'un tableau Word. j'utilise Excel et Word 2003.
Merci de votre aide



--
Afficher la suite 

7 réponses

Messages postés
13818
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 octobre 2019
308
0
Merci
Déplacé en VBA
Commenter la réponse de Whismeril
Messages postés
13818
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 octobre 2019
308
0
Merci
Bonsoir,

il existe une fonction qui permet d'enregistrer dans une macro ce que tu faits à la main.
C'est un point de départ quand on ne sait pas comment coder une action particulière.

Je te conseille donc de placer un tableau, de lancer un enregistrement, de supprimer une ligne du tableau, stopper l'enregistrement et éditer la macro pour voir.

Si tu ne t'en sors pas reviens, en postant le code
Commenter la réponse de Whismeril
Messages postés
29
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
15 mars 2014
0
Merci
Bien sur j'avais utilisé la fonction dont tu me parles, mais je veux que la macro supprime les lignes vides sans que j'en connaisse la position de la première ligne à supprimer.

Ci joint le code que j'avais saisi

Sub Suplignevides ()
Dim r As Long

For = ActiveSheet.UsedRange.Rows.Count To 1 Step - 1
If Application.CountA(.Rows(r)) = 0 Then.Rows(r).Delete
Next r
End Sub

La macro plante sur le ligne If Application etc...

--
Whismeril
Messages postés
13818
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 octobre 2019
308 -
Ajout des balises de code
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212 -
Bonjour,
1) Whismeril ne t'a pas parlé d'une 'fonction", mais de l'enregistreur de macro ...
2) le signe . devant un objet n'a de sens qu'à l'intérieur d'un bloc With (with .... tel object ...)
et :
3) le code que tu montres ne saurait en aucun cas concerner :
les lignes vides d'un tableau Word
!!!
Commenter la réponse de gerardmireille
Messages postés
29
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
15 mars 2014
0
Merci
Bonjour,

1°) J'ai employé le terme de fonction afin de respecter la terminologie qu'enmployait Whismeril (voir plus haut).

2°) Je ne comprends pas le sens de ton deuxième paragraphe.

3°) Le code que j'ai présenté a été trouvé sur un forum ayant pour objet " suppression de lignes vides dans un tableau Word"

4°) Est ce que tu veux véritablement m'aider à résoudre mon problème grâce à un transfert de connaissances ?
- si oui réponds moi clairement SVP.
- Sinon passes ton chemin.
Cordialement



--
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212 -
Je passe dans ces conditions mon chemin.
(et . .. je t'avais répondu clairement en ce qui concerne les blocs With et le . )
Bonne chance.
Whismeril
Messages postés
13818
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 octobre 2019
308 -
Bonsoir,
Mea coulpa terme fonction était malvenu de ma part.

Par contre je rejoins Uc, tu as une instruction qui commence par un "." sans rien pour indiquer d'où elle sort. Il te l'a signalé de façon à ce que tu cherches et trouves toi même cette erreur.

Ensuite ActiveSheet, pour ce que j'en sais, est un mot clé d'excel.

Si tu avais enregistré une macro comme je te l'ai suggéré, je pense que tu nous aurais montré un code bien différent.
Commenter la réponse de gerardmireille
Messages postés
29
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
15 mars 2014
0
Merci
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. je l'ai d'ailleurs expliqué dans une de mes réponses.
Si parfois je m'adresse à ce forum c'est pour essayer de progresser, donc il faut que mes interlocuteurs m'aident au moins un peu. Me dire c'est pas bon cherche !!! OUI MAIS OU !!! je n'ai pas la science infuse.
J'ai signalé que le code que j'avais posté avait été récupéré sur un autre forum, il pouvait naturellement contenir des erreurs.
En conclusion, je suis déçu du retour négatif que j'ai eu avec Codes Sources aujourd'hui alors que cela n'était pas le cas au début de mes échanges avec les adhérents qui m'ont d'ailleurs, à l'époque mis le pied à l'étrier alors que j'avais aucune notion de la programmation en visual basic .

Je reste dans l'attente d'une solution à mon problème.

Merci à celui qui saura se mettre à ma portée.

Cordialement




--
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212 -
Retourne là où tu as ramassé incomplètement ce code
Tu y verras un bloc .With (et ouvre ton aide VBA sur ce mot !).

PS : et (une autre fois) ... ce code est du VBA de Excel et non de Word.
Commenter la réponse de gerardmireille
Messages postés
26492
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 octobre 2019
316
0
Merci
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
Commenter la réponse de jordane45
Messages postés
29
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
15 mars 2014
0
Merci
Merci à Jordane45 pour son aide plus concrète.

ma question est résolue.

--
Commenter la réponse de gerardmireille