XL 2010 Récupérer un tableur Word sous Excel

Jérémy26

XLDnaute Nouveau
Bonjour, j'ai ce bout de programme qui permet de récupérer le texte de chaque case d'un tableau Word pour le mettre dans une cellule Excel.
J'ai un problème je perd mes puces et j'aimerai trouver un moyen pour les garder.
J'ai vu ceci .FormulaR1C1 qui pourrai m'aider vu que le texte est sous cette forme quand j'ai des puces mais je n'arrive pas à 'utiliser :
"• Dans la console Web, le nombre de disques et leurs tailles doivent correspondre aux spécifications. 6x 600 Go (RAID 6)." & Chr(10) & "• Test puces"
Voici le bout de programme pour le traitement Word->Excel.
Merci, de m'aider.
VB:
        For ligne = 2 To Sheets("Liste_tableaux").Cells(Rows.Count, 1).End(xlUp).Row
            num_tab = Sheets("Liste_tableaux").Cells(ligne, 1).Value
            lg = .Tables(num_tab).Rows.Count
            cl = .Tables(num_tab).Columns.Count
            ReDim T(1 To lg, 1 To cl)
            For j = 1 To lg
                For k = 1 To cl
                    S = ""
                    If Not Exist_cell(num_tab, j, k) Then
                        S = WordDoc.Tables(num_tab).Cell(j, k).Range.text
                        S = Replace(Replace(S, Chr(7), ""), Chr(13), Chr(10))
                        T(j, k) = S
                     End If
                Next k
            Next j

            ThisWorkbook.Sheets("Import").Cells(3, 1 + n_col).Resize(UBound(T, 1), UBound(T, 2)) = T
            
            Sheets("Import").Select
            Range(Cells(2, 1 + n_col), Cells(2, 3 + n_col)).MergeCells = True
            Sheets("Import").Cells(2, 1 + n_col).Select
            
            'MsgBox "Num_tab : " & Num_tab

            Mise_en_forme_tab (num_tab)
            n_col = n_col + 4

        Next ligne
 
Solution
Dans ce cas il faut réinterroger le Prgrf.Range.ListFormat.ListType
VB:
For Each Prgrf In .Tables(i).Cell(j, k).Range.Paragraphs
    If Prgrf.Range.ListFormat.ListType > 0 Then
        Select Case Prgrf.Range.ListFormat.ListLevelNumber
            Case 1: T0(m) = "  • " & T0(m)
            Case 2: T0(m) = "       * " & T0(m)
            Case 3: T0(m) = "            - " & T0(m)
        End Select
    End If
    m = m + 1
Next Prgrf

p56

XLDnaute Occasionnel
Bonjour,
C'est simple pour les listes à puces il suffit de pointer sur le .ListFormat.ListType
Voir fichier démo
P.
VB:
If Exist_cell(i, j, k) Then
    S = .Tables(i).Cell(j, k).Range.Text
    If .Tables(i).Cell(j, k).Range.ListFormat.ListType > 0 Then
        S = Replace(Replace(S, Chr(7), ""), Chr(13), "|")
        T0 = Split(S, "|")
        S = ""
        For m = 0 To UBound(T0) - 1
            S = S & "• " & T0(m) & Chr(10)
        Next m
    Else
        S = Replace(Replace(S, Chr(7), ""), Chr(13), Chr(10))
    End If
    T(j, k) = S
End If
 

Pièces jointes

  • Récup tableaux Word_2.zip
    39.2 KB · Affichages: 1

Jérémy26

XLDnaute Nouveau
Bonjour,
C'est simple pour les listes à puces il suffit de pointer sur le .ListFormat.ListType
Voir fichier démo
P.
VB:
If Exist_cell(i, j, k) Then
    S = .Tables(i).Cell(j, k).Range.Text
    If .Tables(i).Cell(j, k).Range.ListFormat.ListType > 0 Then
        S = Replace(Replace(S, Chr(7), ""), Chr(13), "|")
        T0 = Split(S, "|")
        S = ""
        For m = 0 To UBound(T0) - 1
            S = S & "• " & T0(m) & Chr(10)
        Next m
    Else
        S = Replace(Replace(S, Chr(7), ""), Chr(13), Chr(10))
    End If
    T(j, k) = S
End If
Bonjour je peux avoir jusqu'à 3 niveau de puces voir doc Word modifié, sur votre exemple dès que j'ai une puce dans la cellule toute les lignes on des puces. J'ai modifier votre word avec une cellule type que je peux avoir.
Pourriel vous modifier votre programme en tenant compte de ceci, désolé je suis un peux dépasser je ne comprend pas toute les lignes de code que vous avez écrite...
 

