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

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  2. 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
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Peut-être comme ceci:

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

    0
  8. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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