Supprimer ligne tableau word si 0

Tote - Modifié le 26 avril 2023 à 00:01
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 - 26 avril 2023 à 15:41

Bonjour,

J'ai créé un modèle word qui se remplit automatiquement à partir d'un fichier excel.

Par contre lorsque ce modèle se remplit, certaines cellules sont à 0, je voudrais les supprimer à l'aide de VBA.

J'ai trouvé se code sur internet qui fonctionne pour les cellules vides mais je n'arrive pas à l'adapter pour les cellules = 0

 
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 

Pouvez-vous m'aider ?

Merci d'avance.

4 réponses

vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
25 avril 2023 à 19:57

Bonjour

Déjà pour poster du code prière de suivre ce tuto : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Ensuite que fait ce code ? A ces lignes

If Len(cel.Range.Text) > 2 Then

on teste si ce contenu de la cellule contient plus de 2 caractères .

En remplaçant la variable fEmpty par FZero  et en remplaçant les 2 lignes précédentes par

If cel.Range.Text <> "0" Then

cela devrait faire le job ( on teste si le contenu de la cellule est <> "0" . Dans ce cas fEmpty sera False et on n'efface pas . Si le contenu de la cellule est "0" on efface . )

Attention si on efface on supprime toute la ligne ou toute la colonne .


0

Bonjour,

Merci pour le tuto.

Et merci je vais essayer, je souhaite effectivement supprimer la ligne entière.

0

Bonjour,

ça fonctionne par contre si je veux juste supprimer la ligne ? et non la colonne.

0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
26 avril 2023 à 15:41

Bonjour

dans le code de ton premier message ( un merci à @karamel qui a mis les balises de code en passant ) supprime les lignes 5 jusqu'à 19 ( la 5 et la 19 sont aussi à supprimer ) 


0
Rejoignez-nous