Faire un appel à Worksheet_SelectionChange cellule active

Raph04 Messages postés 182 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 728
 
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 182 Statut Membre 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 8437 Statut Contributeur 729
 
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 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 279
 
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 182 Statut Membre 24
 
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 8437 Statut Contributeur 729
 
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 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 765
 
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