Macro Word & tableaux [Fermé]

- - Dernière réponse :  abcde - 26 mai 2010 à 11:50
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
Afficher la suite 

5 réponses

Messages postés
4429
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1137
0
Merci
Bonjour,

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

Cordialement.
0
Merci
OK merci.
Et pour les tableaux ? Est ce qu'il est possible de déclarer un tableau sans définir sa taille ?
Messages postés
856
Date d'inscription
jeudi 21 janvier 2010
Statut
Membre
Dernière intervention
2 mai 2013
289
0
Merci
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.
Messages postés
856
Date d'inscription
jeudi 21 janvier 2010
Statut
Membre
Dernière intervention
2 mai 2013
289
0
Merci
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
Merci
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