Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Powerpoint > VBA PowerPoint
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2011, 12h36   #1
Invité régulier
 
Anthony
Inscription : novembre 2009
Messages : 29
Détails du profil
Informations personnelles :
Nom : Anthony

Informations forums :
Inscription : novembre 2009
Messages : 29
Points : 9
Points : 9
Par défaut Traduction du texte dans une présentation

Bonjour,

J'ai réalisé une présentation ppt contenant des graphiques et du texte.

J'aimerais traduire le texte via une macro vba incluse dans ppt.

Est-ce possible ?

Il s'agit de faire une recherche dans toute la présentation afin de remplacer, p-ex, 'Regio' par 'Région', ...

Merci d'avance pour votre aide.

Anthony
ab1to est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 18h25   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 616
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 616
Points : 30 961
Points : 30 961
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Ce n'est pas une traduction que tu veux, c'est un remplacement, non ?

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 08h10   #3
Invité régulier
 
Anthony
Inscription : novembre 2009
Messages : 29
Détails du profil
Informations personnelles :
Nom : Anthony

Informations forums :
Inscription : novembre 2009
Messages : 29
Points : 9
Points : 9
Oui, il s'agit de remplacer du texte en nl dans un champs par la traduction en fr.

C'est la fonction replace du menu que je voudrais insérer dans une macro afin de traduire toute une présentation. Et donc, rechercher une phrase ou un mot et le remplacer par sa traduction.

Anthony
ab1to est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 11h49   #4
Invité régulier
 
Anthony
Inscription : novembre 2009
Messages : 29
Détails du profil
Informations personnelles :
Nom : Anthony

Informations forums :
Inscription : novembre 2009
Messages : 29
Points : 9
Points : 9
Bonjour,

J'ai essayé avec une ppt 2003 d'exécuter un 'replace all' d'un texte par un autre texte et d'enregistrer la macro, mais je n'ai pas eu de résultat.

Avez-vous une idée ?

Merci.

Anthony
ab1to est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 15h30   #5
Invité régulier
 
Anthony
Inscription : novembre 2009
Messages : 29
Détails du profil
Informations personnelles :
Nom : Anthony

Informations forums :
Inscription : novembre 2009
Messages : 29
Points : 9
Points : 9
J'ai trouvé la macro suivante, mais qui ne fonctionne qu'à moitié dans mon cas.
Code :
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
 
Sub ReplaceText2()
 
Dim LastSlide, NumSlide As Integer
 
LastSlide = Application.ActivePresentation.Slides.Count
 
      Dim oSld As Slide
      Dim oShp As Shape
      Dim oTxtRng As TextRange
      Dim oTmpRng As TextRange
      Dim strWhatReplace As String, strReplaceText As String
 
      ' write find text
     strWhatReplace = "Regio"
     ' write change text
     strReplaceText = "Région"
 
     ' go during each slides
     For NumSlide = 1 To LastSlide
        'For Each oSld In ActivePresentation.Slides
     ' go during each shapes and textRanges
         For Each oShp In ActivePresentation.Slides(NumSlide).Shapes
             ' replace in TextFrame
             Set oTxtRng = oShp.TextFrame.TextRange
             Set oTmpRng = oTxtRng.Replace(FindWhat:=strWhatReplace, Replacewhat:=strReplaceText, WholeWords:=False)
 
             Do While Not oTmpRng Is Nothing
 
                 Set oTxtRng = oTxtRng.Characters _
                              (oTmpRng.Start + oTmpRng.Length, oTxtRng.Length)
                 Set oTmpRng = oTxtRng.Replace(FindWhat:=strWhatReplace, Replacewhat:=strReplaceText, WholeWords:=False)
             Loop
         Next oShp
     Next NumSlide
 End Sub
Cela fonctionne pour les champs texte, mais la macro se bloque lorsqu'elle rencontre du texte inséré dans une forme.

Malheureusement, je dois également modifier du texte dans un rectangle par-exemple.

Que puis-je modifier pour que cela fonctionne.

Merci d'avance.

Anthony
ab1to est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 19h51   #6
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonsoir.

Un problème est que tu peux avoir des formes imbriquées dans des groupes, et éventuellement sur plusieurs niveau. Dans ce cas, une procédure itérative.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub subIterShapes(ByVal oShp As PowerPoint.Shape)
Dim oShpLoc As PowerPoint.Shape
 
Select Case oShp.Type
    Case msoAutoShape, msoTextBox, msoPlaceholder '... j'en ai sûrement oublié
        oShp.TextFrame.TextRange.Text = Replace(oShp.TextFrame.TextRange.Text, strWhatReplace, strReplaceText)
    Case msoGroup
        For Each oShpLoc In oShp.GroupItems
            Call subIterShapes(oShpLoc)
        Next oShpLoc
End Select
 
End Sub
Et dans la procédure principale, pour parcourir les diapos
Code :
1
2
3
4
5
6
7
8
9
10
11
12
...
Dim oSlide As PowerPoint.Slide
For Each oSlide In ActivePresentation.Slides
 
    For Each oShp In oSlide.Shapes
            Call subIterShapes(oShpLoc)
    Next oShp
 
Next oSlide
End Sub
 
...
C'est pour l'idée, et à mettre au point, bien sûr!

Cordialement,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/06/2011, 10h42   #7
Invité régulier
 
Anthony
Inscription : novembre 2009
Messages : 29
Détails du profil
Informations personnelles :
Nom : Anthony

Informations forums :
Inscription : novembre 2009
Messages : 29
Points : 9
Points : 9
Merci beaucoup pour votre aide.

La macro fonctionne, sauf lorsqu'il y a des lignes qui sont créées sur le slide (.line).

Pouvez-vous encore m'aider ???

Anthony
ab1to est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 18h51   #8
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonjour.

Pour pouvoir continuer à t'aider, il faudrait maintenant que tu montres ce que tu as fait et ce qui pose pb.

Sans cela, je ne vois pas comment les lignes pourraient poser pb.

Cordialement,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h53.


 
 
 
 
Partenaires

Hébergement Web