Macro Word & tableaux

abcde -  
 abcde -
Bonjour,

J'ai un document Word qui contient des tableaux.
Je voudrais mettre, par macro, un "en tete" du genre Colonne1/Colonne2/Colonne3 à tous mes tableaux dont le contenu commence par un caractere spécial (ici *, mais ca me pose probleme).
J'ai écrit la macro suivante, mais ca ne marche pas:
- j'ai une erreur de syntaxe avec le If var(0) = * mais je ne sais pas comment l'écrire
- je dois avoir un probleme avec la déclaration de ma variable var qui est en fait un tableau...mais je ne sais pas comment on peut définir un tableau de taille indéterminée en VBA
- j'ai peut etre d'autres erreurs que la précéndet m'empeche de voir ?

Si vous pouviez me donner votre avis sur mon code, ce serait sympa.

Sub MyMacro()

Dim var As String

For Each Tableau In ActiveDocument.Tables
Set MyTableau = WordDoc.Tableau
For i = 1 To Tableau.Columns.Count
For j = 1 To Tableau.Columns(i).Cells.Count
var = Tableau.Columns(i).Cells(j)

If var(0) = * Then

Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext, Count:=1, Name:=""
Selection.MoveUp Unit:=wdLine, Count:=1

ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:= _
3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed
Selection.TypeText Text:="Col_1"
Selection.MoveRight Unit:=wdCell
Selection.TypeText Text:="Col_2"
Selection.MoveRight Unit:=wdCell
Selection.TypeText Text:="Col_3"
End If
Next
Next
Next

End Sub

5 réponses

  1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    Bonjour,

    essaie avec
    If var(0) ="*"
    , et ça devrait déjà mieux se passer.

    Cordialement.
    0
  2. abcde
     
    OK merci.
    Et pour les tableaux ? Est ce qu'il est possible de déclarer un tableau sans définir sa taille ?
    0
  3. sriviere Messages postés 879 Statut Membre 413
     
    Hello,

    Si je comprends bien le problème, pourquoi tu ne ferais pas :

    Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext, Count:=1, Name:=""

    Là, tu es dans ta première cellule, et tu enregistres ça dans la suite de ta macro :

    Menu tableau
    Insertion une ligne au-dessus

    et cela pour tous tes tableaux (Next)

    Quand tu es dans la première ligne de ton tableau, l'instruction insérer une ligne au dessus prend toujours en compte le nombre de colonnes que tu as dans ton tableau quel que soit le nombre de colonnes.
    0
  4. sriviere Messages postés 879 Statut Membre 413
     
    Voilà une macro avec une boucle :

    Sub Macro xxx()
    '

    Selection.Find.ClearFormatting
    With Selection.Find
    .Text = "*"
    .Replacement.Text = ""
    .Wrap = wdFindContinue
    End With
    Selection.Find.Execute
    While Selection.Find.Found
    Selection.InsertRowsAbove 1
    Selection.Find.Execute
    Wend
    End Sub
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. abcde
     
    Je suis un peu long pour répondre :( Merci de votre aide.

    Mais j'ai toutefois un petit soucis avec le code précédent : je me retrouve avce une boucle infinie qui fait bugger Word.
    En effet, j'ai l'impression que le texte "*" n'est pas remplacé et qu'il tourne ainsi indéfiniment.
    y aurait il une autre commande que .Replacement.Text = "" pour effacer mon texte "*" ?

    Merci
    0