OVH Cloud OVH Cloud

Big Macro

34 réponses
Avatar
Sylvie
Je cherche une macro qui fasse la chose suivante:

Je fais de documents word qui comportent des questions.
J'écris les questions en noir et les réponses en rouges.
Les réponses peuvent être des lettres ou des dessins
mais en rouge.

J'ai toujours besoin d'imprimer le document Questions (les questions seules)
et le document noir/rouge qui contient donc les Question et les Réponses.

A l'heure actuelle je suis obligée de faire deux documents distincts.
Le document Q, et le document Q/R.

Ce qui est très chiant parce que chaque modification du document
Q doit être répercutée sur le document Q/R

Donc ce qui m'aiderait beaucoup serait d'avoir un seul document
et de pouvoir imprimer à loisir la version Q ou la version Q/R.

Est-ce possible ?

Sylvie

10 réponses

1 2 3 4
Avatar
Circé
Re...

Sylvie avait énoncé :

Sinon est-il possible de ne pas afficher ces dessins
ou de ne pas les imprimer ? (comme pour les images).
(j'ai bien compris que pour les images c'est possible).


Images et dessins, même combat... Enfin, presque... :-(..
As-tu essayé d'enregistrer la macro comme je t'ai dit ?
Par ailleurs, as-tu des dessins ET des images dans ton document ?...

Circé




Sylvie

Tu ne pourras pas mettre des images en blanc... Tu peux simplement ne
pas les afficher ou ne pas les imprimer ou les deux. Pour ne pas les
voir à l'écran : menu outils, options, affichage, cocher emplacement
pour images.




Avatar
Sylvie
Oui donc j'ai essayé mais un pb subsiste ! Car il y a des des dessins
dans le document Question et je veux les imprimer.Or la fonction
qui permet de ne pas imprimer les graphismes n'impriment
aucun graphisme. Il faudrait que je sois capable
de masquer sélectivement les graphismes de couleur différentes.

Quelqu'un sait-il comment faire ?



Tu ne pourras pas mettre des images en blanc... Tu peux simplement ne
pas les afficher ou ne pas les imprimer ou les deux. Pour ne pas les
voir à l'écran : menu outils, options, affichage, cocher emplacement
pour images.








Avatar
Anacoluthe
Bonjour !

'Sylvie' nous a écrit ...
Oui donc j'ai essayé mais un pb subsiste ! Car il y a des des dessins
dans le document Question et je veux les imprimer.Or la fonction
qui permet de ne pas imprimer les graphismes n'impriment
aucun graphisme. Il faudrait que je sois capable
de masquer sélectivement les graphismes de couleur différentes.
Quelqu'un sait-il comment faire ?


Si vous craignez que des objets (textes ou images) masqués changent
votre mise en page en décalant tout lors du masquage/démasquage,
placez-les dans des zones de texte sans fond ni bordure et alignées sur
le texte.

Anacoluthe
« Sous le masque de la complexité, la simplicité questionne. »
- Monique KEURENTJES

Avatar
Sylvie
Merci pour l'info, cependant mon principal et dernier pb est simplement
de changer la couleur de tous les objets graphiques de couleur rouge
(lignes, rectangles, cercles
etc.) contenu dans mon document.

Ou de ne pas les imprimer (ce qui serait un pis aller).



Si vous craignez que des objets (textes ou images) masqués changent
votre mise en page en décalant tout lors du masquage/démasquage,
placez-les dans des zones de texte sans fond ni bordure et alignées sur
le texte.

Anacoluthe
« Sous le masque de la complexité, la simplicité questionne. »
- Monique KEURENTJES


Avatar
Anacoluthe
Bonjour !

'Sylvie' nous a écrit ...
Merci pour l'info, cependant mon principal et dernier pb est simplement
de changer la couleur de tous les objets graphiques de couleur rouge
(lignes, rectangles, cercles
etc.) contenu dans mon document.


Pour ça il vous faudra effectivement mitonner une 'tite macro ...

Voici à titre d'exemple une minimacro qui va rendre invisibles
les formes dont la couleur de remplissage OU la couleur
du trait est rouge (rouge pur RGB 255,0,0 ) :

Public Sub CacheFormesRouges()
For Each Forme In ActiveDocument.Shapes
If Forme.Fill.ForeColor.RGB = 255 Or _
Forme.Line.ForeColor.RGB = 255 Then
Forme.Fill.Visible = msoFalse
Forme.Line.Visible = msoFalse
End If
Next Forme
End Sub

Et son contraire pour remettre toutes les formes visibles :

Public Sub MontreToutesFormes()
For Each Forme In ActiveDocument.Shapes
Forme.Fill.Visible = msoTrue
Forme.Line.Visible = msoTrue
Next Forme
End Sub

Bonne continuation :-)

Anacoluthe
« La boue cache un rubis mais ne le tache pas. »
- Proverbe chinois

Avatar
Sylvie
Je vous remercie pour votre macro. Elle fait grosso modo
le boulot mais certains pb subtils subsistent:

La macro n'a pas été capable de d'affecter une ligne
brisée rouge incluse dans un groupement de lignes
noires. J'ai essayé en dégroupant et ça a marché.

Donc votre macro ne peut qu'invisibiliser les dessins
rouges non groupés. c'est gênant parce que tout
les dessins sont groupés. Devoir les dégrouper préalablement
à la main est très problématique.

Il y a aussi le pb que la macro de re-visibilisation rend visible
sans distinction tout ce qui est invisible. Hors j'ai beaucoup
de bords de texte flottants invisibles et je ne veux pas qu'ils
le deviennent.

