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 12/12/2007, 16h22   #1
Membre du Club
 
Inscription : novembre 2007
Messages : 182
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 182
Points : 67
Points : 67
Par défaut donner un nom à un tableau

bonjour,

je suis encore débutant en vba, surtout pour word

mon projet est de creer un tableau avec un nom pour pouvoir pointer dessus lorsque je le met à jour.
l'initialisation des données et la mise à jour de ce tableau doit provenir d'une table écrite sous vba qui a récolté des données distribiées dans le document.
j' ai déjà réussi à faire la table et y ranger mes données.


quelqu'un peut il me donner quelques indications pratiques ?

avec mes remerciements
Patnel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 19h14   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
C'est avec son index que tu dois adresser un tableau.

Mais on ne peut lui donner un nom.
Ce que tu peux faire, c'est mettre un signet sur ton tableau.
__________________
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 13/12/2007, 08h28   #3
Membre du Club
 
Inscription : novembre 2007
Messages : 182
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 182
Points : 67
Points : 67
je me doutais bien de quelque chose comme ça,
quel est l'interet du signet ?

as tu une idée pour remplir directement le tableau avec les données de la table ?

en tout cas merci pour la réponse

à +
patnel
Patnel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 09h15   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Le signet est un objet que l'on peut adresser directement.

Code :
1
2
 
ActiveDocument.Bookmarks("MonSignet").select
Je pense qu'il y a une incompréhension de ma part.

Qu'entends-tu par table et par tableau ?
__________________
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 13/12/2007, 10h22   #5
Membre du Club
 
Inscription : novembre 2007
Messages : 182
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 182
Points : 67
Points : 67
avec mon exemple ça va aller mieux
voilà mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
 
Sub trace()
 
Dim i, j, k As Integer
Dim req_nom, chap_nom As String
Dim n_req_nom As Integer
Dim Traca(1 To 100, 1 To 2) As String
Dim Tab_Trace As Range
 
' récuprer le nom du req
n_req_nom = 0
For i = 63 To ActiveDocument.Paragraphs.Count
 
 
If ActiveDocument.Paragraphs(i).Range.Style = "IVQ_REQ" Then
n_req_nom = n_req_nom + 1
req_nom = "IVQ_REQ_" & n_req_nom
Traca(n_req_nom, 1) = req_nom
 
End If
'recuperer le titre du chapitre
If ActiveDocument.Paragraphs(i).Range.Style = "Titre 3" Then
chap_nom = ActiveDocument.Paragraphs(i).Range.Text
Traca(n_req_nom, 2) = chap_nom
End If
 
Next i
 
' placer le tableau en fin de document
 
Selection.EndKey Unit:=wdStory
ActiveDocument.Tables.Add Range:=Selection.Range, numrows:=n_req_nom, numcolumns:=2
Set Tab_Trace = ActiveDocument.Tables(1)
End Sub
ça plante sur la dernière ligne.

en fait je veux avoir une variable Tab_Trace qui pointe sur mon tableau pour le mettre à jour avec la variable Tableau Traca.

Patnel
Patnel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 11h46   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Tab_Trace étant un range, on ne peut que lui attribuer un objet Range.

Code :
Set Tab_Trace = ActiveDocument.Tables(1).Range
Devrait probablement mieux convenir.
__________________
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 13/12/2007, 15h16   #7
Membre du Club
 
Inscription : novembre 2007
Messages : 182
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 182
Points : 67
Points : 67
ok et merci question de cohérence

là mon code ne plante pas rien n'est écrit dans le tableau aprés l'éxécution du code d'écriture des deux derniéres lignes

mystére ??

Patnel

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
Sub tableau()
'
' tableau Macro
' Macro enregistrée le 12/12/2007 par Patrick Brunel 135659
'
    ActiveDocument.Tables.Add Range:=Selection.Range, numrows:=230, numcolumns _
        :=2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitContent
    Selection.TypeText Text:="REQ"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.TypeText Text:="titre"
    ActiveWindow.ActivePane.VerticalPercentScrolled = 41
    ActiveWindow.ActivePane.VerticalPercentScrolled = 51
