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

Résolu
ppc77 Messages postés 49 Statut Membre -  
ppc77 Messages postés 49 Statut Membre -
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

Configuration: Windows XP
Internet Explorer 7.0

6 réponses

  1. Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   59
     
    Bonjour ppc77,

    Essaies comme celà :

    Private Sub BoutonARR01_Click()

    Maintenant, ça doit marcher.

    Cordialement
    0
  2. Utilisateur anonyme
     
    Bonjour,

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

    Lupin
    0
  3. ppc77 Messages postés 49 Statut Membre 2
     
    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
  4. Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   59
     
    Excuses-moi, je me suis "planté" : je voulais te dire de remplacer 'With BoutonARR01' par 'With ActiveSheet.BoutonARR01'.

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

    Posez votre question
  6. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  7. ppc77 Messages postés 49 Statut Membre 2
     
    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