lancer une macro dans une cellule à la place du bouton [ RESOLU ]

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

al1.2loin

XLDnaute Occasionnel
Bonjour, toujours en perte de vitesse, je demande si cela est possible de lancer une macro uniquement en cliquant sur un cellule à la place d'un bouton.
ci joint mon fichier pour mieux m'expliquer:
En B4 j'ai mon bouton de ma macro, je voudrais que ma macro s'exécute en cliquant uniquement dans la cellule B4.
Cela est il possible?
Grâce au forum je récupère des exemple qui me sont très utile, mais je n'ai pas trouvé le bonne exemple.
 

Pièces jointes

Dernière édition:
Re : lancer une macro dans une cellule à la place du bouton

Bonjour al1

Code à mettre dans la feuille "janvier"
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B4")) Is Nothing Then
Zéro_Max
End If
End Sub

et modifier la procédure Zéro_max
Code:
Sub Zéro_Max()
    Range("B6").Select
    Selection.AutoFill Destination:=Range("B6:B36"), Type:=xlFillDefault
    Range("B6:B36").Select
    Range("B5").Select    ' j'ai modifié la ligne Range("B4").select
End Sub

à+
Philippe
 
Re : lancer une macro dans une cellule à la place du bouton

Bonjour

Je suppose que tu as également les feuilles février, mars ...

Code à placer dans ThisWorkbook
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$B$4" Then Range("B6").AutoFill Destination:=Range("B6:B36")
End Sub

Tu peux supprimer la macro Zéro_Max

Cordialement
Chris
 
Re : lancer une macro dans une cellule à la place du bouton

Bonjour à tous

Ma proposition pour éviter l'autofill et les Select
Code:
Sub Zéro_Max()
Range("B6:B36") = "=IF(RC[-1]="""","""",INDEX(Cycle_Max,MOD(RC[-1]-Départ,Durée)+1))"
End Sub
 
Re : lancer une macro dans une cellule à la place du bouton

salut

Autre proposition, dans ThisWorbook
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal R As Range)
  If R(1, 1) = "MAX" Then [B6:B36] = [B6].Formula
End Sub
 
Re : lancer une macro dans une cellule à la place du bouton

[...suite...]

modification si on clique pour chaque prénom
Dans le code de la feuille
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B4:H4")) Is Nothing Then
Zéro_Max
End If
End Sub
Dans un module standard
Code:
Sub Zéro_Max()
Dim a As Range, nom$, formule$
Set a = ActiveCell
Select Case a.Column
Case 2 To 8
NOM = Choose(a.Column - 1, "Cycle_Max", "Cycle_Lionel", "Cycle_Marie_Line", "Cycle_Alain", "Cycle_Kader", "Cycle_Raymond", "Cycle_Tommy")
End Select
formule = "=IF(RC1="""","""",INDEX(" & NOM & ",MOD(RC1-Départ,Durée)+1))"
Cells(6, a.Column).Resize(31).FormulaR1C1 = formule
End Sub

Reste à savoir si avec ces modifs, tu obtiens les résultats que tu souhaites ?

EDITION: Salut JCGL, comme dirait l'autre : J'achète !!!
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B4:H4")) Is Nothing Then
Range("B6:H36") = "=IF(RC1="""","""",IFERROR(INDEX(INDIRECT(""Cycle_""&R4C ),MOD(RC1-Départ,Durée)+1),""""))"
End If
End Sub
ou simplement
Code:
Private Sub Worksheet_SelectionChange(ByVal t As Range)
If t.Address = "$B$4" Then
Range("B6:H36") = "=IF(RC1="""","""",IFERROR(INDEX(INDIRECT(""Cycle_""&R4C ),MOD(RC1-Départ,Durée)+1),""""))"
End If
End Sub
 
Dernière édition:
Re : lancer une macro dans une cellule à la place du bouton

Re

Autre façon :

1 - Ecrire MARIE_LINE au lieu de Marie-Line en D4 (comme indiqué par JCGL)

2 -Pour remplir toutes les cellules en cliquant uniquement sur B4 (Code dans ThisWorkbook)
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Address = "$B$4" Then
            Range("B6:H36").FormulaR1C1 = _
        "=IF(RC1="""","""",INDEX(INDIRECT(""Cycle_""&R4C),MOD(RC1-Départ,Durée)+1))"
    End If
End Sub

Chris
 
Re : lancer une macro dans une cellule à la place du bouton

Re

[humour]
Une minute trop tard, Chris401 😉
(voir l'édition de 13h13 de mon précédent message )
[/humour]

Au moins maintenant, on a la version single sheet et la version multiple sheet 😉
 
Dernière édition:
Re : lancer une macro dans une cellule à la place du bouton

Merci encore pour votre implication, j'ai repris vos codes et cela marche, je vais encore user de vos connaissances,je sais que ce n'est pas le même fil de discutions, mais je souhaiterai maintenant que les cellules B3:H4 restent bloquées pour ne pas effacer malencontreusement le planning une fois rempli.
J'ai essayé la protection contre l'écriture mais cela donne quand même accès aux cellules .
PS:
après plusieurs tentatives j'ai réussi à obtenir je que voulais mes cellules B3:H4 sont bloquées et tous le reste de ma feuilles est opérationnel, et encore milles fois merci pour votre aide.
Quand je vois vos réponses, c'est à celui qui donnera la meilleur solution, ne changer rien vous êtes formidable.
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
396
Retour