Supprimer les lignes vides d'un tableau Word

Résolu
gerardmireille Messages postés 29 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 15 mars 2014 - 15 mars 2014 à 17:58
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



--
A voir également:

7 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
15 mars 2014 à 18:20
Déplacé en VBA
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
15 mars 2014 à 18:23
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
0
gerardmireille Messages postés 29 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 15 mars 2014
Modifié par Whismeril le 15/03/2014 à 20:59
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...

--
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
15 mars 2014 à 21:00
Ajout des balises de code
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 15/03/2014 à 22:10
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
!!!
0
gerardmireille Messages postés 29 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 15 mars 2014
16 mars 2014 à 14:34
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



--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 16/03/2014 à 17:00
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.
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
Modifié par Whismeril le 16/03/2014 à 21:09
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gerardmireille Messages postés 29 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 15 mars 2014
16 mars 2014 à 22:34
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




--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 16/03/2014 à 23:18
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.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié par jordane45 le 17/03/2014 à 02:21
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
0
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
Merci à Jordane45 pour son aide plus concrète.

ma question est résolue.

--
0
Rejoignez-nous