Supprimer la ligne d'un tableau word depuis excel

Signaler
Messages postés
2
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
8 juin 2009
-
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
-
Bonsoir,

J'insère des données de cellules Excel dans le tableau d'un document Word. J'insère:
<li> dans la ligne 1 de mon tableau Word la donnée contenue en A1 d'Excel,
</li><li>en ligne 2 la donnée contenue en A2</li><li>en ligne 3 la donnée contenue en A3</li>Les données passent bien d'Excel à mon tableau Word. Ce que je souhaite, c'est  que lorsque la cellule A1, A2 ou A3 est vide alors soit supprimée dans le tableau Word la ligne 1,2 ou 3.

Pour être plus clair, si A2 est vide, je souhaiterai supprimer la ligne 2 du document Word.

Je me suis lancé dans le code suivant qui tourne (il assure le transfert des données des cellules Excel vers les lignes du tableau Word) mais ne supprime pas la ligne du tableau Word si la cellule Excel est vide.

Sub fiche()

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

Set WordApp = CreateObject("word.application")
Set WordDoc = WordApp.Documents.Open("C:\tableau.docx")    'ouvre le document Word

'transfert des données des cellules A1, A2 et A3 dans les lignes 1,2 et 3 du tableau Word.
WordDoc.Tables(1).Rows(1).Range.Text = Range("A1")
WordDoc.Tables(1).Rows(2).Range.Text = Range("A2")
WordDoc.Tables(1).Rows(3).Range.Text = Range("A3")
 
If WordDoc.Tables(1).Rows(1).Range.Text = "" Then WordDoc.Tables(1).Rows(1).Delete
If WordDoc.Tables(1).Rows(2).Range.Text = "" Then WordDoc.Tables(1).Rows(2).Delete
If WordDoc.Tables(1).Rows(3).Range.Text = "" Then WordDoc.Tables(1).Rows(3).Delete

WordDoc.SaveAs ("C:\tableau_nouveau.docx")
   
End Sub

Alors si vous avez des idées ce dont je ne doutes pas, merci pour votre aide

A votre bon coeur

Tim

3 réponses

Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour

Ma question est peut-être naïve mais :
pourquoi ne pas tester la cellule avant de la transférer ?

Bonne journée
Messages postés
2
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
8 juin 2009

Effectivement, j'ai testé cette solution pourtant simple mais à laquelle je n'avais pas pensé, cela marche très bien:

If Cells(1,1)= "" Then WordDoc.Tables1.Rows(1).Delete .

Cette étape passée, j'ai deux nouveaux problèmes: si ma cellule A1 est vide je souhaite désormais supprimer les lignes 1 et 14, j'ai donc fait ça:

If Cells(1,1)= "" Then WordDoc.Tables1.Rows(1).Delete  
If Cells(1,1) = "" ThenWordDoc.Tables1.Rows(14).Delete

Sauf que lorsque je supprime la ligne 1 de Word, alors la ligne qui était en position Rows(14) se retrouve en position Rows(13).

Je me retrouve a taper ce code:

If Cells(1,1)= "" Then WordDoc.Tables1.Rows(1).Delete 
If Cells(1,1)= "" Then WordDoc.Tables1.Rows(13).Delete

Il n'y aurait pas une possibilité de faire un truc avec

If Cells(1,1) = "" Then WordDoc.Tables1.Rows(1).Delete AndWordDoc.Tables1.Rows(14).Delete

ce qui permettrait d'éviter les décalages, car quelquefois j'ai plusieurs conditions et c'est difficile de gérer les décalages
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Je ne voyais pas celà comme ça mais plutôt comme
If range("a1")= ""  then
else
WordDoc.Tables(1).Rows(1).Range.Text = Range("A1")
end if

sinon selectionner la ligne et
Selection.Delete Unit:=wdCharacter, Count:=1

Bonne journée