Soyez le premier à donner votre avis sur cette source.
Snippet vu 5 187 fois - Téléchargée 18 fois
Option Explicit Const SeparateurTextes = " - " 'Permet de copier le textes de toutes les formes de diapositive courante excepté les formes réservées (titre...) Sub CopierLeContenueDesFormes() ' ' Macro créé le 22/02/2010 par Guy Marty ' Dim FormeCourante As Shape 'Forme en cours de traitement Dim ToutLeTexte As String 'Tout le texte en cours d'assemblage Dim TexteCourant As String 'Texte de la forme courante 'L'utilisation du presse papier nécessite la référence Microsoft Form 2.0 (C:\WINDOWS\system32\fm20.dll) Dim PressePapier As New DataObject 'Un objet presse papier, le code est plus simple à lire avec ça ToutLeTexte = "" 'On travaille que sur une seule diapositive If ActiveWindow.Selection.SlideRange.Count <> 1 Then Exit Sub 'Parcours de toutes les formes de la diapositive For Each FormeCourante In ActiveWindow.Selection.SlideRange.Shapes If FormeCourante.Type <> msoPlaceholder Then 'La forme n'est pas une forme réservée TexteCourant = TexteDeLaForme(FormeCourante) 'Texte de la forme courante If TexteCourant <> "" Then 'Il n'est pas vide on peut l'ajouter aux autres textes If ToutLeTexte = "" Then ToutLeTexte = TexteCourant 'C'est le premier texte, il n'y a pas de séparateur Else ToutLeTexte = ToutLeTexte & SeparateurTextes & TexteCourant 'Le texte courant est ajouté avec un séparateur End If End If End If Next 'Copie dans le presse papier With PressePapier .SetText ToutLeTexte .PutInClipboard End With MsgBox "Texte copié : " & ToutLeTexte End Sub 'Fonction récursive permettant d'assembler le texte de la forme passée en paramètre Function TexteDeLaForme(Forme As Shape) As String Dim FormeCourante As Shape Dim ToutLeTexte As String Dim TexteCourant ToutLeTexte = "" If Forme.Type <> msoGroup Then 'La forme n'est pas un groupe If Forme.HasTextFrame Then 'La forme contient une fenêtre de texte If Forme.TextFrame.HasText Then 'Il y a effectivement du texte TexteDeLaForme = Forme.TextFrame.TextRange End If End If Else 'La forme est un groupe, on récupère le texte de chaque forme du groupe For Each FormeCourante In Forme.GroupItems TexteCourant = TexteDeLaForme(FormeCourante) If TexteCourant <> "" Then If ToutLeTexte = "" Then ToutLeTexte = TexteCourant Else ToutLeTexte = ToutLeTexte & SeparateurTextes & TexteCourant End If End If Next TexteDeLaForme = ToutLeTexte End If End Function
je connais tres peu powerpoint,
peux tu svp donner un mode operatoire,
ce code vba est a implanter où, dans word, excel ou powerpoint
merci d'avance
Complément au mode d'emploi, pour conserver de la cohérence entre les textes copiés, vous pouvez grouper les formes entre elles.
GM
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.