End Sub
Sub trace()
 
Dim i, j, k As Integer
Dim req_nom, chap_nom As String
Dim n_req_nom As Integer
Dim Traca(1 To 100, 1 To 2) As String
Dim Tab_Trace As Range
 
' récuprer le nom du req
n_req_nom = 0
For i = 63 To ActiveDocument.Paragraphs.Count
 
 
If ActiveDocument.Paragraphs(i).Range.Style = "IVQ_REQ" Then
n_req_nom = n_req_nom + 1
req_nom = "IVQ_REQ_" & n_req_nom
Traca(n_req_nom, 1) = req_nom
 
End If
'recuperer le titre du chapitre
If ActiveDocument.Paragraphs(i).Range.Style = "Titre 3" Then
chap_nom = ActiveDocument.Paragraphs(i).Range.Text
Traca(n_req_nom, 2) = chap_nom
End If
 
Next i
 
' placer le tableau en fin de document
Stop
Selection.EndKey Unit:=wdStory
On Error Resume Next
 
Set Tab_Trace = ActiveDocument.Tables(1)
 
If Err.Number = 0 Then
ActiveDocument.Tables.Add Range:=Selection.Range, numrows:=n_req_nom, numcolumns:=2
End If
Set Tab_Trace = ActiveDocument.Tables(1)
 
Tab_Trace.Columns(1).Cells(1).Range.Text = "Exigence"
Tab_Trace.Columns(2).Cells(1).Range.Text = "titre"
End Sub
Patnel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 15h22   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Je n'ai pas détaillé tout ton code, mais pour écrire dans un tableau


Il ne faut pas définir ta table comme range, mais comme table.

Code :
1
2
 
Dim Tab_Trace As Table
__________________
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 14/12/2007, 09h47   #9
Membre du Club
 
Inscription : novembre 2007
Messages : 182
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 182
Points : 67
Points : 67
ok maintenant ça marche

je donne le code complet pour ceux que ça interesse.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
 
Sub trace()
 
Dim i, j, k As Integer
Dim req_nom, chap_nom As String
Dim n_req_nom As Integer
Dim Traca(1 To 100, 1 To 2) As String
Dim Tab_Trace As Table
 
' récuprer le nom du req
n_req_nom = 0
For i = 63 To ActiveDocument.Paragraphs.Count
 
 
If ActiveDocument.Paragraphs(i).Range.Style = "IVQ_REQ" Then
n_req_nom = n_req_nom + 1
req_nom = "IVQ_REQ_" & n_req_nom
Traca(n_req_nom, 1) = req_nom
 
End If
'recuperer le titre du chapitre
If ActiveDocument.Paragraphs(i).Range.Style = "Titre 3" Then
chap_nom = ActiveDocument.Paragraphs(i).Range.Text
chap_nom = Left(chap_nom, Len(chap_nom) - 1) ' enléve le retour chariot
Traca(n_req_nom, 2) = chap_nom
End If
 
Next i
 
' placer le tableau en fin de document
Selection.EndKey Unit:=wdStory
 
' vérifier si il existe sinon le créer
 
On Error Resume Next
 
Set Tab_Trace = ActiveDocument.Tables(2)
 
If Err.Number <> 0 Then
ActiveDocument.Tables.Add Range:=Selection.Range, numrows:=n_req_nom + 1, numcolumns:=2
End If
Set Tab_Trace = ActiveDocument.Tables(2)
 
' place l'entete
 
Tab_Trace.Columns(1).Cells(1).Range.Text = "EXIGENCE"
 
Tab_Trace.Columns(2).Cells(1).Range.Text = "TITRE"
 
'met à jour le tableau
 For i = 1 To n_req_nom + 1
Tab_Trace.Columns(1).Cells(i + 1).Range.Text = Traca(i, 1)
Tab_Trace.Columns(2).Cells(i + 1).Range.Text = Traca(i, 2)
Next i
 
End Sub
merci beaucoup

à +

Patnel
Patnel 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 07h19.


 
 
 
 
Partenaires

Hébergement Web