Barre d'onglet avec photo

Mika -  
via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Bonjour,

Existe -il un moyen d'insérer une barre d'onglet (en haut des lignes) de facon à cliquer sur des images qui se reportent à des onglets (qui sont en bas).
J'ai 4 feuilles et j'ai réussis à créer des images avec des liens hypertexte sur le Ligne1 (4 images= 1 par feuille). Mais la barre n'est jamais pareil car elle est plus ou moins grande en fonction du zoom en % de la feuille.
J'aurais aimé avoir une barre d'onglet FIGéE sur mes 4 feuilles

Un idée

6 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Créer une barre d'onglet je ne sais pas mais tu peux réaliser quelque chose en VBA :

    1) tu crées un Userform dans lequel tu insères 4 contrôles images, pou chacun dans la propriété Picture tu choisis l'image à afficher
    Tu mets la propriété Show modal de l'UF à False
    Tu mets sa propriété StartUpPosition sur Manual, sa propriété Left à 0 et tu règles sa propriété Top poru qu'elle apparraisse enhaut de la feuille (environ 110, mais tout dépend ce que tu laisses afficher au dessus : barre d'outils, barre de formule ..)

    2) Pour chaque contrôle image tu attribues à sa macro Private sub Image_Click un code selectionnant la feuille voulue (par exemple Feuil1.Select)

    3) Dans This Worbook tu mets l'instruction :
    Private Sub Workbook_Open()
    Userform1.show
    End Sub
    afin que l'UF s'affiche à l'ouverture du classeur

    Tu peux réduire ou augmenter le zoom l'UF restera identique

    Cdlmnt

    0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    L'idée de via n'est pas mal.
    Moi je me suis embêté à jouer avec le zoom.
    Seulement ce n'est pas détectable par vba. Les images s'ajustent sur recalcul de la feuille (F9 ou revalider une formule), ou bien en allant sur une autre feuille et en revenant dessus.
    Les images doivent s'appeler "Image 1" à "Image 4". Sinon les renommer ou adapter le code.

    A mettre dans ThisWorkBook :
    Option Explicit
    
    Dim varOk As Boolean
    Dim memoZoom As Long, memoLeft(1 To 4) As Long, memoTop(1 To 4) As Long
    
    Private Sub Workbook_Open()
        Dim Sh As Worksheet, i As Long
        Set Sh = ActiveSheet
        With Sheets("Feuil1")
            .Activate
            memoZoom = ActiveWindow.Zoom
            For i = 1 To 4
                memoLeft(i) = .Shapes("Image " & i).Left
                memoTop(i) = .Shapes("Image " & i).Top
            Next i
        End With
        Sh.Activate
        varOk = True
    End Sub
    
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        If Sh.Name = "Feuil1" Then majZoom
    End Sub
    
    Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
        If Sh.Name = "Feuil1" Then majZoom
    End Sub
    
    Sub majZoom()
        Dim s As Shape, i As Long
        If ActiveWindow.Zoom <> memoZoom And varOk Then
            For i = 1 To 4
                ActiveSheet.Shapes("Image " & i).Select
                Selection.ShapeRange.ScaleWidth memoZoom / ActiveWindow.Zoom, msoFalse, msoScaleFromTopLeft
                Selection.ShapeRange.ScaleHeight memoZoom / ActiveWindow.Zoom, msoFalse, msoScaleFromTopLeft
                Selection.ShapeRange.Left = memoLeft(i) * memoZoom / ActiveWindow.Zoom
                memoLeft(i) = Selection.ShapeRange.Left
                Selection.ShapeRange.Top = memoTop(i) * memoZoom / ActiveWindow.Zoom
                memoTop(i) = Selection.ShapeRange.Top
            Next i
            memoZoom = ActiveWindow.Zoom
        End If
    End Sub

    https://www.cjoint.com/?DJFqKzWiIkB

    eric
    0
  3. Mika
     
    Je vois le code sur 1 seul ligne c'est normal ?
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Pas bonjour non plus,

      et merci pour commencer ? Jamais ?
      eric
      0
    2. Mika
       
      Veuillez m'excusez,

      Merci tout de même.
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      de toute façon je ne comprend pas ta question.
      Le code est lisible en entier ici, ainsi que sur le fichier dans thisworkbook.
      eric
      0
    4. Mika
       
      Oui il est lisible mais il est sur une seule ligne, on ne voit pas les retours à la ligne.
      Merci.
      0
    5. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      dans le fichier ???
      0
  4. Mika
     
    Bonjour,

    Merci via55, j'ai réussis l'idée est pas mal. Savez vous s'il est possible de changer d'image lorsqu'on choisit l'onglet correspondant, histoire de savoir dans quel onglet on se trouve (changer la couleur du logo par exemple).

    Merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour Mika

    oui c'est possible de charger une autre image avec l'instruction :
    Image1.Picture = LoadPicture(chemin complet du fichier)
    le chemin complet étant par exemple "C:\Mes documents\Mes images\logoABC.jpg"

    L'instruction est à mettre dans Private sub Image_Click avant celle selectionnant la feuille mais il faut en même temps remettre en normal les autres images (puisque celle qui a été cliqué avant a été modifiée) donc en fait il faut mettre 4 instructions (si tu as 4 images)
    Image1.Picture = LoadPicture(chemin complet du fichier de l'image 1 modifiée au clic)
    Image2.Picture = LoadPicture(chemin complet du fichier de l'image 2 normale)
    Image3.Picture = LoadPicture(chemin complet du fichier de l'image 3normale)
    Image4.Picture = LoadPicture(chemin complet du fichier de l'image 4normale)

    Cdlmnt
    0
  7. Mika
     
    D'accord merci,

    Il n'y aura pas de soucis si j'ouvre mon fichier sur un autre PC où il ne trouvera pas la photo ?
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Si !!

      A partir du moment où tu utilise des images (qu'elles soient modifiées ou non) elles doivent être disponibles
      Tu peux avoir le fichier excel et les images dans le même dossier sur une clé USB par exemple et l'utiliser sur un autre PC

      Dans la macro récupère le chemin du fichier avec Activeworkbook.path
      chem=Activeworkbook.path
      ensuite tu l'utilises pour trouver l'image en y ajoutant le nom et l'extension de l'image :
      Image1.Picture = LoadPicture(chem & "\logoABC1.jpg")

      Cdlmnt
      0