OVH Cloud OVH Cloud

[Word95] Recherche, mise en forme, tableau

1 réponse
Avatar
Gloops
Bonjour tout le monde,

Je lance une recherche basée sur le style "Liste à puces".
Pas de problème, j'arrive sur un paragraphe avec le style "Liste à puces".

Au bout de six ou sept fois, recherche suivante, j'arrive sur la cellule
de tableau qui contient l'occurrence que je viens de quitter
(provisoirement donc).

Cette cellule contient effectivement un paragraphe "Liste à puces" comme
je viens de le dire, et puis aussi deux paragraphes en style "Normal".

J'ai bien remis toute la définition de la recherche des fois qu'une
interférence soit intervenue, nenni, même à la main le résultat est le même.

C'est bien ça qui se passe : je cherche la prochaine mise en forme de
style "Liste à puces", il s'avère que c'est la cellule de tableau où je
me trouve. Et là, pour demander le code ASCII du texte sélectionné, ça
grince, normal.

Est-ce que je me trompe ou c'est bizarre ?
Je n'ai jamais entendu dire qu'on pouvait affecter un style de
paragraphe à une cellule de tableau, surtout quand cette cellule de
tableau contient des paragraphes de styles différents.


Je ne suis pas certain que ça aide à comprendre, j'ai pu lancer une fois
le traitement suivant sans qu'il s'arrête en route (et j'essaie de
réitérer en changeant le style plutôt qu'en ajoutant ou enlevant la puce) :

Sub MAIN
EditionRechercherStyle .Style = "Liste à puces"
EditionRechercher .Rechercher = "", .Sens = 0, .RespecterLaCasse = 0, \
.MotEntier = 0, .CritèresSpéciaux = 0, .Réservé23 = 0, \
.Format = 1, \
.RenvoiLigneAuto = 1, .TrouverToutesFormesDuMot = 0
While EditionRechercherTrouvé()
If Asc(Sélection$()) = 183 Then
FormatPucesDéfaut 1
MsgBox "J'ai mis la puce"
Else
FormatPucesDéfaut 0
MsgBox "J'ai enlevé la puce"
EndIf
EditionRechercher
Wend
End Sub

1 réponse

Avatar
Gloops
Est-ce que je me trompe ou c'est bizarre ?
Je n'ai jamais entendu dire qu'on pouvait affecter un style de
paragraphe à une cellule de tableau, surtout quand cette cellule de
tableau contient des paragraphes de styles différents.


Eh bien si, une cellule de tableau, sous Word 95, comporte un style de
paragraphe. Il s'agit du style appliqué au texte se trouvant après la
dernière marque de paragraphe se trouvant dans la cellule, jusqu'à la
fin de la cellule.

Je ne suis pas certain que ça va passionner les foules, mais qui sait,
si un jour quelqu'un rencontrait le même problème ; comme j'ai quand
même passé la journée dessus ...

Merci beaucoup aux quelques personnes qui ont mis la main à la pâte (il
y a eu deux fils avant celui-ci, "mon fichier a des puces" et
"remplacement format, puces").

J'avais donc un certain nombre de paragraphes, dans des tableaux, qui
étaient basés sur le style de paragraphe "Liste à puces", et les puces
étaient désactivées dans le style. Deux paragraphes ont finalement gardé
des puces, le caractère 183 a été inséré à cet effet.

C'est un cas de figure un peu particulier, je dois même dire que j'avais
oublié comment j'avais fait, c'est pour ça que j'ai eu du mal à m'y
retrouver.

On peut imaginer que quelqu'un ait besoin de parcourir les utilisations
d'un style de paragraphe, dans un document comportant des tableaux.

Voici le traitement : il s'agit d'abord de détecter les cellules de
tableaux comportant le style "Liste à puces" (à la fin de la cellule,
comme expliqué ci-dessus), et à cet endroit affecter le style "Normal".
Ensuite, revenir au début du document, chercher le style "Liste à puces"
dans le document, et le remplacer par le style "Style1 Liste à puces
sans puces", qu'on aura pris soin de créer au préalable.

Pourquoi avoir mis le style Normal ? Pour ne pas avoir le style "Liste à
puces" en fin de cellule, afin de simplifier le traitement.

Le langage employé est celui de Word 95.

Les variables booléennes PremCell et DernCell indiquent si la cellule
sélectionnée est la première ou la dernière du tableau. Elles ne sont
pas appelées ensuite, mais je les ai laissées "à tout hasard", puisque
ce code est là à titre documentaire.

Les tableaux comportent tous au moins deux colonnes.

Sub MAIN
EditionAtteindre .Destination = "t1" ' Atteindre le premier tableau
While SélInfo(15) > 0 'tant qu'on est dans un tableau
TableauSélectionnerLigne
NbCol = SélInfo(17)
NbLignes = SélInfo(15)
'MsgBox "Le tableau comporte " + Str$(NbCol) +
" colonnes, et "
+ Str$(NbLignes) + " lignes"
CellulePréc
NumCell = 0
For NL = 1 To NbLignes
For NC = 1 To NbCol
NumCell = NumCell + 1
L = Len(Sélection$())
PremCell = (SélInfo(16) = 1 And SélInfo(13) = 1)
DernCell = (NL = NbLignes And NC = NbCol)

Select Case NumCell
Case 1
If L > 2 Then
CarDroite
'MsgBox "Fin cell 1"
ChangeFormat
CelluleSuiv
Else
'MsgBox "Cell 1"
ChangeFormat
CelluleSuiv
EndIf
Case NbLignes * NbCol ' dernière
If L > 2 Then
CarDroite
ChangeFormat
'MsgBox "Fin dern. cell"
Else
ChangeFormat
'MsgBox "Dern cell vide"
CarDroite 2
EndIf
Case Else
If L > 2 Then
CarDroite
ChangeFormat
'MsgBox "Fin de cellule"
CelluleSuiv
Else
ChangeFormat
'MsgBox "Cellule vide"
CelluleSuiv
EndIf
End Select
Next
Next
CarDroite 2
EditionAtteindre .Destination = "t+1"
Wend ' fin de traitement des tableaux
EditionAtteindre "p1" ' Début de document
EditionRechercherSansAttributs
EditionRechercherStyle .Style = "Liste à puces"
EditionRechercher .Rechercher = "", .Sens = 0, .RespecterLaCasse = 0,
.MotEntier = 0, .CritèresSpéciaux = 0, .Réservé23 = 0,
.Format = 1,
.RenvoiLigneAuto = 0, .TrouverToutesFormesDuMot = 0
While EditionRechercherTrouvé()
If Asc(Sélection$()) = 183 Then
MsgBox "Pas de changement"
Else
FormatStyle .Nom = "Style1 liste à puces sans puces"
EndIf
CarDroite 2
EditionRechercherStyle .Style = "Liste à puces"
EditionRechercher .Rechercher = "", .Sens = 0,
.RespecterLaCasse = 0,
.MotEntier = 0, .CritèresSpéciaux = 0, .Réservé23 = 0,
.Format = 1, .RenvoiLigneAuto = 0, ^
.TrouverToutesFormesDuMot = 0
Wend
End Sub

Sub ChangeFormat
If NomStyle$() = "Liste à puces" Then
Style "Style1 liste à puces sans puces"
'MsgBox NomStyle$()
EndIf
End Sub