Pièces jointes

  • Tableaux à récupérer.docx
    28.6 KB · Affichages: 0
Dernière édition:

p56

XLDnaute Occasionnel
Alors dans ce cas, il faut discriminer les paragraphes de chaque cellule selon leur .ListFormat.ListLevelNumber, par exemple comme ceci :
VB:
For Each Prgrf In .Tables(i).Cell(j, k).Range.Paragraphs
    Select Case Prgrf.Range.ListFormat.ListLevelNumber
        Case 1: T0(m) = "• " & T0(m)
        Case 2: T0(m) = "     * " & T0(m)
        Case 3: T0(m) = "          - " & T0(m)
    End Select
    m = m + 1
Next Prgrf
 

Pièces jointes

  • Récup tableaux Word_3.zip
    40.5 KB · Affichages: 1

Jérémy26

XLDnaute Nouveau
Alors dans ce cas, il faut discriminer les paragraphes de chaque cellule selon leur .ListFormat.ListLevelNumber, par exemple comme ceci :
VB:
For Each Prgrf In .Tables(i).Cell(j, k).Range.Paragraphs
    Select Case Prgrf.Range.ListFormat.ListLevelNumber
        Case 1: T0(m) = "• " & T0(m)
        Case 2: T0(m) = "     * " & T0(m)
        Case 3: T0(m) = "          - " & T0(m)
    End Select
    m = m + 1
Next Prgrf
Excusez moi encore j'ai modifié le Word lorsque j'ai pas de puce dans la cellule avec votre programme j'ai une puce qui est rajouté.
j'ai essayé de modifier votre programme comme ci en discriminant les paragraphes de chaque cellule mais ça ne fonctionne pas
VB:
                            For Each Prgrf In .Tables(i).Cell(j, k).Range.Paragraphs
                                Select Case Prgrf.Range.ListFormat.ListLevelNumber
                                    Case 1: T0(m) = " " & T0(m)
                                    Case 2: T0(m) = "• " & T0(m)
                                    Case 3: T0(m) = "     * " & T0(m)
                                    Case 4: T0(m) = "          - " & T0(m)
                                End Select
                                m = m + 1
                            Next Prgrf
 

Pièces jointes

  • Tableaux à récupérer.docx
    28.6 KB · Affichages: 0

p56

XLDnaute Occasionnel
Effet non constaté avec les fichiers exemples que j'ai posté plus haut
Capture d’écran 2022-04-28 152302.gif
 

p56

XLDnaute Occasionnel
Dans ce cas il faut réinterroger le Prgrf.Range.ListFormat.ListType
VB:
For Each Prgrf In .Tables(i).Cell(j, k).Range.Paragraphs
    If Prgrf.Range.ListFormat.ListType > 0 Then
        Select Case Prgrf.Range.ListFormat.ListLevelNumber
            Case 1: T0(m) = "  • " & T0(m)
            Case 2: T0(m) = "       * " & T0(m)
            Case 3: T0(m) = "            - " & T0(m)
        End Select
    End If
    m = m + 1
Next Prgrf
 

Pièces jointes

  • Récup tableaux Word_4.xlsm
    28.7 KB · Affichages: 2

Jérémy26

XLDnaute Nouveau
J'aimerai traiter mon texte récupérer et le mettre en format html. pour le moment je met toutes mes lignes de texte d'une cellule dans ce format (code 2 avec <p> texte </p> sur chaque ligne) mais lors que j'ai des puces je dois mettre <u> et <i> pouvez vous m'aider ?
Ci joint mon code que j'ai après traitement d'une cellule pour le deuxième code. le premier code est celui que je dois avoir par rapport à la même cellule.
HTML:
<p><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test sans puces</span></p>

<ul>
    <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 1 puce niveau 1</span></li>
    <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 2 puce niveau 1</span></li>
</ul>

<p><span style=""font-size:12px""><span style=""font-family:Arial,Helvetica,sans-serif"">Test sans puce</span></span></p>

<ul>
    <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 1 puce niveau 1</span>

    <ul>
        <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 1 puce niveau 2</span>

        <ul>
            <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 1 puce niveau 3</span></li>
        </ul>
        </li>
        <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 2 puce niveau 2</span>
        <ul>
            <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 2 puce niveau 3</span></li>
        </ul>
        </li>
    </ul>
    </li>
