Vba excel clique sur les images (résolu)

eideal44

XLDnaute Junior
Bonjour,

J'aimerais savoir si j'ai la possibilité de réduire mon code ci-dessous car j'ai 17 images donc 17 click possibles :

'*******************************************************************
Sub Image0_Click()
If Label78.Caption = "PRESENT AU CENTRE" Then
Label78.Caption = "PRESENT EN ENTREPRISE"
Label58.BackColor = &H80C0FF
Label78.BackColor = &H80C0FF
Label58.ForeColor = &H80000012
Label78.ForeColor = &H80000012
ElseIf Label78.Caption = "PRESENT EN ENTREPRISE" Then
Label78.Caption = "PREVISIONNEL ENTREPRISE"
Label58.BackColor = &H80FFFF
Label78.BackColor = &H80FFFF
Label58.ForeColor = &H80000012
Label78.ForeColor = &H80000012​
ElseIf Label78.Caption = "PREVISIONNEL ENTREPRISE" Then
Label78.Caption = "PRESENT AU CENTRE"
Label58.BackColor = &HFFC0C0
Label78.BackColor = &HFFC0C0
Label58.ForeColor = &H80000012
Label78.ForeColor = &H80000012​
End If
End Sub
'*******************************************************************
Sub Image1_Click()
If Label79.Caption = "PRESENT AU CENTRE" Then
Label79.Caption = "PRESENT EN ENTREPRISE"
Label59.BackColor = &H80C0FF
Label79.BackColor = &H80C0FF
Label59.ForeColor = &H80000012
Label79.ForeColor = &H80000012
ElseIf Label79.Caption = "PRESENT EN ENTREPRISE" Then
Label79.Caption = "PREVISIONNEL ENTREPRISE"
Label59.BackColor = &H80FFFF
Label79.BackColor = &H80FFFF
Label59.ForeColor = &H80000012
Label79.ForeColor = &H80000012​
ElseIf Label79.Caption = "PREVISIONNEL ENTREPRISE" Then
Label79.Caption = "PRESENT AU CENTRE"
Label59.BackColor = &HFFC0C0
Label79.BackColor = &HFFC0C0
Label59.ForeColor = &H80000012
Label79.ForeColor = &H80000012
End If
End Sub
'*******************************************************************
Sub Image2_Click()
If Label80.Caption = "PRESENT AU CENTRE" Then
Label80.Caption = "PRESENT EN ENTREPRISE"
Label60.BackColor = &H80C0FF
Label80.BackColor = &H80C0FF
Label60.ForeColor = &H80000012
Label80.ForeColor = &H80000012
ElseIf Label80.Caption = "PRESENT EN ENTREPRISE" Then
Label80.Caption = "PREVISIONNEL ENTREPRISE"
Label60.BackColor = &H80FFFF
Label80.BackColor = &H80FFFF
Label60.ForeColor = &H80000012
Label80.ForeColor = &H80000012​
ElseIf Label80.Caption = "PREVISIONNEL ENTREPRISE" Then
Label80.Caption = "PRESENT AU CENTRE"
Label60.BackColor = &HFFC0C0
Label80.BackColor = &HFFC0C0
Label60.ForeColor = &H80000012
Label80.ForeColor = &H80000012
End If
End Sub
'*******************************************************************
Sub Image4_Click()
If Label81.Caption = "PRESENT AU CENTRE" Then
Label81.Caption = "PRESENT EN ENTREPRISE"
Label61.BackColor = &H80C0FF
Label81.BackColor = &H80C0FF
Label61.ForeColor = &H80000012
Label81.ForeColor = &H80000012
ElseIf Label81.Caption = "PRESENT EN ENTREPRISE" Then
Label81.Caption = "PREVISIONNEL ENTREPRISE"
Label61.BackColor = &H80FFFF
Label81.BackColor = &H80FFFF
Label61.ForeColor = &H80000012
Label81.ForeColor = &H80000012​
ElseIf Label81.Caption = "PREVISIONNEL ENTREPRISE" Then
Label81.Caption = "PRESENT AU CENTRE"
Label61.BackColor = &HFFC0C0
Label81.BackColor = &HFFC0C0
Label61.ForeColor = &H80000012
Label81.ForeColor = &H80000012​
End If
End Sub
'*******************************************************************

Ai-je la possibilité de faire une boucle sur les 17 images?

Merci d'avance pour vos retours car je ne vois pas trop comment l'automatiser

Eideal44
 
Dernière édition:

job75

XLDnaute Barbatruc

Pièces jointes

  • Module de classe(1).xls
    56 KB · Affichages: 59
  • Module de classe(1).xls
    56 KB · Affichages: 65
  • Module de classe(1).xls
    56 KB · Affichages: 67

