Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Contribuez
Contribuez Access : Vos contributions. Postez ici vos codes sources, conseils, astuces et autres propositions. Ce forum n'est pas un forum technique mais destiné aux contributions pour www.developpez.com
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/11/2007, 16h40   #1
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 909
Points : 30 909
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Par défaut [Fait] Comment mettre des couleurs sur un contrôle onglet.

Bonjour

Dans une contribution précédente, je vous expliquais comment simuler un contrôle onglet. http://www.developpez.net/forums/sho...d.php?t=409907

Ici je vais vous expliquer comment transformer un onglet existant en onglet avec des couleurs.

1 – Préparation

L’onglet comporte une propriété Style de Fond, celle-ci sera réglée à Transparent par le code. De plus chaque page de l'onglet a une propriété Remarque (TAG), dans celle-ci vous mettrez la couleur que vous souhaitez, il s'agit d'un nombre de type long, que vous pouvez récupérer en sélectionnant une couleur sur n'importe quel autre contrôle.

Sur votre formulaire positionnez un contrôle rectangle (que nous nommerons recFondOnglet), celui-ci aura un fond opaque (réglé la propriété Style de Fond à standard), et positionnez le en arrière plan (Menu : Format/Mettre en Arrière plan). La position et la taille de ce formulaire seront réglées par le code.

Sur ce formulaire vous allez positionner 4 contrôles, ce sera des boutons de commandes MS Forms 2.0, vous les trouverez sous le nom Microsoft Forms 2.0 CommandButton dans le menu : Insertion/Contrôle ActiveX …
Ces boutons seront nommés cmdOngletX avec X variant de 0 à 3, car dans l’exemple nous avons 4 onglets. La taille et la position de ces contrôles seront réglés par le code, ceux-ci se positionneront à la place des onglets.
Nous utilisons ce contrôle, car celui-ci va toujours rester au-dessus.

2 - Code

Mettez le code suivant dans un module.

Code :
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Option Compare Database
Option Explicit
 
' ===== déclaration des variables publiques =====
Public tabCouleur() As Long           ' stockage des couleurs dans un tableau
 
Public Sub PrepaCouleurOnglet(frm As Form, ctrlOnglet As TabControl)
    ' ======================================================================================
    ' Procedure     : Module :Module1 // Procédure : PrepaCouleurOnglet
    ' DateTime      : 09/11/2007 17:43
    ' Auteur        : Starec -  http://starec.developpez.com
    ' Description   : Cette procédure va permettre de paramètrer les couleurs du contrôle
    '                 onglet
    '=======================================================================================
 
    ' ===== déclaration =====
    Dim intNbrPage As Integer            ' nombre de pages
    Dim i As Integer
    Dim ctrl As Control
 
    ' mise en transparence du contrôle onglet
    frm.Controls(ctrlOnglet.Name).BackStyle = 0
 
    ' positionnement du rectangle servant de fond
    With frm.recFondOnglet
        .Top = frm.Controls(ctrlOnglet.Name).Top
        .Left = frm.Controls(ctrlOnglet.Name).Left
        .Height = frm.Controls(ctrlOnglet.Name).Height
        .Width = frm.Controls(ctrlOnglet.Name).Width
    End With
 
    ' répartition des onglets automatique pour que ceux-ci soient correctement disposés.
    frm.Controls(ctrlOnglet.Name).TabFixedWidth = frm.Controls(ctrlOnglet.Name).Width / frm.Controls(ctrlOnglet.Name).Pages.Count
 
    ' récupération du nombre de pages
    intNbrPage = frm.Controls(ctrlOnglet.Name).Pages.Count
 
    ' redimensionnement du tableau
    ReDim tabCouleur(0 To intNbrPage - 1)
 
    ' on rempli le tableau avec les couleurs de la propriété remarque (tab) des pages
    For i = 0 To intNbrPage - 1
        tabCouleur(i) = frm.Controls(ctrlOnglet.Name).Pages(i).Tag
    Next i
 
    ' on met les couleurs dans les boutons de commandes on en profite pour les positionner
    ' et les retailler
    ' ceux-ci son nommés cmdOngletX avec X de 0 au nombre d'onglets -1
    For Each ctrl In frm.Controls
        ' on test le nom des contrôles pour trouver les boutons
        If Left(ctrl.Name, 9) = "cmdOnglet" Then
            ' on affecte la couleur
            ctrl.BackColor = tabCouleur(Mid(ctrl.Name, 10))
            ' on change les propriétés des boutons de commandes
            With ctrl
                ' hauteur
                .Height = frm.Controls(ctrlOnglet.Name).TabFixedHeight + 40
                ' largeur
                .Width = frm.Controls(ctrlOnglet.Name).TabFixedWidth - 10
                ' légende
                .Caption = frm.Controls(ctrlOnglet.Name).Pages(CLng(Mid(ctrl.Name, 10))).Caption
                ' position par rapport au haut du formulaire
                .Top = frm.Controls(ctrlOnglet.Name).Top
                ' position par rapport au bord gauche du formulaire
                .Left = frm.Controls(ctrlOnglet.Name).Left + CLng(Mid(ctrl.Name, 10)) * frm.Controls(ctrlOnglet.Name).TabFixedWidth + 10
            End With
 
        End If
    Next ctrl
 
