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 20/07/2007, 15h45   #1
Futur Membre du Club
 
Homme Baptiste
Développeur .NET
Inscription : janvier 2005
Messages : 64
Détails du profil
Informations personnelles :
Nom : Homme Baptiste
Âge : 27
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur .NET
Secteur : Finance

Informations forums :
Inscription : janvier 2005
Messages : 64
Points : 16
Points : 16
Par défaut [Tableau] Atteindre un tableau dans une forme

Voilà mon problème. Avant, j'avais un tableau que je pouvais atteindre par:
WordDoc.Tables(iTab).Range.Rows.Add
avec iTab un compteur de tableaux.

Malheureusement, dans un souci de mise en page, j'ai inséré mon deuxième tableau (iTab=2) dans un cadre invisible. Du coup, je n'arrive plus à écrire dedans car il ne doit plus être joignable par WordDoc.Tables(iTab)

Document Word (Word 2000) ici: http://dl.free.fr/bpEsHNDJG/Avoir_Beta.doc


Voici mon code original:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
Private Sub Form_Load()
 
''''''''''''''''''''''''''''''''''
' RECUPERATION LIGNE DE COMMANDE '
''''''''''''''''''''''''''''''''''
 
Dim sCommandline As String 'Variable contenant la ligne de commande complète
Dim Params() As String 'Tableau regroupant tous les paramètres
Dim NbParam As Long 'Nombre de paramètres
Dim sWorkingpath As String 'Chemin de l'exe
 
sWorkingpath = CurDir 'On récupère le directory de travail
sCommandline = Command() 'Lecture de la ligne de commande
Params() = Split(sCommandline, " ") 'Permet de découper les différents arguments
NbParam = UBound(Params) 'UBound() retourne la valeur du dernier index du tableau Params()
 
'''''''''''''''''''
' OUVERTURE EXCEL '
'''''''''''''''''''
 
'Dim appExcel As Excel.Application
'Dim wbExcel As Excel.Workbook
'Dim wsExcel As Excel.Worksheet
Dim appExcel As Object
Dim wbExcel As Object
Dim wsExcel As Object
 
Set appExcel = CreateObject("Excel.Application") 'Ouverture de l'application
Set wbExcel = appExcel.Workbooks.Open(CurDir + "\" + Params(1)) 'Ouverture d'un fichier
Set wsExcel = wbExcel.Worksheets(1) 'wsExcel correspond à la première feuille du fichier
appExcel.Visible = True 'Excel non-visible
 
''''''''''''''''''
' OUVERTURE WORD '
''''''''''''''''''
 
'Dim WordApp As Word.Application 'Object
'Dim WordDoc As Word.Document ' Object
Dim WordApp As Object
Dim WordDoc As Object
Set WordApp = CreateObject("Word.Application") 'Ouverture de l'application
Set WordDoc = WordApp.Documents.Open(CurDir + "\" + Params(0)) 'Ouverture du fichier
WordApp.Visible = True 'Word non-visible
 
''''''''''''''''''''''''
' INSERTION EXCEL2WORD '
''''''''''''''''''''''''
 
Dim i As Long
Dim j As Long
Dim sData() As String
Dim TMP As String
Dim iTab As Long
Dim iIndex As Long
 
i = 1 'compteur de ligne
j = 1 'compteur de colonne
 
'Tant qu'on a une ligne
While wsExcel.Cells(i, j) <> ""
 
    'On isole le marqueur
    sData() = Split(wsExcel.Cells(i, j), ":")
 
    'On vérifie si il s'agit d'une insertion dans un tableau
    If InStr(1, sData(0), "Tab", 1) = 1 Then
 
        'On récupère le numéro du tableau
        iTab = Int(Right(sData(0), 1))
 
        'On ajoute une ligne au tableau
        WordDoc.Tables(iTab).Range.Rows.Add
 
        'On prend l'index
        iIndex = WordDoc.Tables(iTab).Rows.Count
 
        'On ajoute la première case manuellement (cf. Split de la case)
        WordDoc.Tables(iTab).Columns(j).Cells(iIndex).Range.Text = sData(1)
        j = j + 1
 
        'Tant qu'on est pas au bout de la ligne
        While wsExcel.Cells(i, j) <> ""
 
            'On copie les infos dans le tableau
            WordDoc.Tables(iTab).Columns(j).Cells(iIndex).Range.Text = wsExcel.Cells(i, j)
            j = j + 1
        Wend
 
    'Sinon on marque dans le signet
    Else
        On Error Resume Next
        WordDoc.Bookmarks(sData(0)).Range.Text = sData(1)
    End If
 
    'On incrémente la ligne et on remet à 0 la colonne
    i = i + 1
    j = 1 'Remise à Zero
 
Wend
 
'''''''''''''''''''
' FERMETURE EXCEL '
'''''''''''''''''''
wbExcel.Close 'Fermeture du classeur Excel
appExcel.Quit 'Fermeture de l'application Excel
 
'Désallocation mémoire
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing
 
''''''''''''''''''
' FERMETURE WORD '
''''''''''''''''''
sData() = Split(Params(1), ".")
WordApp.ActiveDocument.SaveAs (CurDir + "\" + sData(0) + ".doc") 'Sauvegarde du fichier
WordDoc.Close 'Fermeture du document Word
WordApp.Quit 'Fermeture de l'application Word
 
'Désallocation mémoire
Set WordDoc = Nothing
Set WordApp = Nothing
 
Unload Me 'On kill l'application
 
End Sub
Si quelqu'un a une solution, c'est assez urgent, merci !
baptx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 16h07   #2
Futur Membre du Club
 
Homme Baptiste
Développeur .NET
Inscription : janvier 2005
Messages : 64
Détails du profil
Informations personnelles :
Nom : Homme Baptiste
Âge : 27
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur .NET
Secteur : Finance

Informations forums :
Inscription : janvier 2005
Messages : 64
Points : 16
Points : 16
En fait j'ai pas forcément été très clair.

Je cherche à pouvoir piloter l'insertion de lignes dans le deuxième tableau du document, celui qui se trouve être dans le cadre invisible (cf. doc word).
baptx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 16h22   #3
Futur Membre du Club
 
Homme Baptiste
Développeur .NET
Inscription : janvier 2005
Messages : 64
Détails du profil
Informations personnelles :
Nom : Homme Baptiste
Âge : 27
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur .NET
Secteur : Finance

Informations forums :
Inscription : janvier 2005
Messages : 64
Points : 16
Points : 16
J'ai trouvé comment atteindre une zone de texte avec:
Code :
ActiveDocument.Shapes(1).TextFrame.TextRange.Text
Mais j'arrive pas à trouver mon tableau...
baptx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 17h30   #4
Futur Membre du Club
 
Homme Baptiste
Développeur .NET
Inscription : janvier 2005
Messages : 64
Détails du profil
Informations personnelles :
Nom : Homme Baptiste
Âge : 27
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur .NET
Secteur : Finance

Informations forums :
Inscription : janvier 2005
Messages : 64
Points : 16
Points : 16
Bon j'ai trouvé. Pour ceux que ça interresse j'ai du aller à la main dans toutes les zones de texte pour trouver la bonne...

Code :
WordDoc.Shapes(4).GroupItems(1).TextFrame.TextRange.Tables(1)
baptx 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 22h53.


 
 
 
 
Partenaires

Hébergement Web