J'ai donc trouvé une autre façon de procéder sur la base
de la votre, et elle convient mieux à mon pb:

Public Sub MontreToutesFormes()
For Each Forme In ActiveDocument.Shapes
Forme.Fill.Transparency = 0
Forme.Line.Transparency = 0
Next Forme
End Sub


Public Sub CacheFormesRouges()
For Each Forme In ActiveDocument.Shapes
If Forme.Fill.ForeColor.RGB = 255 Or _
Forme.Line.ForeColor.RGB = 255 Then
Forme.Fill.Transparency = 1
Forme.Line.Transparency = 1
End If
Next Forme
End Sub

Qui marche très bien.

Mon seul pb maintenant est d'arriver à affecter les dessins rouges situés
dans des
groupes de dessins. Savez-vous comment faire sans avoir à préalablement
dégrouper
manuellement ? Une macro ?

Sylvie



























"Anacoluthe" a écrit dans le message de
news:
Bonjour !

'Sylvie' nous a écrit ...
Merci pour l'info, cependant mon principal et dernier pb est simplement
de changer la couleur de tous les objets graphiques de couleur rouge
(lignes, rectangles, cercles
etc.) contenu dans mon document.


Pour ça il vous faudra effectivement mitonner une 'tite macro ...

Voici à titre d'exemple une minimacro qui va rendre invisibles
les formes dont la couleur de remplissage OU la couleur
du trait est rouge (rouge pur RGB 255,0,0 ) :

Public Sub CacheFormesRouges()
For Each Forme In ActiveDocument.Shapes
If Forme.Fill.ForeColor.RGB = 255 Or _
Forme.Line.ForeColor.RGB = 255 Then
Forme.Fill.Visible = msoFalse
Forme.Line.Visible = msoFalse
End If
Next Forme
End Sub

Et son contraire pour remettre toutes les formes visibles :

Public Sub MontreToutesFormes()
For Each Forme In ActiveDocument.Shapes
Forme.Fill.Visible = msoTrue
Forme.Line.Visible = msoTrue
Next Forme
End Sub

Bonne continuation :-)

Anacoluthe
« La boue cache un rubis mais ne le tache pas. »
- Proverbe chinois



Avatar
Anacoluthe
Bonjour !

'Sylvie' nous a écrit ...
Mon seul pb maintenant est d'arriver à affecter les dessins rouges situés
dans des
groupes de dessins. Savez-vous comment faire sans avoir à préalablement
dégrouper
manuellement ? Une macro ?


Content de voir que vous avez pu adapter la minimacro à vos besoins.
On est encore loin de la Big Macro de votre titre ... :-)

Dégrouper par macro ne pose pas trop de problème mais vous
imposera à une boucle dans la boucle : pour chaque forme groupée
dégrouper (Ungroup) boucle de traitement des formes rouges puis
regrouper (Regroup). Ceci vous oblige à tester pour chaque forme
s'il s'agit d'un groupe (If Forme.Type = msoGroup etc)
Revenez si vous peinez à faire ça ;-)

Anacoluthe
« La boue cache un rubis mais ne le tache pas. »
- Proverbe chinois

Avatar
Sylvie
Très bien, ça ne parait pas insurmontable. Merci
je vais essayer et je vous tiens au courant;

Sylvie.


Dégrouper par macro ne pose pas trop de problème mais vous
imposera à une boucle dans la boucle : pour chaque forme groupée
dégrouper (Ungroup) boucle de traitement des formes rouges puis
regrouper (Regroup). Ceci vous oblige à tester pour chaque forme
s'il s'agit d'un groupe (If Forme.Type = msoGroup etc)
Revenez si vous peinez à faire ça ;-)

Anacoluthe
« La boue cache un rubis mais ne le tache pas. »
- Proverbe chinois


Avatar
Eric Beaumard
Nous allons maintenant nous en rapprocher. L'idéal pour moi serait
finallement
de ne pas masquer le texte rouge, mais de le remplacer par des pointillés
pour
indiquer à celui qui utilise le document une zône à remplir.

J'ai déjà, bêtement essayer de faire un remplacement de tout ce qui
est caractère rouge par des ".". Ca marche très mal parce que
les polices étant proportionnelles le remplacement change la largeur
des mots et décompose tout mon document.

Donc il faudrait être capable de remplacer un mot (ou mieux, toute
la séquence de mots rouges) par un nombre de "." approprié à sa longueur
pour respecter au mieux la pagination.

A la finalle donc, tout mot rouge se retrouve remplacé par une série
de "." telle que la nouvelle longueur du mot composé de ces "."
approxime au mieux l'ancienne.

"Sylvie" devient
"........."
et non pas simplement:
"......" qui a bien 6 caractères comme "Sylvie" mais donne
un mot trop court.


Sylvie.

Content de voir que vous avez pu adapter la minimacro à vos besoins.
On est encore loin de la Big Macro de votre titre ... :-)



Avatar
Anacoluthe
Bonjour !

'Sylvie' nous a écrit ...
A la finalle donc, tout mot rouge se retrouve remplacé par une série
de "." telle que la nouvelle longueur du mot composé de ces "."
approxime au mieux l'ancienne.


Remplacez votre texte rouge par du texte blanc souligné pointillé rouge
Format / Police : couleur police + soulignement + couleur soulignement
et votre mise en page ne sera pas modifiée !!!!

Anacoluthe
« La boue cache un rubis mais ne le tache pas. »
- Proverbe chinois

1 2 3 4