[Excel][bva] comment créer ss routine

Résolu
ppc77 Messages postés 48 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 1 avril 2010 - 18 oct. 2007 à 17:40
ppc77 Messages postés 48 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 1 avril 2010 - 19 oct. 2007 à 09:46
Bonjour,
je me lance pour la première fois en BVA Excel.
mon problème: une personne par ligne et surtout 1 bouton pour chaque personne. Ce bouton a le même effet.
Je pourrais bien sûr faire du copier coller du code du 1er bouton sur les autres... mais outre que cela ne me satisfait pas, il faudrait à chaque nouvelle personne intervenir pour modifier le code du nouveau bouton ....
J'ai tenté une procédure commune :
définition d'une variable NomBouton
dans le code de chaque bouton, NomBouton=NomDuBoutonEnCours
mais je bute sur le With qui n'accepte pas With NomBouton dans une procédure

ci dessous mon code (vous risquez de crier au scandale, mais c'est ma première sur Excel...)

Private Sub BoutonARR01_Click()
Lig = 2

With BoutonARR01

'Test si ARRIVE ou PARS
If .Caption = "JE PARS" Then
' appui sur JE PARS
.Caption = "J'ARRIVE" 'le bouton devient J ARRIVE EN VERT
.BackColor = &H80FF80
Range("d" & Lig).Value = Now() 'heure de départ = now
Range("e" & Lig).Value = Range("d" & Lig).Value - Range("c" & Lig).Value 'calcul temps session
Range("f" & Lig).Value = Range("f" & Lig).Value - Range("e" & Lig).Value 'calcul temps total

Range("A" & Lig).Select 'NOM EN VERT
With Selection.Interior
.ColorIndex = 35
.Pattern = xlSolid
End With

Else
' appui sur J'ARRIVE
.Caption = "JE PARS" 'le bouton devient JE PARS EN ROUGE
.BackColor = &HFF&
Range("C" & Lig).Value = Now() 'heure d'arrivée
Range("D" & Lig).Value = "" 'heure d'arrivée RIEN
Range("E" & Lig).Value = "" 'Temps session RIEN
Range("A" & Lig).Select 'NOM EN ROUGE
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
End If

End With
End Sub

Merci à vous

A voir également:

6 réponses

Papou93 Messages postés 146 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 5 juin 2012 59
18 oct. 2007 à 19:08
Bonjour ppc77,

Essaies comme celà :

Private Sub BoutonARR01_Click()

Maintenant, ça doit marcher.

Cordialement
0
Utilisateur anonyme
18 oct. 2007 à 19:18
Bonjour,

Les [ boutons ] sont sur une feuille ou sur un formulaire ?

Lupin
0
ppc77 Messages postés 48 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 1 avril 2010 2
18 oct. 2007 à 21:47
merci, je viens de revenir, je n'aurai pas le temps essayer ce soir, mais :

Papou : Private Sub BoutonARR01_Click() je le mets où ? c'est ce que j'ai mis sur le bouton de la première ligne

Lupin : les boutons sont sur une feuille

A B C D E F

NOM COMMANDE HEURE ARRIVEE HEURE DEPART TEMPS SESSION TEMPS TOTAL
SAL 1 (le bouton est là) 17:38 17:58 20:00
SAL 2 (le bouton est là) 07:00 0:00


Merci de vos réponses .... avec de la chance il fera jour demain, j'essaierai...
bonne soirée

Patrick
0
Papou93 Messages postés 146 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 5 juin 2012 59
18 oct. 2007 à 22:47
Excuses-moi, je me suis "planté" : je voulais te dire de remplacer 'With BoutonARR01' par 'With ActiveSheet.BoutonARR01'.

Cordialement.
0

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

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 718
18 oct. 2007 à 23:55
bonjour ppc77 et les participants

Il me semble que ta macro ne pourras pas fonctionner pour chaque bouton car tu ne peux intercepter le click que du bouton concerné et pas d'un bouton générique.

Je te propose de faire la même chose en utilisant la colonne G sans rien changer à tes autres données, mais sans bouton et là, elle fonctionne sur n'importe qu'elle ligne, dès que tu sélectionnes la colonne G.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal sel As Range)
If sel.Column = 7 Then
'Test si ARRIVE ou PARS
    If Range("g" & sel.Row).Value = "JE PARS" Then
' appui sur JE PARS
        Range("g" & sel.Row).Value = "J'ARRIVE" 'le bouton devient J ARRIVE EN VERT
        Range("g" & sel.Row).Interior.ColorIndex = 35
        Range("d" & sel.Row).Value = Now() 'heure de départ = now
        Range("e" & sel.Row).Value = Range("d" & sel.Row).Value - Range("c" & sel.Row).Value 'calcul temps session
        Range("f" & sel.Row).Value = Range("f" & sel.Row).Value - Range("e" & sel.Row).Value 'calcul temps total
        Range("A" & sel.Row).Interior.ColorIndex = 35 'NOM EN VERT
        Range("A" & sel.Row).Interior.Pattern = xlSolid
    Else
' appui sur J'ARRIVE
        Range("g" & sel.Row).Value = "JE PARS" 'le bouton devient JE PARS EN ROUGE
        Range("g" & sel.Row).Interior.ColorIndex = 3
        Range("C" & sel.Row).Value = Now() 'heure d'arrivée
        Range("D" & sel.Row).Value = "" 'heure d'arrivée RIEN
        Range("E" & sel.Row).Value = "" 'Temps session RIEN
        Range("A" & sel.Row).Interior.ColorIndex = 3 'NOM EN ROUGE
        Range("A" & sel.Row).Interior.Pattern = xlSolid
    End If
End If
End Sub
0
ppc77 Messages postés 48 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 1 avril 2010 2
19 oct. 2007 à 09:46
Bonjour à vous

la solution d'utiliser la colonne au lieu d'un bouton correspond tout à fait ...

merci beaucoup

Bonne journée à tous et encore bravo et merci pour les services rendus

Patrick
0