</ul>

HTML:
<p><span style='font-family:Arial,Helvetica,sans-serif; font-size:12px'>Accéder à l’interface web de connexion de la baie, se connecter avec les identifiants présents dans le keepass du projet.</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>   • Test puce niveau 1</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>Test sans puces</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>   • Test puce niveau 1</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>       * Test puce niveau 2</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>       * Test puce niveau 2</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>           - Test puce niveau 3</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>Test sans puce</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'></span></p>
 
Dernière édition:

p56

XLDnaute Occasionnel
En Html, la bonne syntaxe pour une page avec liste à puces multi-niveaux c'est un truc du genre :
HTML:
<!DOCTYPE html>
<html>
    <head>
        <title>Exemple de page html</title>
        <meta charset="utf-8" />
        <meta name="author" content="P56">
    </head>
    <body>
        <p>TITRE DE MA PAGE</p>
        <p><span style='font-family:Arial,Helvetica,sans-serif; font-size:12px'>
        <ul>
            <li>Test puce niveau 1 - ligne1</li>
        <ul>
            <li>Test puce niveau 2 - ligne1</li>
            <li>Test puce niveau 2 - ligne2</li>
            <ul>
                <li>Test puce niveau 3 - ligne1</li>
                <li>Test puce niveau 3 - ligne2</li>
                <li>Test puce niveau 3 - ligne3</li>
            </ul>
        </ul>
            <li>Test puce niveau 1 - ligne2</li>
        </ul>
        Texte sans puce
        </span></p>
        <p>Nouveau paragraphe</p>
    </body>
</html>
P.
 

Jérémy26

XLDnaute Nouveau
Oui c'est pour ça, le but est de d'intégrer dans une nouvelle cellule le texte que j'ai dans une autre cellule avec les croché pour avoir cette syntaxe.
Pour le moment j'ai pu rajouter <p><span TEXTE </span></p> pour chaque ligne de texte de ma cellule. mais vu que maintenant je peux avoir des puces il faudrait que je puisse déduire pour chaque ligne de texte de ma cellule si j'ai une puce faire
<ul>
<li> text </li>
puis fermer avec </u> si je n'ai pas d'autre puce du même niveau et si j'ai un autre niveau de puce rajouter
<ul>
<li> text </li>
pour mon deuxième niveaux et par les fermer après
</ul>
</ul>
par exemple
avoir un traitement pour avoir comme mon code n°1 à la place du code n°2 que j'ai actuellement tous ça automatiquement vu que chaque cellule que j'ai seront différente.
J'aimerai traiter mon texte récupérer et le mettre en format html. pour le moment je met toutes mes lignes de texte d'une cellule dans ce format (code 2 avec <p> texte </p> sur chaque ligne) mais lors que j'ai des puces je dois mettre <u> et <i> pouvez vous m'aider ?
Ci joint mon code que j'ai après traitement d'une cellule pour le deuxième code. le premier code est celui que je dois avoir par rapport à la même cellule.
HTML:
<p><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test sans puces</span></p>

<ul>
    <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 1 puce niveau 1</span></li>
    <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 2 puce niveau 1</span></li>
</ul>

<p><span style=""font-size:12px""><span style=""font-family:Arial,Helvetica,sans-serif"">Test sans puce</span></span></p>

<ul>
    <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 1 puce niveau 1</span>

    <ul>
        <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 1 puce niveau 2</span>

        <ul>
            <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 1 puce niveau 3</span></li>
        </ul>
        </li>
        <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 2 puce niveau 2</span>
        <ul>
            <li><span style=""font-family:Arial,Helvetica,sans-serif; font-size:12px"">Test 2 puce niveau 3</span></li>
        </ul>
        </li>
    </ul>
    </li>
</ul>

HTML:
<p><span style='font-family:Arial,Helvetica,sans-serif; font-size:12px'>Accéder à l’interface web de connexion de la baie, se connecter avec les identifiants présents dans le keepass du projet.</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>   • Test puce niveau 1</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>Test sans puces</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>   • Test puce niveau 1</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>       * Test puce niveau 2</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>       * Test puce niveau 2</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>           - Test puce niveau 3</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'>Test sans puce</span></p>
<p><span style='font-family:Arial,Helvetica,sans-serif;font-size:12px'></span></p>
 

Discussions similaires

Réponses
14
Affichages
637
Réponses
8
Affichages
471

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 814
dernier inscrit
JLGalley