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
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
A voir également:
Erreur 5941 le membre de la collection requis n'existe pas
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.