Bonjour à tous,

mon problème est tous simple mais je n'y arrive pas peut être parce que c'est vendredi ?

objectif:
Pour chaque nouvelle balise, ajouter une nouvelle ligne.

Mon code recupere du texte à laide de balise dans un fichier word et le copie dans un fichier excel.

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
      For Each Paragraphe In WordDoc.Paragraphs
         'pour chaque paragraphe on verifie si il y a un [ et un ]
         Txt = Paragraphe.Range.Text
         Deb = InStr(1, Txt, "[")
         Fin = InStr(1, Txt, "]")
 
         'deb & fin seront toujours superieur à 0 si txt a un [ ou ]
         If Deb > 0 And Fin > 0 Then
            'bal recupere le nom de la balise, +1 pour le [ et -2 pour /], donc bal=objective par exemple
            Bal = Mid(Txt, Deb + 1, Fin - 2)
 
            'vérification de la présence d'une balise de fin
            If InStr(1, Txt, "[/" & Bal & "]") > 0 Then
               'deb: calcule le nombre de caractere selon la balise cad "[REMINDER] "=10+1espace
               'fin: compte le nombre de caractere avant la balise avant [/
               'txt: recupere le resultat à afficher
               Deb = InStr(1, Txt, "[" & Bal & "]") + Len("[" & Bal & "]")
               Fin = InStr(1, Txt, "[/" & Bal & "]") - Len("[/" & Bal & "]")
               Txt = Mid(Txt, Deb, Fin)
               Ligne = Ligne + 1
 
               'entete de colonne cad bal
               Set C = .Rows(1).Find(Bal, , , xlWhole)
 
               If C Is Nothing Then
                  'si la cellule A1 est vide alors colonne prends 1 sinon elle s'incremente;
                  If .Cells(1, 1) = "" Then
                     '1 seul passage
                     Col = 1
                  Else
                     Col = .Cells(1, .Columns.Count).End(xlToLeft).Column + 1
                  End If
 
                  'on copie l'entete dans une cellule
                  .Cells(1, Col) = Bal
               Else
                  'Si la balise existe déjà sur la feuille, on récupère sa colonne
                  Col = C.Column
 
                  '.Cells(Rows.Count, Col).End(xlUp).Row 1
               End If
               'On récupère la ligne suivant la dernière ligne remplie de la colonne courante (freeLine)
               '+1 pour separer les differents ojectifs; +2 pour sauter une ligne afin d'aerer le resultat
               freeLine = .Cells(Rows.Count, Col).End(xlUp).Row + 1
 
 
               'On mets à jour les marqueurs
               If Col = 1 Then                    'Si il s'agit de la première colonne (chapitre)
                  startLine = farestLine + 2      'on met à jour le marqueur startLine 'si +2 ajout dune ligne separatrice
                  Rows(farestLine + 1).Interior.ColorIndex = 8 'ligne de couleur, pour changer de couleur changer le chiffre
               ElseIf freeLine > farestLine Then  'Si besoin, on met à jour le marqueur de celulle vide
                  farestLine = freeLine           'la plus basse dans le fichier (farestLine)
               End If
 
               If startLine >= freeLine Then      'On écrit alors dans la cellule la plus basse entre
                  .Cells(startLine, Col) = Txt    'le dernier marqueur de "chapitre"
               Else                               'et la cellule libre la plus basse de la colonne courante
                  .Cells(freeLine, Col) = Txt  'le +1 peutetre supprimer cela permet simplement que laffichage soit plus claire
 
               End If
 
             End If
 
           End If
 
      Next Paragraphe
Merci pour votre aide