Worksheet_change sur plusieurs cellules

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nounbxl76

XLDnaute Occasionnel
Bonsoir,

Je vous sollicite car je ne comprends pas pourquoi ma macro ne se déclenche pas via une procédure évènementielle "worksheet_change". En gros, je cherche à lancer ma macro si A2, B4 ou B5 est changée.. voici le code que j'utilise :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Address
        Case Is = "$A$2"
            Call ma macro
        Case Is = "$B$4"
            Call ma macro
        Case Is = "$B$5"
            Call ma macro
        Case Else
    End Select
End Sub

Quelqu'un pourrait-il venir en aide à mon cerveau SVP? Je pense que c'est dû à mon parcours de débutant...

Merci par avance.

Cordialement,
 
Re : Worksheet_change sur plusieurs cellules

Vous avez sur la même feuille deux macros worksheet_change ? Cela ne peut pas fonctionner, il n'y a qu'un seul événement worksheet_change par feuille mais rien n'empêche d'y mettre plusieurs macros déclenchées par le changement sur des cellules ou plages différentes.

Comment faut il faire Misange ?

Voici ma formule :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$F$5" Then
nomfichier = Range("F5").Value & ".xlsx"
Names.Add Name:="matrice", RefersTo:="=[" & nomfichier & "]TOTAL!" & Range("$B$3:$C$30").Address, Visible:=True
ActiveSheet.Calculate


J'aimerai créer une nouvelle macro mais qui ne se réfère pas au même onglet de ma feuille, et pas sur la même plage de cellule, j'ai essayé en refaisant une worksheet_change mais ça n'est pas possible, j'ai essayé de rajouter une matrice en insérant une nouvelle ligne "names.Add Name", et j'ai essayé en rajoutant une fonction If.
Rien ne marche, ma matrice2 n'est pas crée...
 
Re : Worksheet_change sur plusieurs cellules

Bonjour
Onglet=feuille...
Il y a une macro worksheet_change par feuille (ou par onglet donc).
Ces macros ne s'écrivent pas dans un module ordinaire mais dans le module de la feuille concernée.
Regardez ici pour voir de quoi il s'agit si ce n'est pas très clair pour vous :
Ce lien n'existe plus

Prenons un exemple :
si dans la feuille1 vous voulez afficher "truc" si les cellules B1:B4 sont modifiées et "machin" si les cellules F1:F2 le sont :

dans le module de la feuille 1,
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B1:B4")) Is Nothing Then MsgBox ("truc")
    If Not Intersect(Target, Range("F1:F2")) Is Nothing Then MsgBox ("machin")
End Sub

Pour plus d'explications voir ici :
Ce lien n'existe plus

Dans cet exemple on affiche seulement un msgbox. Au lieu de msgbox("truc") vous pouvez mettre directement vos instructions dans la macro
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B1:B4")) Is Nothing Then 
       'ici les instructions 1
    elseIf Not Intersect(Target, Range("F1:F2")) Is Nothing Then
        'ici les instructions 2
    end if
End Sub

Vous pouvez aussi appeler une macro contenue dans un module ordinaire. Si ces macros s'appellent truc et machin vous écrirez donc simplement :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B1:B4")) Is Nothing Then truc
    If Not Intersect(Target, Range("F1:F2")) Is Nothing Then machin
End Sub

Vous pouvez écrire le même type de code pour chacune des feuilles du classeur à condition de mettre le code dans le bon module.
 
Re : Worksheet_change sur plusieurs cellules

Re

car la question est directement en rapport avec le fil.
Pas vraiment pour moi
j'ai essayé de rajouter une matrice en insérant une nouvelle ligne "names.Add Name", et j'ai essayé en rajoutant une fonction If.
Rien ne marche, ma matrice2 n'est pas crée...

Je trouve simplement plus courtois de créer son propre fil de discussion pour ses propres questions que de ressortir un fil de 2012.

Et comme laclau est nouveau membre, je profitai de l'occasion pour lui indiquer les us et coutumes d'XLD.

Mais bon il est désormais un peu trop tard 😉 et surement indolore pour nounbxl76 qui a surement oublié son fil depuis longtemps 😉
 
Re : Worksheet_change sur plusieurs cellules

Jean Marie désolée mais en effet ma question est en rapport avec le sujet, et maintenant que misange est disponible pour me répondre je ne préfère pas ouvrir une nouvelle discussion...

Misange, je me suis mal exprimée. En fait dans mon VBA, je créé une matrice qui va rechercher une plage de cellule dans un fichier (sur la feuille 1), en fonction de ce qui est sélectionné dans la cellule F5 (car ce qui est sélectionné correspond à un nom de fichier).Je me sert ensuite de la matrice dans une fonction rechercheV.
Cependant, j'aimerai créer une autre matrice, qui irait chercher, toujours dans le même fichier, une plage de cellule mais sur la feuille 2...est-ce que c'est possible ?
 
Re : Worksheet_change sur plusieurs cellules

Re

laclau
Je persiste à dire qu'il serait plus simple et plus clair de créer ton propre fil.
Mais bon tu sembles persuadé du contraire.

PS:je ne vois pas où nounbxl76 parle de matrice et de recherchev dans son fil ...
Misange serait tout aussi disponible (ainsi que tout membre du forum) à te répondre dans ta propre discussion 😉
 
Dernière édition:
Re : Worksheet_change sur plusieurs cellules

Bonjour à vous deux

Laclau, j'ai répondu exclusivement à cette partie de ta question :
"J'aimerai créer une nouvelle macro mais qui ne se réfère pas au même onglet de ma feuille, et pas sur la même plage de cellule, j'ai essayé en refaisant une worksheet_change mais ça n'est pas possible,"

Tu ne me dis pas d'ailleurs si ma réponse t'éclaire ou pas.
Pour la seconde partie, je rejoins l'avis de Jean Marie, pose ta question dans un nouveau fil. Cela te permettra de voir le message qui s'affiche quand on ouvre un fil et qui t'incite à illustrer ta question d'un PETIT classeur exemple permettant au répondeur de tester sa réponse sans à avoir à créer le classeur adhoc.
Par ailleurs, tout l'intérêt d'un forum c'est que tout le monde puisse participer. Il n'est pas d'usage de demander (sur le fil ou par message perso) l'intervention d'un contributeur en particulier. Celui peut ne pas être disponible, ne pas se sentir compétent ou n'avoir tout simplement pas envie de répondre pour des raisons qui lui appartiennent en propre. LE fait de demander l'aide d'une personne en particulier fait que les autres, qui sont peut être beaucoup plus compétents pour répondre, se sentent d'emblée exclus de la discussion ce qui n'est pas agréable sur un forum.

C'est toujours un peu rugueux de se faire rappeler les règles quand on débarque sur un forum mais c'est pour qu'il continue à rester convivial et que les réponses restent faciles à trouver dans google.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
15
Affichages
1 K
Retour