Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau membre du Club
    Macro pour selection de la première ligne d'une zone de texte
    Bonjour,

    J'aurais besoin de modifier une macro qui permet de créer un sommaire à partir du texte présent dans une zone de texte identifiée comme titre.

    Mon soucis est qu'actuellement, la macro copie/colle l'ensemble du texte présent dans la zone de texte, et j'aimerais qu'elle se limite à la première ligne du texte présent dans la zone.

    La ligne de code en question est la suivante :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
     ActivePresentation.Slides(2).Shapes(2).TextFrame.TextRange = ActivePresentation.Slides(2).Shapes(2).TextFrame.TextRange & Diapo.SlideIndex & Chr(9) & Diapo.Shapes.Title.TextFrame.TextRange.Text & vbNewLine


    Qu'est ce qu'il faudrait modifier pour pouvoir transformer "Diapo.Shapes.Title.TextFrame.TextRange.Text" (qui me semble être la source) pour pouvoir ne prendre que la première ligne ?


    Merci !


    Jodko.

  2. #2
    Expert éminent sénior
    Citation Envoyé par Jodko Voir le message

    Bonjour,

    Que donne ce code sur votre présentation ?
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    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
     
    Sub TestContenuPremiereLigne()
     
    Dim I As Integer
     
         With ActivePresentation
              For I = 1 To .Slides.count
                  Debug.Print "Slide : " & I & ", " & PremiereLigneTitle(I)
              Next I
         End With
     
    End Sub
     
     
     
    Function PremiereLigneTitle(ByVal SlideTeste As Integer) As String
     
    Dim TexteShape As Variant
     
        PremiereLigneTitle = ""
        With ActivePresentation.Slides(SlideTeste)
             If .Shapes.HasTitle Then
                With .Shapes.Title
                     If .HasTextFrame Then
                        TexteShape = Split(.TextFrame.TextRange, Chr(11))
                        If UBound(TexteShape) > 0 Then PremiereLigneTitle = TexteShape(0)
                     End If
                End With
             End If
        End With
     
     
    End Function
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  3. #3
    Nouveau membre du Club
    Bonjour,

    La boucle avec le débug print n'affiche rien, par contre, j'ai mis un espion sur le retour de la fonction a l'air de marcher.

    Du coup, j'ai essayé d'appeler la fonction dans le corps de ma propre macro, mais je n'arrive pas à trouver le bon argument.


    Jodko.

  4. #4
    Expert éminent sénior
    Citation Envoyé par Jodko Voir le message

    Le fonction ne récupère la première ligne qu'en présence d'un retour chariot. La fonction modifiée ci-dessous, récupère également tout le texte s'il n'y a pas de retour chariot :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    Function PremiereLigneTitle(ByVal SlideTeste As Integer) As String
     
    Dim TexteShape As Variant
     
        PremiereLigneTitle = ""
        With ActivePresentation.Slides(SlideTeste)
             If .Shapes.HasTitle Then
                With .Shapes.Title
                     If .HasTextFrame Then
                        TexteShape = Split(.TextFrame.TextRange, Chr(11))
                        If UBound(TexteShape) > 0 Then
                           PremiereLigneTitle = TexteShape(0)
                        Else
                         PremiereLigneTitle = .TextFrame.TextRange
                        End If
                     End If
                End With
             End If
        End With
     
     
    End Function
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

###raw>template_hook.ano_emploi###