Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/01/2008, 14h39   #1
Invité régulier
 
Inscription : août 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 22
Points : 6
Points : 6
Par défaut creer un tableau à 1 et 3 colonnes

Bonjour,

J'ai une liste de mots dans un document Word.

Je souhaite insérer ces mots dans un tableau word (ça sans vba ok).
MAIS : en dessous de chaque cellule contenant ce mot, je souhaite insérer dans le tableau une ligne vide de 3 cellules (la largeur de mes 3 cellules étant égale à la largeur de la cellule précedente contenant un mot de la liste).

Je pense que vba Word peut faire ce type de chose. Mais je n'ai jamais utiliser vba Word

Merci d'avance à toutes informations et conseils,

MarLoZ
MarLoZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 15h50   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 360
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 360
Points : 29 280
Points : 29 280
Voilà un exemple

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub testAjoutLigne()
Dim i As Integer
i = 0
For i = 1 To Tables(1).Rows.Count
    If Len(Tables(1).Cell(i, 1).Range.Text) > 2 Then
        Tables(1).Rows.Add beforerow:=Tables(1).Rows(i + 1)
 
        Tables(1).Cell(i + 1, 1).Split NumColumns:=3
 
        i = i + 1
    End If
Next i
End Sub
Le principe :
On sélectionne une cellule, on mesure le texte qu'elle contient.
La longueur de texte d'une cellule vide fait 2 caractères. On ne tiendra donc compte que des cellules qui font plus de deux caractères.

Si la cellule fait plus de deux caractères, on ajoute un ligne en dessous.

En fait, c'est au-dessus de la ligne du dessous.
Cette nouvelle ligne qui conporte une seule cellule est coupée en trois.
on passe à la suivante.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 17h15   #3
Invité régulier
 
Inscription : août 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 22
Points : 6
Points : 6
Merci beaucoup Oli. Ton aide m'est très précieuse.

De mon côté j'avais mis ma liste de mots dans un tableau word au format voulu. Puis créé une ligne en position n°2, une ligne vide formée de trois cellules. Puis j'ai utilisé le code suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub AjoutLign()
 
Dim x As Integer, i As Integer
 
'compte le nombre de lignes dans le tableau
x = ActiveDocument.Tables(1).Rows.Count
 
'copie la 2eme ligne
ActiveDocument.Tables(1).Rows(2).Range.Copy
 
'inserer une nouvelle ligne en position paire
For i = 4 To x Step 2
 
'colle dans la nième ligne du tableau
ActiveDocument.Tables(1).Rows(i).Range.Paste
 
Next i
 
End Sub
Mon problème dans ce cas, c'est le calcul de x (c'est-à-dire du nombre de lignes de mon tableau). X est calculé à l'initiale. Mais comme j'ajoute à chaque fois une ligne, X évolue... L'insertion de mes lignes vides ne va donc pas jusqu'au bout de mon fichier.... Quelle est la solution pour faire augmenter X à chaque passage du compteur?

MarLoZ
MarLoZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 17h32   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 360
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 360
Points : 29 280
Points : 29 280
La solution est dans mon code non ?

Code :
For i = 1 To Tables(1).Rows.Count
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2008, 10h54   #5
Invité régulier
 
Inscription : août 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 22
Points : 6
Points : 6
Bonjour Oli,

Oui tout à fait la réponse est dans ton code. Je l'ai d'ailleurs utilisée dans mon code.

Pour la solution que tu proposes, le compte des lignes ne pose pas de problème :

Citation:
Tables(1).Rows.Count
Mais dans la solution que j'avais envisagée, cela pose un problème. Comme je compte en début de programme le nombre de lignes du tableau, puis que j'ajoute au fur et à mesure une ligne de plus dans ce même tableau, à la fin du programme mon tableau est bien plus long qu'initialement. Il faut que j'insère le compte des lignes ailleurs, et que je l'actualise au fur et à mesure du programme. C'est possible non?

En optant pour ta solution, c'est vrai je n'ai pas ce souci.

Merci pour ton aide,

MarLoZ
MarLoZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h24.


 
 
 
 
Partenaires

Hébergement Web