Barre d'onglet avec photo

Fermé
Mika - 31 oct. 2014 à 14:45
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 - 4 nov. 2014 à 21:26
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
A voir également:

6 réponses

via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
31 oct. 2014 à 16:16
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
31 oct. 2014 à 16:33
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
Je vois le code sur 1 seul ligne c'est normal ?
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
3 nov. 2014 à 10:36
Pas bonjour non plus,

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

Merci tout de même.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
3 nov. 2014 à 11:21
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
Oui il est lisible mais il est sur une seule ligne, on ne voit pas les retours à la ligne.
Merci.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
3 nov. 2014 à 17:32
dans le fichier ???
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
4 nov. 2014 à 16:14
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
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
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
4 nov. 2014 à 21:26
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