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 |
Partager