eideal44

XLDnaute Junior
Re : Vba excel clique sur les images

Bonjour job75,

Tout d'abord merci pour ton exemple de module, il faut que je regarde pour l'adapter à mon fichier et c'est vrai que ça aurait été plus facile de communiquer ou d'expliquer avec un fichier que je joint dès à présent.
Pour explication, j'ai 2 modules : 1 pour determiner le CALENDRIER PREVISIONNEL qui doit se retrouver sur les lignes des mois (ligne 7 pour JANVIER, ligne 23 pour FEVRIER, ...) et 1 pour ajouter des entrées dans le mois sélectionner.

C'est sur que les modules de classe faciliteraient mon code et l'allègeraient mais je dois finir ce travail pour mercredi de la semaine prochaine et je suis donc un peu pressé par le temps mais dès que j'ai fini, je me penche sur les modules de classe car de ce que j'ai pu voir et lire, ca à l'air génial pour les taches répétitives.

Merci pour tes retours et tes explications.

J'y retourne de suite.

Eideal44
 

Pièces jointes

  • TEST.xls
    464.5 KB · Affichages: 55
  • TEST.xls
    464.5 KB · Affichages: 62
  • TEST.xls
    464.5 KB · Affichages: 67

eideal44

XLDnaute Junior
Re : Vba excel clique sur les images

Re,

Il n'y a plus 17 images mais 29 à présent que vous trouverez dans l'userform3, frame 2, les petits PLUS en verts sont les images de image0 à image28 et la macro ci-dessus se trouve dans le code de l'userform3 directement mais je l'ai modifié par :
'************************************************* ******************
Sub Image0_Click()
M = 42 + 0
X = 12 + 0
B = 6 + 0
If Controls("Label" & M).Caption = "PRESENT AU CENTRE" Then
Controls("Label" & M).Caption = "PRESENT EN ENTREPRISE"
Controls("Label" & X).BackColor = &H80C0FF
Controls("Label" & M).BackColor = &H80C0FF
Controls("Label" & X).ForeColor = &H80000012
Controls("Label" & M).ForeColor = &H80000012
Controls("Textbox" & B).Visible = True
Controls("Textbox" & B + 29).Visible = True
ElseIf Controls("Label" & M).Caption = "PRESENT EN ENTREPRISE" Then
Controls("Label" & M).Caption = "PREVISIONNEL ENTREPRISE"
Controls("Label" & X).BackColor = &H80FFFF
Controls("Label" & M).BackColor = &H80FFFF
Controls("Label" & X).ForeColor = &H80000012
Controls("Label" & M).ForeColor = &H80000012
Controls("Textbox" & B).Visible = True
Controls("Textbox" & B + 29).Visible = True
ElseIf Controls("Label" & M).Caption = "PREVISIONNEL ENTREPRISE" Then
Controls("Label" & M).Caption = "PRESENT AU CENTRE"
Controls("Label" & X).BackColor = &HFFC0C0
Controls("Label" & M).BackColor = &HFFC0C0
Controls("Label" & X).ForeColor = &H80000012
Controls("Label" & M).ForeColor = &H80000012
Controls("Textbox" & B).Visible = False
Controls("Textbox" & B + 29).Visible = False
End If
End Sub
'************************************************* ******************
Sub Image1_Click()
M = 42 + 1
X = 12 + 1
B = 6 + 1
If Controls("Label" & M).Caption = "PRESENT AU CENTRE" Then
Controls("Label" & M).Caption = "PRESENT EN ENTREPRISE"
Controls("Label" & X).BackColor = &H80C0FF
Controls("Label" & M).BackColor = &H80C0FF
Controls("Label" & X).ForeColor = &H80000012
Controls("Label" & M).ForeColor = &H80000012
Controls("Textbox" & B).Visible = True
Controls("Textbox" & B + 29).Visible = True
ElseIf Controls("Label" & M).Caption = "PRESENT EN ENTREPRISE" Then
Controls("Label" & M).Caption = "PREVISIONNEL ENTREPRISE"
Controls("Label" & X).BackColor = &H80FFFF
Controls("Label" & M).BackColor = &H80FFFF
Controls("Label" & X).ForeColor = &H80000012
Controls("Label" & M).ForeColor = &H80000012
Controls("Textbox" & B).Visible = True
Controls("Textbox" & B + 29).Visible = True
ElseIf Controls("Label" & M).Caption = "PREVISIONNEL ENTREPRISE" Then
Controls("Label" & M).Caption = "PRESENT AU CENTRE"
Controls("Label" & X).BackColor = &HFFC0C0
Controls("Label" & M).BackColor = &HFFC0C0
Controls("Label" & X).ForeColor = &H80000012
Controls("Label" & M).ForeColor = &H80000012
Controls("Textbox" & B).Visible = False
Controls("Textbox" & B + 29).Visible = False
End If
End Sub
'************************************************* ******************
Sub Image2_Click()
M = 42 + 2
X = 12 + 2
B = 6 + 2
If Controls("Label" & M).Caption = "PRESENT AU CENTRE" Then
Controls("Label" & M).Caption = "PRESENT EN ENTREPRISE"
Controls("Label" & X).BackColor = &H80C0FF
Controls("Label" & M).BackColor = &H80C0FF
Controls("Label" & X).ForeColor = &H80000012
Controls("Label" & M).ForeColor = &H80000012
Controls("Textbox" & B).Visible = True
Controls("Textbox" & B + 29).Visible = True
ElseIf Controls("Label" & M).Caption = "PRESENT EN ENTREPRISE" Then
Controls("Label" & M).Caption = "PREVISIONNEL ENTREPRISE"
Controls("Label" & X).BackColor = &H80FFFF
Controls("Label" & M).BackColor = &H80FFFF
Controls("Label" & X).ForeColor = &H80000012
Controls("Label" & M).ForeColor = &H80000012
Controls("Textbox" & B).Visible = True
Controls("Textbox" & B + 29).Visible = True
ElseIf Controls("Label" & M).Caption = "PREVISIONNEL ENTREPRISE" Then
Controls("Label" & M).Caption = "PRESENT AU CENTRE"
Controls("Label" & X).BackColor = &HFFC0C0
Controls("Label" & M).BackColor = &HFFC0C0
Controls("Label" & X).ForeColor = &H80000012
Controls("Label" & M).ForeColor = &H80000012
Controls("Textbox" & B).Visible = False
Controls("Textbox" & B + 29).Visible = False
End If
End Sub
'************************************************* ******************

