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

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

Votre réponse

12 réponses

Whismeril 12116 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 octobre 2018 Dernière intervention - 15 mars 2014 à 18:20
0
Merci
Déplacé en VBA
Commenter la réponse de Whismeril
Whismeril 12116 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 octobre 2018 Dernière intervention - 15 mars 2014 à 18:23
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
gerardmireille 29 Messages postés vendredi 16 mai 2008Date d'inscription 15 mars 2014 Dernière intervention - Modifié par Whismeril le 15/03/2014 à 20:59
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 12116 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 octobre 2018 Dernière intervention - 15 mars 2014 à 21:00
Ajout des balises de code
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 15 mars 2014 à 22:04
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
gerardmireille 29 Messages postés vendredi 16 mai 2008Date d'inscription 15 mars 2014 Dernière intervention - 16 mars 2014 à 14:34
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 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 16 mars 2014 à 16:58
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 12116 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 octobre 2018 Dernière intervention - 16 mars 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.
Commenter la réponse de gerardmireille
gerardmireille 29 Messages postés vendredi 16 mai 2008Date d'inscription 15 mars 2014 Dernière intervention - 16 mars 2014 à 22:34
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 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 16 mars 2014 à 23:15
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
jordane45 22884 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 18 octobre 2018 Dernière intervention - Modifié par jordane45 le 17/03/2014 à 02:21
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
gerardmireille 29 Messages postés vendredi 16 mai 2008Date d'inscription 15 mars 2014 Dernière intervention - 17 mars 2014 à 14:07
0
Merci
Merci à Jordane45 pour son aide plus concrète.

ma question est résolue.

--
Commenter la réponse de gerardmireille

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.