End Sub
Ensuite appelez ce code sur l’évènement Load du formulaire. (Dans notre cas, le contrôle onglet se nomme mstTest.

Code :
1
2
3
4
5
6
Private Sub Form_Load()
    ' préparation de l'onglet
    Call PrepaCouleurOnglet(Me, Me.mstTest)
    ' on affecte la couleur à la première page
    Me.recFondOnglet.BackColor = tabCouleur(0)
End Sub
Ensuite mettez le code suivant sur l’évènement Change de votre formulaire.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub mstTest_Change()
    ' sur l'évènement change de notre contrôle onglet on va affecter les couleurs au rectangle de fond
    Select Case Me.mstTest.Value
        Case 0
            Me.recFondOnglet.BackColor = tabCouleur(0)
        Case 1
            Me.recFondOnglet.BackColor = tabCouleur(1)
        Case 2
            Me.recFondOnglet.BackColor = tabCouleur(2)
        Case 3
            Me.recFondOnglet.BackColor = tabCouleur(3)
    End Select
End Sub
Ensuite ce code sur l’évènement click des boutons de commandes.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub cmdOnglet0_Click()
    Me.mstTest.Value = 0
End Sub
 
Private Sub cmdOnglet1_Click()
    Me.mstTest.Value = 1
End Sub
 
Private Sub cmdOnglet2_Click()
    Me.mstTest.Value = 2
End Sub
 
Private Sub cmdOnglet3_Click()
    Me.mstTest.Value = 3
End Sub
Voilà le résultat :

2007-11-11_161821.jpg

3 – Remarque :

Ce code ne fonctionne que si le style d’onglet de votre contrôle n’est pas en Multi-Ligne.
Si vous rajoutez des contrôles sur vos pages, n’oubliez pas de remettre le rectangle en arrière plan.
Cet exemple est fait avec plusieurs couleurs, vous pouvez bien sûr n'en prendre qu'une.

Attention : Si vous utilisez Access 2003, il faut que l'option "Utilisez les styles Windows" soit décoché dans l'onglet Formulaire des options pour cette astuce fonctionne.
Ce code fonctionne sur les versions Access 2000, 2002 et 2003, il n'a pas été testé sur les versions 97 et 2007.
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2008, 13h45   #2
Invité régulier
 
Inscription : octobre 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 18
Points : 8
Points : 8
Bonjour,

superbe ton code sur les onglets mais j'ai un petit soucis que tu pourras surement m'expliquer

quand je mets "hauteur fixe onglets" à 0 cm de mon contrôle Onglet, j'obtiens des onglets fonctionnels mais la légende de chaque onglet est de couleur grise standard (notes qu'il y a quelque chose au dessus des légendes, comme des boutons en arrière plan).


Par contre quand je mets la valeur à 0,5 cm (peu importe en fait puisque ton code prend le relais), la légende de chaque onglet est bien coloriée (magnifique) mais le clic sur chaque onglet ne fonctionne pas...


Merci pour ton aide
Papy_Bro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2008, 14h05   #3
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 909
Points : 30 909
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

La hauteur des boutons de commande est géré par la hauteur des contrôles d'onglets.

As-tu bien mis le code sur l'évènement Click des boutons de commandes pour lancer l'évènement Change du contrôle onglet ?

Starec
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2008, 14h49   #4
Invité régulier
 
Inscription : octobre 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 18
Points : 8
Points : 8
Citation:
Envoyé par Starec Voir le message
Bonjour
As-tu bien mis le code sur l'évènement Click des boutons de commandes pour lancer l'évènement Change du contrôle onglet ?
Starec
oui tout est bien codé

quand je mets à 0 la hauteur c'est quand même étonnant que je puisse voir les boutons d'onglet, non ?

peux-tu m'envoyer par zip ton exemple que nous pouvons observer dans ton FAQ ?
Papy_Bro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2008, 14h55   #5
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 909
Points : 30 909
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Citation:
Envoyé par Papy_Bro Voir le message

peux-tu m'envoyer par zip ton exemple que nous pouvons observer dans ton FAQ ?
Voilà, le temps que je fouille.
Fichiers attachés
Type de fichier : zip Onglet.zip (21,5 Ko, 37 affichages)
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2008, 15h02   #6
Invité régulier
 
Inscription : octobre 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 18
Points : 8
Points : 8
J'ai trouvé mon erreur

J'avais assigné au Page le code du click et non au bouton cmdOnglet...

bon ok je sors ------> []

Merci à toi
Papy_Bro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2009, 10h12   #7
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 909
Points : 30 909
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Pour information, cela fonctionne aussi avec Access 2007, car le contrôle Onglet de cette version n'a pas été modifié par rapport aux autres.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h55.


 
 
 
 
Partenaires

Hébergement Web