Faire un appel à Worksheet_SelectionChange cellule active

Fermé
Raph04 Messages postés 158 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 17 mai 2022 - 27 janv. 2015 à 09:38
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 27 janv. 2015 à 14:09
Bonjour,

J'ai fait une fonction qui s'active lors du changement de selection :

Public Sub Worksheet_SelectionChange(ByVal Target As Range)

'mon code

End Sub


Je souhaite faire un appel à cette fonction dans un Module séparé (on notera que j'ai mis mon sub en Public pour ça) en utilisé comme argument en entrée la cellule active.
J'ai essayé plusieurs commande pour appeler et plusieurs méthode pour donner l'argument, mais je n'arrive pas a faire cette appel.
Voici ce que j'ai essayé :

Call Feuil1.Worksheet_SelectionChange(Range(ActiveCell))
Call Feuil1.Worksheet_SelectionChange(Range(ActiveCell.Address))
Call Feuil1.Worksheet_SelectionChange(ActiveCell.Range)

Run "Feuil1.Worksheet_SelectionChange", Range(ActiveCell.Address)
Run "Feuil1.Worksheet_SelectionChange", Range(ActiveCell.Address)
Run "Feuil1.Worksheet_SelectionChange", ActiveCell.Range


Mais rien ne fonctionne

7 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
27 janv. 2015 à 09:55
Bonjour,

on notera que j'ai mis mon sub en Public pour ça
Aucune utilité car ta macro est une macro événementielle qui ne peut être exécutée que sur événement.
Pour l'activer, il te suffit de modifier la cellule concernée ou de le simuler, par exemple avec
ActiveCell.Value = ActiveCell.Value
1
Raph04 Messages postés 158 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 17 mai 2022 24
Modifié par Raph04 le 27/01/2015 à 10:24
Ha bah oui.
C'est une bonne idée ça.
Par contre ajouter la ligne :
ActiveCell.Value = ActiveCell.Value


N'a pas permis de déclencher le changement de cellule.
Alors j'ai tout bonnement mis ça :
Range("A1").Select


Et ça a fait l'affaire.

Merci !!

Mais juste pour info, ça pourra me servir plus tard car j'ai pas réussi à trouver la réponse sur internet :
Est-il possible de faire référence à la cellule active en pointant sur un objet de type Range ?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
27 janv. 2015 à 11:17
Bonjour,

essaie ceci:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
MsgBox "Vous avez cliquez sur la cellule A1"
End If
End Sub

0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 27/01/2015 à 11:37
Bonjour,

ou tu ressors ton code dans une procésure séparée :
Private Sub Worksheet_SelectionChange(ByVal target As Range)
    monCode target
End Sub

Sub proc1()
    monCode Range("A1:B3") ' exemple 1
    monCode ActiveCell  ' exemple 2
End Sub

Sub monCode(plage As Range)
    MsgBox plage.Address
End Sub

eric


En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0

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

Posez votre question
Raph04 Messages postés 158 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 17 mai 2022 24
Modifié par Raph04 le 27/01/2015 à 13:35
Nan mais là ça marche avec juste le déplacement en cellule A1.

Maintenant ce que je me demande c'est comment faire référence au range de l'activecell au cas où il me faut le mettre en argument.
Est ce qu'on est plus sur du :
ActiveCell.Range
ou
Range(ActiveCell)
ou encore
Range(ActiveCell.address)

Mais tout ça me générait des erreurs.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
27 janv. 2015 à 14:01
Peut-être comme ceci:

Private Sub Worksheet_SelectionChange(ByVal target As Range)
  If ActiveCell = "20" Then
   MsgBox ActiveCell.Address
  End If
End Sub

0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 27/01/2015 à 14:10
Salut,

Wahou que de beau monde par ici... Salutations à tous!

J'y vais donc de ma petite contribution :
On enlève le "Private" de la procédure événementielle :
Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox Target.Address
End Sub


Et dans un module, l'appel :
Sub MaMacro()
Dim monRange As Range
'monRange = paramètre Target de l'événement
Set monRange = Sheets("Feuil1").Range("B23")
'Worksheets("Feuil1") indique l'objet relatif à l'événement Worksheet_SelectionChange
CallByName Worksheets("Feuil1"), "Worksheet_SelectionChange", VbMethod, monRange
End Sub 


Cool non ???
https://forums.commentcamarche.net/forum/affich-37622021-vba-appel-d-une-macro-dans-une-autre-macro


🎼 Cordialement,
Franck 🎶
0