45 votes

Changer la langue de vérification orthographique sur une présentation PowerPoint

J'ai reçu une présentation PowerPoint avec des dizaines de diapositives, chacune d'entre elles contenant plusieurs zones de texte. Bien que la présentation soit rédigée en anglais, la langue de vérification orthographique est définie sur le français canadien. J'essaie de changer la langue en anglais, mais même si je sélectionne toutes les diapositives et choisis un nouvel élément dans la boîte de dialogue Langue, la langue des zones de texte reste la même. Je dois donc passer diapositive par diapositive en sélectionnant les zones de texte et en changeant la langue individuellement.

Y a-t-il un moyen plus simple de le faire?

La version de PowerPoint que j'ai installée est la 2002 SP3.

0voto

Le code posté par Leonardo est simple et généralement efficace, mais il n'affectera pas les Shape dans les groupes. Un code plus générique utilise la récursivité pour gérer ce cas également (légèrement modifié à partir d' ici, qui se trouve dans le même fil que le code de Leonardo) :

Fonction privée ChangeLangOfAllText_caller()
    'ChangeLangOfAllText (msoLanguageIDEnglishUS)
    ChangeLangOfAllText (msoLanguageIDSpanishArgentina)
Fin Fonction

Fonction privée ChangeLangOfAllText(ByVal LangID As Long)
    Dim MySlide As Slide
    Dim MyShape As Shape
    Dim MyD As Design
    Dim MyHeaderFooter As HeaderFooter
    Dim i, nbs As Integer
    ''''' D'abord traiter les diapositives maîtresses
    Pour Chaque MyD Dans ActivePresentation.Designs
        Pour Chaque MyShape Dans MyD.SlideMaster.Shapes
            ProcessShapes MyShape, LangID
        Suivant MyShape
    Suivant MyD
    ''''' Maintenant traiter les diapositives
    ' Activer ceci pour le débogage
    'Debug.Print "Fichier " & ActivePresentation.Name & _
      ": travailler avec " & ActivePresentation.Slides.Count & " diapositives"
    Pour Chaque MySlide Dans ActivePresentation.Slides
        ' Activer ceci pour le débogage
        'Debug.Print " Index de la diapositive " & MySlide.SlideIndex & ", Numéro de diapositive " & MySlide.SlideNumber & _
          ": travailler avec " & MySlide.Shapes.Count & " formes"
        Pour Chaque MyShape Dans MySlide.Shapes
            ProcessShapes MyShape, LangID
        Suivant MyShape
        ''''' Maintenant traiter les notes
        Pour Chaque MyShape Dans MySlide.NotesPage.Shapes
            ProcessShapes MyShape, LangID
        Suivant MyShape
        ''''' Maintenant traiter la maître ' ne semble pas fonctionner, il faut essayer autre chose
        Pour Chaque MyShape Dans MySlide.Master.Shapes
            ProcessShapes MyShape, LangID
        Suivant MyShape
    Suivant MySlide
Fin Fonction

Fonction privée ProcessShapes(MyShape As Shape, ByVal LangID As Long)
    Dim i As Integer
    Si ((MyShape.Type = msoGroup) Ou (MyShape.Type = msoTable)) Alors
        En cas d'erreur Reprendre
        Pour i = 1 à MyShape.GroupItems.Count
            ''' L'astuce est de récursivité !
            ProcessShapes MyShape.GroupItems.Item(i), LangID
        Suivant i
    Autrement
        ChangeLang MyShape, LangID
    Fin Si
Fin Fonction

Fonction privée ChangeLang(MyShape As Shape, ByVal LangID As Long)
    Dim i As Integer
    Si (MyShape.HasTextFrame) Alors
        ' Activer ceci pour le débogage
        'Debug.Print " Forme " & MyShape.ZOrderPosition & ", type : " & MyShape.Type & _
          ", a un cadre de texte : " & MyShape.HasTextFrame & ", a du texte : " & MyShape.TextFrame.HasText & _
          ", texte alternatif : " & MyShape.AlternativeText
        MyShape.TextFrame.TextRange.LanguageID = LangID
    Fin Si
Fin Fonction

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X