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 -
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 :
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é :
Mais rien ne fonctionne
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
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
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
Ha bah oui.
C'est une bonne idée ça.
Par contre ajouter la ligne :
N'a pas permis de déclencher le changement de cellule.
Alors j'ai tout bonnement mis ça :
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 ?
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 ?
Bonjour,
essaie ceci:
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
Bonjour,
ou tu ressors ton code dans une procésure séparée :
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 :
Mais tout ça me générait des erreurs.
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.Rangeou
Range(ActiveCell)ou encore
Range(ActiveCell.address)
Mais tout ça me générait des erreurs.
Peut-être comme ceci:
Private Sub Worksheet_SelectionChange(ByVal target As Range) If ActiveCell = "20" Then MsgBox ActiveCell.Address End If End Sub
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 :
Et dans un module, l'appel :
Cool non ???
https://forums.commentcamarche.net/forum/affich-37622021-vba-appel-d-une-macro-dans-une-autre-macro
🎼 Cordialement,
Franck 🎶
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 🎶