J'ai travaillé sur une macro de conversion des tableaux en HTML, avec une grande aide de "bbil", mais il me reste un petit détail que je n'arrive pas a implémenter, je vous explique :
J'utilise cette macro de conversion vers HTML (pour les tableaux):
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Private Sub Mes_Tableaux(T, tMes() As Single) ' ' Calcule emplacement des colonnes.. ' ' Dim r As Row Dim c As Cell Dim sLargeur As Single Dim bTrouve As Boolean Dim i As Integer Dim j As Integer ReDim Preserve tMes(0) tMes(0) = 0 For Each r In T.Range.Rows sLargeur = 0 For Each c In r.Range.Cells sLargeur = sLargeur + c.PreferredWidth i = 0 bTrouve = False While i <= UBound(tMes) And Not bTrouve If tMes(i) < sLargeur Then i = i + 1 Else bTrouve = True End If Wend If Not bTrouve Then If tMes(i - 1) < sLargeur - 0.01 Then ReDim Preserve tMes(i) tMes(i) = sLargeur End If Else If tMes(i) - sLargeur > 0.1 Then For j = UBound(tMes) To i + 1 Step -1 tMes(j) = tMes(j - 1) Next tMes(i) = sLargeur End If End If Next Next End Sub
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Private Function iNbCol(c As Cell, sDepart As Single, tMes() As Single) As Integer ' ' Calcul Nombre de Colonnes ' ' Dim iDeb As Integer Dim iFin As Integer Dim i As Integer Dim bTrouver As Boolean iDeb = 0 iFin = 0 bTrouve = False While i <= UBound(tMes) And Not bTrouve If tMes(i) < sDepart + 0.01 Then iDeb = i iFin = i If tMes(i) >= c.PreferredWidth + sDepart - 0.05 Then bTrouve = True i = i + 1 Wend iNbCol = iFin - iDeb End Function
Je voudrais insérer un code <br> a chaque "saut de ligne" trouvé dans les tableaux, car dans l'état actuel, lorsque le texte est séparé par un saut de ligne (dans la même cellule), le texte est convertit en se mettant a la suite, sans espace...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Private Sub Conv_Tableaux_OK_Click() ' ' Conversion des Tableaux Standards ' ' Dim T As Table ' T c'est mon tableau Dim r As Row Dim stTexte As String Dim sDepart As Single Dim stColSpan As String 'colonne fusionee Dim iCol As Integer Dim c As Cell Dim tMes() As Single 'Tableau emplacement des colonnes... Dim nbrTable As Long Dim Toto As Long nbrTable = ActiveDocument.Tables.Count If nbrTable = 0 Then Exit Sub Toto = 1 While Toto <= nbrTable StatusBar = "Traitement du tableau n° " & Toto & "/" & nbrTable Set T = ActiveDocument.Tables(1) ' Je prend le tableau atif Mes_Tableaux T, tMes stTexte = "<center><table width=100% border=1>" For Each r In T.Range.Rows sDepart = 0 stTexte = stTexte & "<TR>" For Each c In r.Range.Cells stColSpan = "" iCol = iNbCol(c, sDepart, tMes) If iCol > 1 Then stColSpan = " colspan=" & iCol & " " stTexte = stTexte & "<TD" & stColSpan & "><div align=center>" & NetCellule(c.Range.Text) & "</div></TD>" sDepart = sDepart + c.PreferredWidth Next stTexte = stTexte & "</TR>" & Chr(13) Next stTexte = stTexte & "</TABLE></center>" stTexte = stTexte & "</TABLE>" Debug.Print stTexte T.Select T.Delete Selection.TypeText Text:=stTexte Toto = Toto + 1 Wend End Sub
Merci de m'Helper please [/code]
Partager