none
Insertion d'une image liée à un bouton bascule utilisé pour masquer ou voir du texte RRS feed

  • Question

  • Bonjour,

    J'ai un fichier avec plusieurs articles que je trouve un peu long. je voulais donc avoir seulement le titre avec à côté un bouton bascule nommé "Voir" par exemple. Lorsque je clique sur ce bouton, le texte relatif se déroule en dessous. Le bouton se transforme en "Ok" et lorsque je reclique dessus, le texte se masque.

    J'ai alors créé un tableau pour cela.. et ça marche. Mon problème, c'est que j'aimerai ajouter une image dans le texte de chaque article. Mais l'image dois s'afficher uniquement lorsque le texte se déroule quand j'appuie sur le bouton.

    Je ne sais pas du tout comment faire cela.. j'ai fait plusieurs recherches sur internet mais je n'ai rien trouvé.. et ce que quelqu'un pourrait m'aider ?

    Voici la programmation que j'ai faite :

    Private Sub ToggleButton1_Click()
     With ActiveDocument.Tables(1).Rows(2)
     If .HeightRule = wdRowHeightExactly Then
     .HeightRule = wdRowHeightAuto
     ToggleButton1.Caption = "Hide"
     .Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
     .Borders(wdBorderLeft).LineStyle = wdLineStyleSingle
     .Borders(wdBorderRight).LineStyle = wdLineStyleSingle
     Else
     ToggleButton1.Caption = "Show"
     .HeightRule = wdRowHeightExactly
     .Height = ".5"
     .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
     .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
     .Borders(wdBorderRight).LineStyle = wdLineStyleNone
     End If
     End With
     End Sub

    C'est donc dans la ligne 2 du tableau que j'aimerai que l'image apparaisse.

    Merci beaucoup.


    mardi 10 juillet 2012 13:13

