Attribuer une macro à une cellule?

  • Initiateur de la discussion olive
  • Date de début
O

olive

Guest
Voila, je veux tout simplement attribuer une macro sur une cellule. Or, je ne sais pas si c possible. J'arrive seulement à attribuer mes macros à des objets ou images etc..

Est-il possible de l'attribuer à une cellule et d'activer cette macro tout simplement en cliquant sur cette cellule?

Merci d'avance.
 
D

David

Guest
Salut,

Oui, c'est tout à fait possible.
Pour cela il faut utiliser la procédure événementielle suivante :

Private Sub object_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)

Ta procédure événementielle doit tester la valeur "Target" qui correspond à la zone sélectionnée et lorsque cette zone est égale à celle pour laquelle tu veux réliser ta macro tu lance ton programme

A+

David
 
O

olive

Guest
Euh, sorry, mais comment on fait pour activer une procédure événementielle?

G essayer d'en faire d'autre avec le bouquin que j'ai comme, par exemple, ouvrir une feuille en même temps qu'une autre grace à une procé évé mais ca marche pas.
 
S

Stéphane

Guest
pour utiliser la procédure que j'ai donnée :

sélectionne ta feuille
clique à droite sur l'onglet
tu trouveras dans le menu contextuel l'option "visualiser le code"



voilà
bye
steph

http://xlbysteph.free.fr/aideinformatique/actionvba.htm
 
O

olive

Guest
G un gros prb avec les procédures événementielles.
En voi la une toute conne :

Private Sub Workbook_Open()
Workbooks.Open Filename:="D:\Mes documents\paie.xls"
Windows("Classeur2.xls").Activate
End Sub


Quand j'ouvre le fichier classeur.xls, normalement, le fichier paie.xls devrait s'ouvrir aussi.

Or, ca marche pas. Je suis obliger d'aller ds l'éditeur vba et la si je lance la procé manuellement, ca amrche, mais pas du tout en automatique lors de l'ouverture du fichier. Et ca me fait ca avec toutes mes procédures événementielles?

Merci

PS : si qq'un sait ou je peux trouver les ID des boutons standarts d'excel, je suis preneur.
 
D

David

Guest
Salut,

Est ce que tu as bien mis le code événementiel concernant la séléction de cellule dans l'onglet en question (sous l'éditeur vba) et non pas dans un module?

Pour ton dernier exemple le code doit être placé dans "This Workbook" sous vba et normalement tout fonctionne.

Aucune macro événementielle ne doit être placée dans un module...

A+

David

bizarre bizarre....
Au fait tu utilises quelle version d'Excel?
 
O

olive

Guest
G essayer ton instruction, il ne se passe rien.
G reessayer avec la petite procé écrite plus haut, et maintenant ca marche, g trouver le prob.

Par contre, rien à faire pour celle-ci, si qq'un peux la tester et me dire pq elle marche pas (elle est censée m'opuvrir et me fermer une barre d'outil avec un fichier), ce serait sympa, thx d'avance.

Public barre_d_outils As Object

Private Sub Workbook_Open()

For Each bar In Application.CommandBars
If bar.Name = "Gestion" Then
Exit Sub
End If
Next
Set barre_perso = Application.CommandBars.Add(Name:="Gestion", Position:=msoBarFloating, MenuBar:=False, Temporary:=True)

With barre_perso
.Visible = True
.Left = 440
.Top = 150

.Controls.Add Type:=msoControlButton, ID:=1017
.Controls.Add Type:=msoControlButton, ID:=860
.Controls.Add Type:=msoControlButton, ID:=178
.Controls.Add Type:=msoControlButton, ID:=4
.Controls.Add Type:=msoControlButton, ID:=893

End With

With barre_perso.Controls(1)
.Caption = "Revenir au formulaire"
.Enabled = True
.Visible = True
.OnAction = "Précédent"
End With
With barre_perso.Controls(2)
.Visible = True
End With

barre_perso.Controls(4).Caption = "impression"
barre_perso.Controls(5).Caption = "Activer"

On Error Resume Next
ActiveSheet.Select
End Sub

Sub Workbook_beforeClose(cancel As Boolean)
On Error Resume Next
If Workbooks.Count = 2 Then
Application.CommandBars("Gestion").Delete
End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 932
Messages
2 093 732
Membres
105 802
dernier inscrit
Witchun