etc etc afin d'avoir le même code ou presque suivant le clique image mais si si, tout y est
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Vba excel clique sur les images

Bonsoir à tous

eideal44
Juste pour te montrer qu'ainsi c'est plus agréable

PS: Je ne vois pas de modules de classe dans ton code ???
VB:
'************************************************* ******************
Sub Image0_Click()
M = 42 + 0
X = 12 + 0
B = 6 + 0
    If Controls("Label" & M).Caption = "PRESENT AU CENTRE" Then
        Controls("Label" & M).Caption = "PRESENT EN ENTREPRISE"
        Controls("Label" & X).BackColor = &H80C0FF
        Controls("Label" & M).BackColor = &H80C0FF
        Controls("Label" & X).ForeColor = &H80000012
        Controls("Label" & M).ForeColor = &H80000012
        Controls("Textbox" & B).Visible = True
        Controls("Textbox" & B + 29).Visible = True
    ElseIf Controls("Label" & M).Caption = "PRESENT EN ENTREPRISE" Then
        Controls("Label" & M).Caption = "PREVISIONNEL ENTREPRISE"
        Controls("Label" & X).BackColor = &H80FFFF
        Controls("Label" & M).BackColor = &H80FFFF
        Controls("Label" & X).ForeColor = &H80000012
        Controls("Label" & M).ForeColor = &H80000012
        Controls("Textbox" & B).Visible = True
        Controls("Textbox" & B + 29).Visible = True
    ElseIf Controls("Label" & M).Caption = "PREVISIONNEL ENTREPRISE" Then
        Controls("Label" & M).Caption = "PRESENT AU CENTRE"
        Controls("Label" & X).BackColor = &HFFC0C0
        Controls("Label" & M).BackColor = &HFFC0C0
        Controls("Label" & X).ForeColor = &H80000012
        Controls("Label" & M).ForeColor = &H80000012
        Controls("Textbox" & B).Visible = False
        Controls("Textbox" & B + 29).Visible = False
    End If