Réponses

  • Humm, je m'en suis douté au regard du code.

    Bref, ça n'est pas tellement fait pour ce genre de demande et le mieux pour satisfaire cette dernière serait d'utiliser Access qui est propice à proposer des formulaires sous forme de listes riches (d'image et de textes...) tout en offrant une grande souplesse au niveau des commandes événementielles...

    En gardant votre document, vous allez être confronté à des soucis d'ordre techniques dans le sens où vous allez devoir nommer les objets pour pouvoir leur attribuer des propriétés comme Visible ou Height etc... et par ailleurs, en admettant que ce soit possible, votre bouton se situera donc entre 3 lignes :

    • celle au dessus où l'info est visible ou masquée de l'articel précédent 
    • la ligne courante qui reste vierge et éventuellement fusionnée et qui contien le bouton
    • la ligne du dessous qui est piloté justement par ce bouton et qui représente l'article en cours

    et ce, à chaque fois que vous avec un nouvel article : donc 2 lignes par article... Imaginez une seconde que le curseur se trouve dans la mauvaise ligne au moment où vous cliquez sur le bouton et hop, votre bouton disparaît et là, c'est ennuyeux. Donc, Word n'est pas un bon choix...

    Qu'en pensez-vous ?


    Argy

    • Marqué comme réponse Camileo jeudi 12 juillet 2012 15:13
    mercredi 11 juillet 2012 10:22
    Modérateur
  • C'est parce que votre image n'a pas comme propriété d'habillage "Aligné sur le texte" ou en d'autre termes n'est pas un bloc de paragraphe et qu'ensuite, il faut définir l'ensemble de vos lignes avec une propriété Ligne à hauteur fixe que vous variez en fonction du besoin...

    Sinon, vous avez la solution du texte masqué avec un bookmark... Le bookmark lui contient l'adresse physique de l'mage non embarquée dans le document et s'insère au point d'insertion qui jouxte le signet. Lorsque vous cliquez sue le bouton, l'image est insérée, lorsque vous cliquez une seconde fois, l'image est supprimée... ainsi, vous n'avez plus le problème que vous rencontrez.

    Enfn coté Access, 2 points intéressants :

    1. Vous pouvez installer une application comme celle qui gérerait vos articles sur une Runtime gratuit et qui vous évite une licence
    2. Vous pouvez imprimer un état au format PDF

    Argy

    • Marqué comme réponse Camileo jeudi 12 juillet 2012 15:13
    mercredi 11 juillet 2012 12:22
    Modérateur
  • Mmmmm, par défaut c'est la propriété qui est attribuée.

    Mettre la photo où vous voulez euh... dans ce acs il faut modifier le tableau de manière à réserver un emplacement pour les images.

    Coté bookmark, voici un exemple :

    Créez dans un document vierge un tableau à 3 colonnes et 1 ligne

    1. Dans la 1ère cellule posez un bouton ContrôleActiveX et affectez-lui le nom cmdInsertImage
    2. Dans la 2ème, inscrivez un chemin pointant sur un chemin contenant une image. Sélectionnez ce paragraphe et insérez un signet que vous nommez bkmImage1 et dans le même élan, attribuez lui la propriété Texte masqué
    3. Dans la 3ème, insérez un signet que vous nommez bkmImage1Cible

    Ensuite, dans un module, inscrivez ce code :

    Option Explicit
    
    Private m_oPicture As Word.InlineShape
    
    Private Sub cmdInsertImage_Click()
    Const BOOKMARK_PATH                             As String = "bkmImage"
    Const BOOKMARK_TARGET                           As String = BOOKMARK_PATH & "#" & "Cible"
    Dim strImagePath                                As String
    Dim strBookmarkTarget                           As String
    
    
        Select Case cmdInsertImage.Caption
            Case "Insérer..."
                With ActiveDocument
                    strImagePath = .Bookmarks(BOOKMARK_PATH & "1").Range.Text
                    strBookmarkTarget = Replace(BOOKMARK_TARGET, "#", 1)
                    Set m_oPicture = .Bookmarks(strBookmarkTarget).Range.InlineShapes.AddPicture(strImagePath, False, True)
                End With
                cmdInsertImage.Caption = "Supprimer"
            Case "Supprimer"
                If Not m_oPicture Is Nothing Then
                    m_oPicture.Delete
                    cmdInsertImage.Caption = "Insérer..."
                End If
        End Select
    End Sub
    

    Le principe reste théorique, c'est juste pour vous montrer...

    Argy

    • Marqué comme réponse Camileo jeudi 12 juillet 2012 15:13
    mercredi 11 juillet 2012 14:46
    Modérateur
  • Humm, je pense qu'il faut que vous agrémentiez votre code comme suit :

    Private Sub ToggleButton1_Click() Dim oTable As Table Dim oRow As Row Dim R As Integer Set oTable = ActiveDocument.Tables(2) With oTable Select Case ToggleButton1 Case True For R = 2 To 3 With .Rows(R) .Select With Selection .MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend With .Font .Hidden = True End With End With .HeightRule = wdRowHeightAuto End With .Borders(wdBorderBottom).LineStyle = wdLineStyleNone .Borders(wdBorderLeft).LineStyle = wdLineStyleNone .Borders(wdBorderRight).LineStyle = wdLineStyleNone .Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone Next ToggleButton1.Caption = "Show" Case False For R = 2 To 3 With .Rows(R) .Select With Selection .MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend With .Font .Hidden = False End With End With .HeightRule = wdRowHeightAtLeast .Height = CentimetersToPoints(0.1) End With .Borders(wdBorderBottom).LineStyle = wdLineStyleSingle .Borders(wdBorderLeft).LineStyle = wdLineStyleSingle .Borders(wdBorderRight).LineStyle = wdLineStyleSingle .Borders(wdBorderHorizontal).LineStyle = wdLineStyleSingle Next ToggleButton1.Caption = "Hide" End Select .Rows(1).Select Selection.HomeKey End With

    Set oTable = Nothing

    End Sub

    En masquant le texte, cela résoud les problèmes...

    Pour l'image il va falloir la sélectionner d'abord puis lui attribuer la propriété Visible dans le même esprit.

    Pouvez-vous publier un look de ce que vous souhaitez dans les 2 cas (Hide/Show) en images sur CJoint par exemple... pour que je me rende compte.


    Argy




    • Modifié ArgyronetModerator jeudi 12 juillet 2012 15:01 Complément d'infos
    • Marqué comme réponse Camileo jeudi 12 juillet 2012 15:13
    jeudi 12 juillet 2012 14:42
    Modérateur
  • Ce n'est pas compliqué ; c'est just un code un peu plus propre et réutilisable.*

    Bien..., mais dans votre exemple, je ne vois pas où doit être positionnée l'image...

    Pouvez-vous republier avec la façon dont voulez voir l'image. dans le texte ; par ailleur je suis surpris de voir que vous n'avez qu'une ligne à masquer pas 2 ! Vosu m'aviez parlé des lignes 2 et 3...

    Entre chaque article, il n'y a qu'une ligne. Je ne pourrais vous aider que si vous êtes la plus précise possible.

    * je vous posterai une méthode plus générique et plus souple et réutilisable...


    Argy

    • Marqué comme réponse Camileo vendredi 13 juillet 2012 08:57
    vendredi 13 juillet 2012 07:31
    Modérateur
  • Bon OK, c'est bien ce que je voyais... Donc j'ai rendu générique la procédure ce qui pour vous sera plus commode à utiliser et qui plus est à ne pas avoir une procédure répétée pour chaque bouton.

    Donc j'ai reproduis sur mon document Word le look du tableau que vous avez mis dans CJoint et j'ai posé les 3 boutons nommés respectvement ToggleButton1, ToggleButton2 et ToggleButton3... Chaque événement Click sur ces boutons appelle la même procédure avec les paramètres adaptés soit :

    ShowHideRowForTable N° du tableau, N° de ligne de début, N° de ligne de fin, Nom du bouton à bascule

    Private Sub ToggleButton1_Click() ShowHideRowForTable 2, 2, 3, ToggleButton1 End Sub Private Sub ToggleButton2_Click() ShowHideRowForTable 2, 5, 6, ToggleButton2 End Sub Private Sub ToggleButton3_Click() ShowHideRowForTable 2, 8, 9, ToggleButton3 End Sub Private Sub ShowHideRowForTable(ByVal TableId As Integer, ByVal RowArticleStart As Integer, ByVal RowArticleEnd As Integer, ByRef TargetButton As ToggleButton, Optional ByVal HideBorders As Boolean = False) '--------------------------------------------------------------------------- ' Procedure : ShowHideRowForTable ' DateTime : 13/07/2012 ' Author : Jean-Philippe AMBROSINO (argyronet) ' Purpose : Returns '........................................................................... ' Parameters : TableId = Identifiant de la table ' RowArticleStart = N° de ligne à masquer (départ) ' RowArticleEnd = N° de ligne à masquer (arrivée) ' TargetButton = Contrôle bouton ToggleButton appelant

    ' HideBorders = True si on masque ou pas les bordure

    ' Return Codes : None '........................................................................... ' Notice : '--------------------------------------------------------------------------- Dim oTable As Word.Table Dim oRow As Word.Row Dim intLineStyle As Word.WdLineStyle Dim R As Integer On Error Resume Next With Application .ScreenUpdating = False End With Set oTable = ActiveDocument.Tables(TableId) If oTable Is Nothing Then Err.Raise 9, "Pas de tableau", "Le tableau N°" & TableId & " que vous essayez de mettre en forme n'existe pas dans le document." End If On Error GoTo L_ErrShowHideRowForTable With oTable Select Case TargetButton Case True intLineStyle = wdLineStyleNone For R = RowArticleStart To RowArticleEnd With .Rows(R) .Select With Selection .MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend With .Font .Hidden = True End With End With .HeightRule = wdRowHeightAuto End With If HideBorders Then .Borders(wdBorderBottom).LineStyle = intLineStyle .Borders(wdBorderLeft).LineStyle = intLineStyle .Borders(wdBorderRight).LineStyle = intLineStyle End If Next Case False intLineStyle = wdLineStyleNone For R = RowArticleStart To RowArticleEnd With .Rows(R) .Select With Selection .MoveLeft Unit:=wdCell, Count:=1, Extend:=wdExtend .MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend With .Font .Hidden = False End With End With .HeightRule = wdRowHeightAtLeast .Height = .Height = CentimetersToPoints(0.1) End With If HideBorders Then .Borders(wdBorderBottom).LineStyle = intLineStyle .Borders(wdBorderLeft).LineStyle = intLineStyle .Borders(wdBorderRight).LineStyle = intLineStyle End If Next End Select .Rows(1).Select Selection.HomeKey End With TargetButton.Caption = IIf(TargetButton, "Show", "Hide") On Error GoTo 0 L_ExShowHideRowForTable: With Application .ScreenUpdating = True End With Exit Sub L_ErrShowHideRowForTable: MsgBox Err.Description, 48, Err.Source Resume L_ExShowHideRowForTable End Sub

    Là, je pense que ça devrait aller...

    Argy


    • Modifié ArgyronetModerator vendredi 13 juillet 2012 09:51 Fautes
    • Marqué comme réponse Camileo lundi 16 juillet 2012 07:18
    vendredi 13 juillet 2012 09:47
    Modérateur

Toutes les réponses

  • Bonjour,

    Juste comme ça pour préciser..., dans quelle application...?


    Argy

    mercredi 11 juillet 2012 07:01
    Modérateur
  • Bonjour,

    Oups petit oubli.. j'ai fait cela dans Word.. :)


    Cam

    mercredi 11 juillet 2012 09:20
  • Humm, je m'en suis douté au regard du code.

    Bref, ça n'est pas tellement fait pour ce genre de demande et le mieux pour satisfaire cette dernière serait d'utiliser Access qui est propice à proposer des formulaires sous forme de listes riches (d'image et de textes...) tout en offrant une grande souplesse au niveau des commandes événementielles...

    En gardant votre document, vous allez être confronté à des soucis d'ordre techniques dans le sens où vous allez devoir nommer les objets pour pouvoir leur attribuer des propriétés comme Visible ou Height etc... et par ailleurs, en admettant que ce soit possible, votre bouton se situera donc entre 3 lignes :

    • celle au dessus où l'info est visible ou masquée de l'articel précédent 
    • la ligne courante qui reste vierge et éventuellement fusionnée et qui contien le bouton
    • la ligne du dessous qui est piloté justement par ce bouton et qui représente l'article en cours

    et ce, à chaque fois que vous avec un nouvel article : donc 2 lignes par article... Imaginez une seconde que le curseur se trouve dans la mauvaise ligne au moment où vous cliquez sur le bouton et hop, votre bouton disparaît et là, c'est ennuyeux. Donc, Word n'est pas un bon choix...

    Qu'en pensez-vous ?


    Argy

    • Marqué comme réponse Camileo jeudi 12 juillet 2012 15:13
    mercredi 11 juillet 2012 10:22
    Modérateur
  • Je vous remercie pour votre message et pour vos conseils.

    C'est-à-dire que je n'ai pas le choix d'utiliser Word.. car c'est un document que l'on envoie à plusieurs personnes, et pas tout le monde a accès au logiciel comme Access ou autre.

    Pour l'instant, tout marche bien..

    Effectivement, dans mon tableau comporte 2 lignes par article.

    Dans la première ligne, dans la colonne de gauche il y a le titre, dans la colonne de droite le bouton bascule. La deuxième ligne a une seule colonne fusionnée et c'est là-dedans qu'il y a le texte de l'article.

    Mon problème, c'est vraiment l'ajout d'une image dans le texte dans cette deuxième ligne. Si je colle normalement une image dans le texte, le moment ou je ne suis plus en mode création et que je clique sur le bouton pour masquer le texte (donc remonter la deuxième ligne), l'image reste et apparait en dessous du tableau à l'endroit ou je l'avais mise.

    Même si Word n'est pas un bon choix, n'avez-vous pas une solution pour que cette image apparaisse uniquement dans le texte lorsqu'on clique sur le bouton pour dérouler le texte ?

    Je vous remercie pour le temps que vous prenez pour répondre à mes messages.


    Cam

    mercredi 11 juillet 2012 11:44
  • C'est parce que votre image n'a pas comme propriété d'habillage "Aligné sur le texte" ou en d'autre termes n'est pas un bloc de paragraphe et qu'ensuite, il faut définir l'ensemble de vos lignes avec une propriété Ligne à hauteur fixe que vous variez en fonction du besoin...

    Sinon, vous avez la solution du texte masqué avec un bookmark... Le bookmark lui contient l'adresse physique de l'mage non embarquée dans le document et s'insère au point d'insertion qui jouxte le signet. Lorsque vous cliquez sue le bouton, l'image est insérée, lorsque vous cliquez une seconde fois, l'image est supprimée... ainsi, vous n'avez plus le problème que vous rencontrez.

    Enfn coté Access, 2 points intéressants :

    1. Vous pouvez installer une application comme celle qui gérerait vos articles sur une Runtime gratuit et qui vous évite une licence
    2. Vous pouvez imprimer un état au format PDF

    Argy

    • Marqué comme réponse Camileo jeudi 12 juillet 2012 15:13
    mercredi 11 juillet 2012 12:22
    Modérateur
  • Ha oui vous avez raison concernant l'habillage du texte.. c'est une des premières macros que je fais et je ne connais pas très bien. Par contre, ce qui ne va pas avec cet habillage, c'est que je ne peux pas mettre la photo ou je veux. On est assez limité dans l'emplacement et le texte vient dessus ou dessous.. Ce qui aurait été parfait, c'est que ça marche avec l'habillage rapproché. Ce serait beaucoup plus joli.

    Comme je vous l'ai dit, je débute en macro, pourriez-vous me dire à quoi sert de définir l'ensemble des lignes avec une propriété Ligne à hauteur fixe ?

    Et encore désolée de vous embêter, mais pourriez-vous également m'expliquer utiliser le bookmark. Ca m'a l'air d'être une bonne solution...

    Concernant Access, c'est également une bonne idée, surtout que d'envoyer ce fichier en format PDF serait très bien, mais je suis un peu limité concernant les installations de logiciel.. ça ne sera donc pas possible. Mais merci quand même pour la proposition.

    Merci infiniment pour votre aide !


    Cam

    mercredi 11 juillet 2012 13:06
  • Mmmmm, par défaut c'est la propriété qui est attribuée.

    Mettre la photo où vous voulez euh... dans ce acs il faut modifier le tableau de manière à réserver un emplacement pour les images.

    Coté bookmark, voici un exemple :

    Créez dans un document vierge un tableau à 3 colonnes et 1 ligne

    1. Dans la 1ère cellule posez un bouton ContrôleActiveX et affectez-lui le nom cmdInsertImage
    2. Dans la 2ème, inscrivez un chemin pointant sur un chemin contenant une image. Sélectionnez ce paragraphe et insérez un signet que vous nommez bkmImage1 et dans le même élan, attribuez lui la propriété Texte masqué
    3. Dans la 3ème, insérez un signet que vous nommez bkmImage1Cible

    Ensuite, dans un module, inscrivez ce code :

    Option Explicit
    
    Private m_oPicture As Word.InlineShape
    
    Private Sub cmdInsertImage_Click()
    Const BOOKMARK_PATH                             As String = "bkmImage"
    Const BOOKMARK_TARGET                           As String = BOOKMARK_PATH & "#" & "Cible"
    Dim strImagePath                                As String
    Dim strBookmarkTarget                           As String
    
    
        Select Case cmdInsertImage.Caption
            Case "Insérer..."
                With ActiveDocument
                    strImagePath = .Bookmarks(BOOKMARK_PATH & "1").Range.Text
                    strBookmarkTarget = Replace(BOOKMARK_TARGET, "#", 1)
                    Set m_oPicture = .Bookmarks(strBookmarkTarget).Range.InlineShapes.AddPicture(strImagePath, False, True)
                End With
                cmdInsertImage.Caption = "Supprimer"
            Case "Supprimer"
                If Not m_oPicture Is Nothing Then
                    m_oPicture.Delete
                    cmdInsertImage.Caption = "Insérer..."
                End If
        End Select
    End Sub
    

    Le principe reste théorique, c'est juste pour vous montrer...

    Argy

    • Marqué comme réponse Camileo jeudi 12 juillet 2012 15:13
    mercredi 11 juillet 2012 14:46
    Modérateur
  • Merci beaucoup pour tous vos conseils..

    Je vais regarder cela dès que j'ai un moment alors. Je ne suis pas sûre sûre de réussir, mais je vais essayer.

    Merci infiniment d'avoir pris du temps pour m'aider !


    Cam

    jeudi 12 juillet 2012 08:31
  • J'ai encore une petite question si vous pouvez m'aider par rapport à ma première programmation.

    Dans cette configuration, c'est la ligne 2 du tableau 1 qui se déroule lorsque je clique sur le bouton.

    Mais j'aimerai que ça soit ligne 2 ET 3 qui se déroulent. Comment je peux choisir les 2 en même temps ?

    J'ai essayé les : ; - mais rien ne va..

    Pouvez-vous me renseigner ?

    Grand merci d'avance.

    Private Sub ToggleButton1_Click()
     With ActiveDocument.Tables(1).Rows(2)
     If .HeightRule = wdRowHeightExactly Then
     .HeightRule = wdRowHeightAuto
     ToggleButton1.Caption = "Hide"
     .Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
     .Borders(wdBorderLeft).LineStyle = wdLineStyleSingle
     .Borders(wdBorderRight).LineStyle = wdLineStyleSingle
     Else
     ToggleButton1.Caption = "Show"
     .HeightRule = wdRowHeightExactly
     .Height = ".5"
     .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
     .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
     .Borders(wdBorderRight).LineStyle = wdLineStyleNone
     End If
     End With
     End Sub


    Cam

    jeudi 12 juillet 2012 09:42
  • Humm, je pense qu'il faut que vous agrémentiez votre code comme suit :

    Private Sub ToggleButton1_Click() Dim oTable As Table Dim oRow As Row Dim R As Integer Set oTable = ActiveDocument.Tables(2) With oTable Select Case ToggleButton1 Case True For R = 2 To 3 With .Rows(R) .Select With Selection .MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend With .Font .Hidden = True End With End With .HeightRule = wdRowHeightAuto End With .Borders(wdBorderBottom).LineStyle = wdLineStyleNone .Borders(wdBorderLeft).LineStyle = wdLineStyleNone .Borders(wdBorderRight).LineStyle = wdLineStyleNone .Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone Next ToggleButton1.Caption = "Show" Case False For R = 2 To 3 With .Rows(R) .Select With Selection .MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend With .Font .Hidden = False End With End With .HeightRule = wdRowHeightAtLeast .Height = CentimetersToPoints(0.1) End With .Borders(wdBorderBottom).LineStyle = wdLineStyleSingle .Borders(wdBorderLeft).LineStyle = wdLineStyleSingle .Borders(wdBorderRight).LineStyle = wdLineStyleSingle .Borders(wdBorderHorizontal).LineStyle = wdLineStyleSingle Next ToggleButton1.Caption = "Hide" End Select .Rows(1).Select Selection.HomeKey End With

    Set oTable = Nothing

    End Sub

    En masquant le texte, cela résoud les problèmes...

    Pour l'image il va falloir la sélectionner d'abord puis lui attribuer la propriété Visible dans le même esprit.

    Pouvez-vous publier un look de ce que vous souhaitez dans les 2 cas (Hide/Show) en images sur CJoint par exemple... pour que je me rende compte.


    Argy




    • Modifié ArgyronetModerator jeudi 12 juillet 2012 15:01 Complément d'infos
    • Marqué comme réponse Camileo jeudi 12 juillet 2012 15:13
    jeudi 12 juillet 2012 14:42
    Modérateur
  • Merci pour votre idée mais j'ai l'impression que ça me complique un peu la tache.

    Pour les photos, j'ai finalement pris votre idée et ai fractionné ma deuxième ligne, comme ça j'ai d'un coté le texte et de l'autre la photo. Mais pour un article qui est assez grand, afin de ne pas perdre trop de place vu que la photo est en habillage "Aligné sur le texte", j'aurai voulu insérer une nouvelle ligne dans mon tableau, que je fractionne à nouveau. A droite par exemple, je mets ma photo, et ensuite je supprime certaines bordures du tableau, comme ça c'est presque comme si l'image était en habillage justifié..

    C'est pour cela que j'aurai aimé pouvoir ouvrir 2 lignes en même temps.. mais je ne pensais pas que c'était si compliqué..

    J'ai mis l'image de ce que ça donne avec le Hide/Show.. mais sans l'insertion de mes images.

    Merci beaucoup pour toutes vos idées.


    Cam

    jeudi 12 juillet 2012 15:10
  • Ce n'est pas compliqué ; c'est just un code un peu plus propre et réutilisable.*

    Bien..., mais dans votre exemple, je ne vois pas où doit être positionnée l'image...

    Pouvez-vous republier avec la façon dont voulez voir l'image. dans le texte ; par ailleur je suis surpris de voir que vous n'avez qu'une ligne à masquer pas 2 ! Vosu m'aviez parlé des lignes 2 et 3...

    Entre chaque article, il n'y a qu'une ligne. Je ne pourrais vous aider que si vous êtes la plus précise possible.

    * je vous posterai une méthode plus générique et plus souple et réutilisable...


    Argy

    • Marqué comme réponse Camileo vendredi 13 juillet 2012 08:57
    vendredi 13 juillet 2012 07:31
    Modérateur
  • J'ai remis une photo avec un exemple ou j'aimerai mettre l'image.

    Dans cet exemple, j'ai 2 lignes à masquer (la 2 et la 3). Parce que le texte de cet article serait plus long que les autres.

    Lorsque le texte est relativement court, une seule ligne suffit.

    http://cjoint.com/?3Gnk5m9oZ0r

    J'espère avoir été plus précise. merci.


    Cam

    vendredi 13 juillet 2012 08:59
  • Bon OK, c'est bien ce que je voyais... Donc j'ai rendu générique la procédure ce qui pour vous sera plus commode à utiliser et qui plus est à ne pas avoir une procédure répétée pour chaque bouton.

    Donc j'ai reproduis sur mon document Word le look du tableau que vous avez mis dans CJoint et j'ai posé les 3 boutons nommés respectvement ToggleButton1, ToggleButton2 et ToggleButton3... Chaque événement Click sur ces boutons appelle la même procédure avec les paramètres adaptés soit :

    ShowHideRowForTable N° du tableau, N° de ligne de début, N° de ligne de fin, Nom du bouton à bascule

    Private Sub ToggleButton1_Click() ShowHideRowForTable 2, 2, 3, ToggleButton1 End Sub Private Sub ToggleButton2_Click() ShowHideRowForTable 2, 5, 6, ToggleButton2 End Sub Private Sub ToggleButton3_Click() ShowHideRowForTable 2, 8, 9, ToggleButton3 End Sub Private Sub ShowHideRowForTable(ByVal TableId As Integer, ByVal RowArticleStart As Integer, ByVal RowArticleEnd As Integer, ByRef TargetButton As ToggleButton, Optional ByVal HideBorders As Boolean = False) '--------------------------------------------------------------------------- ' Procedure : ShowHideRowForTable ' DateTime : 13/07/2012 ' Author : Jean-Philippe AMBROSINO (argyronet) ' Purpose : Returns '........................................................................... ' Parameters : TableId = Identifiant de la table ' RowArticleStart = N° de ligne à masquer (départ) ' RowArticleEnd = N° de ligne à masquer (arrivée) ' TargetButton = Contrôle bouton ToggleButton appelant

    ' HideBorders = True si on masque ou pas les bordure

    ' Return Codes : None '........................................................................... ' Notice : '--------------------------------------------------------------------------- Dim oTable As Word.Table Dim oRow As Word.Row Dim intLineStyle As Word.WdLineStyle Dim R As Integer On Error Resume Next With Application .ScreenUpdating = False End With Set oTable = ActiveDocument.Tables(TableId) If oTable Is Nothing Then Err.Raise 9, "Pas de tableau", "Le tableau N°" & TableId & " que vous essayez de mettre en forme n'existe pas dans le document." End If On Error GoTo L_ErrShowHideRowForTable With oTable Select Case TargetButton Case True intLineStyle = wdLineStyleNone For R = RowArticleStart To RowArticleEnd With .Rows(R) .Select With Selection .MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend With .Font .Hidden = True End With End With .HeightRule = wdRowHeightAuto End With If HideBorders Then .Borders(wdBorderBottom).LineStyle = intLineStyle .Borders(wdBorderLeft).LineStyle = intLineStyle .Borders(wdBorderRight).LineStyle = intLineStyle End If Next Case False intLineStyle = wdLineStyleNone For R = RowArticleStart To RowArticleEnd With .Rows(R) .Select With Selection .MoveLeft Unit:=wdCell, Count:=1, Extend:=wdExtend .MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend With .Font .Hidden = False End With End With .HeightRule = wdRowHeightAtLeast .Height = .Height = CentimetersToPoints(0.1) End With If HideBorders Then .Borders(wdBorderBottom).LineStyle = intLineStyle .Borders(wdBorderLeft).LineStyle = intLineStyle .Borders(wdBorderRight).LineStyle = intLineStyle End If Next End Select .Rows(1).Select Selection.HomeKey End With TargetButton.Caption = IIf(TargetButton, "Show", "Hide") On Error GoTo 0 L_ExShowHideRowForTable: With Application .ScreenUpdating = True End With Exit Sub L_ErrShowHideRowForTable: MsgBox Err.Description, 48, Err.Source Resume L_ExShowHideRowForTable End Sub

    Là, je pense que ça devrait aller...

    Argy


    • Modifié ArgyronetModerator vendredi 13 juillet 2012 09:51 Fautes
    • Marqué comme réponse Camileo lundi 16 juillet 2012 07:18
    vendredi 13 juillet 2012 09:47
    Modérateur
  • Merci beaucoup pour cette procédure et pour le temps que vous avez pris pour m'aider.

    Je vais essayer cela dès que j'ai un moment.

    Merci infiniment :)


    Cam

    lundi 16 juillet 2012 07:19