Macro word - Suppression ligne tableau + problème compatibilité formulaire avec

Résolu
Jethr0x - 31 juil. 2012 à 14:50
 Jethr0x - 3 août 2012 à 11:20
Bonjour,

Sous Word 2003, je souhaite créer un bouton macro qui supprime les lignes blanches d'un tableau, qui lui-même se complète à l'aide d'une autre macro.

Après quelques recherches sur le forum du site, j'ai trouvé un code qui me semblait adapté.

Malheureusement il y a une erreur dans le code que j'ai adapté (Erreur 5941), quelqu'un pourrait il s'il vous plait m'aider à corriger l'erreur?

Ci-dessous le code:

Private Sub CommandButton1_Click()

Dim ligne As Integer
Dim valeur As Integer

ligne = 2
While ligne <= ActiveDocument.Tables(2).Rows.Count
ActiveDocument.Tables(2).Cell(ligne, 2).Select
valeur = Left(Selection.Tables(2).Cell(ligne, 2).Range.Text, 1)'l'erreur survient à cet endroit
If valeur = 0 Then
Selection.Cells.Delete shiftcells:=wdDeleteCellsEntireRow
Else
ligne = ligne + 1
End If
DoEvents
Wend

End Sub


Si besoin, le lien du fichier word en question:
Lien du fichier word

Egalement, j'ai un autre soucis mais plus en rapport avec word, je ne peux pas utiliser dans le même document Word des macros et des formulaires: lorsque je veux remplir le formulaire, je suis obligé de protéger le document, et du coup lorsque une macro se lance pour écrire du texte dans un tableau, ça met un message d'erreur ("erreur d'execution 6124") car j'imagine que l'accès en écriture du document est bloqué. Auriez-vous une solution à ce problème?

Merci beaucoup d'avance,

Cordialement

21 réponses

Ca marche nikel maintenant, j'ai choisi la 1ère méthode avec Len auquel on enlève 1. Donc le soucis était bien un problème de caractère ASCII présent par défaut dans toutes les cellules du tableau.

Ci-dessous le code final pour éventuellement ceux qui seraient confrontés au même problème:

Private Sub CommandButton1_Click()

Dim ligne As Integer
Dim valeur2 As Variant
Dim oTableR As Object

Set oTableR = ActiveDocument.Tables(2).range
oTableR.Collapse wdCollapseStart

ligne = 8

While ligne <> 0

        ActiveDocument.Tables(2).Cell(ligne, 2).Select
        valeur2 = Len(ActiveDocument.Tables(2).Cell(ligne, 2).range.Text) - 1
        If valeur2 = 1 Then
        Selection.Cells.Delete shiftcells:=wdDeleteCellsEntireRow
     
      Else
      ligne = ligne - 1
     End If
DoEvents
Wend

End Sub


Encore merci à tous ceux qui ont pris la penne de me répondre, et bonne continuation tous.

Cordialement

Jet
0
Rejoignez-nous