End Sub
'************************************************* ******************
VB:
Sub Image1_Click()
M = 42 + 1
X = 12 + 1
B = 6 + 1
    If Controls("Label" & M).Caption = "PRESENT AU CENTRE" Then
        Controls("Label" & M).Caption = "PRESENT EN ENTREPRISE"
        Controls("Label" & X).BackColor = &H80C0FF
        Controls("Label" & M).BackColor = &H80C0FF
        Controls("Label" & X).ForeColor = &H80000012
        Controls("Label" & M).ForeColor = &H80000012
        Controls("Textbox" & B).Visible = True
        Controls("Textbox" & B + 29).Visible = True
    ElseIf Controls("Label" & M).Caption = "PRESENT EN ENTREPRISE" Then
        Controls("Label" & M).Caption = "PREVISIONNEL ENTREPRISE"
        Controls("Label" & X).BackColor = &H80FFFF
        Controls("Label" & M).BackColor = &H80FFFF
        Controls("Label" & X).ForeColor = &H80000012
        Controls("Label" & M).ForeColor = &H80000012
        Controls("Textbox" & B).Visible = True
        Controls("Textbox" & B + 29).Visible = True
    ElseIf Controls("Label" & M).Caption = "PREVISIONNEL ENTREPRISE" Then
        Controls("Label" & M).Caption = "PRESENT AU CENTRE"
        Controls("Label" & X).BackColor = &HFFC0C0
        Controls("Label" & M).BackColor = &HFFC0C0
        Controls("Label" & X).ForeColor = &H80000012
        Controls("Label" & M).ForeColor = &H80000012
        Controls("Textbox" & B).Visible = False
        Controls("Textbox" & B + 29).Visible = False
    End If
End Sub
'************************************************* ******************
VB:
Sub Image2_Click()
M = 42 + 2
X = 12 + 2
B = 6 + 2
    If Controls("Label" & M).Caption = "PRESENT AU CENTRE" Then
        Controls("Label" & M).Caption = "PRESENT EN ENTREPRISE"
        Controls("Label" & X).BackColor = &H80C0FF
        Controls("Label" & M).BackColor = &H80C0FF
        Controls("Label" & X).ForeColor = &H80000012
        Controls("Label" & M).ForeColor = &H80000012
        Controls("Textbox" & B).Visible = True
        Controls("Textbox" & B + 29).Visible = True
    ElseIf Controls("Label" & M).Caption = "PRESENT EN ENTREPRISE" Then
        Controls("Label" & M).Caption = "PREVISIONNEL ENTREPRISE"
        Controls("Label" & X).BackColor = &H80FFFF
        Controls("Label" & M).BackColor = &H80FFFF
        Controls("Label" & X).ForeColor = &H80000012
        Controls("Label" & M).ForeColor = &H80000012
        Controls("Textbox" & B).Visible = True
        Controls("Textbox" & B + 29).Visible = True
    ElseIf Controls("Label" & M).Caption = "PREVISIONNEL ENTREPRISE" Then
        Controls("Label" & M).Caption = "PRESENT AU CENTRE"
        Controls("Label" & X).BackColor = &HFFC0C0
        Controls("Label" & M).BackColor = &HFFC0C0
        Controls("Label" & X).ForeColor = &H80000012
        Controls("Label" & M).ForeColor = &H80000012
        Controls("Textbox" & B).Visible = False
        Controls("Textbox" & B + 29).Visible = False
    End If
End Sub
'************************************************* ******************
 

eideal44

XLDnaute Junior
Re : Vba excel clique sur les images

c'est vrai que c'est plus agréable. Non il n'y a pas de module de classe car je ne sais pas en faire, je suis en train de lire des articles dessus mais j'avoue que je ne comprends pas tout encore, il va falloir un peu de pratique je pense avant de pouvoir en créer un bien.
 

Staple1600

XLDnaute Barbatruc
Re : Vba excel clique sur les images

Re

Allez zou, retournes dans ton message non balisé, et passes en mode Edition et utilises ces balises (celles indiquées dans ma signature)

[NOPARSE]
VB:
[/NOPARSE][SIZE=4][COLOR=#b22222][B]LE CODE DE TA MACRO[/B][/COLOR][/SIZE][noparse]
[/noparse]

Ainsi ton tout fil sera dans l'harmonie et reposera dans nos yeux fatigués ;)
 

job75

XLDnaute Barbatruc
Re : Vba excel clique sur les images

Re,

Je n'avais pas vu les images dans UserForm3.

Alors voici votre fichier avec le Module de classe Classe1.

PS : vous êtes un fana des variables Public...

Je les ai toutes mises dans Module1 pour éviter des erreurs.

A+
 

Pièces jointes

  • TEST(1).xls
    525 KB · Affichages: 68
  • TEST(1).xls
    525 KB · Affichages: 70
  • TEST(1).xls
    525 KB · Affichages: 71

eideal44

XLDnaute Junior
Re : Vba excel clique sur les images

et derniere petite question apres j'arrete avec mes questions, est-ce que au niveau de mes labels, c'est possible quand j'arrive dans le caption SEM 52 de mettre les suivant labels à partir de 1 : SEM 1, SEM 2, ...
D'avance merci
Eideal44
 

Discussions similaires

Réponses
14
Affichages
707