question sur macro evenementielle

  • Initiateur de la discussion Initiateur de la discussion gestel
  • Date de début Date de début

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 !

gestel

XLDnaute Nouveau
Bonjour à Tous,

Est-il possible d'attribuer une macro evenementielle à plusieurs cellules dispersées dans la feuille sur lesquelles j'ai défini un nom?

Je pose cette question car j'ai récupéré sur le forum la macro ci-dessous et mon problème est, si je selectionne d'autre cellules que celles désignées la macro se déclenche quand même.

Merci par avance.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim r As Byte

If Target = "" Then Exit Sub
'si une cellule ci-dessous mentionnée est modifiée
If Target.Address = "$D$10" Or Target.Address = "$D$11" Or Target.Address = "$D$12" _
Or Target.Address = "$D$16" Or Target.Address = "$D$20" Or Target.Address = "$D$21" _
Then
'si une valeur est égale à la cellule de gauche
If Target = Target.Offset(0, -1) Then Exit Sub
Else: GoTo message 'alors message

End If


message:
r = MsgBox("Le précédent relevé indiquait " & Target.Offset(0, -1) & Chr(10) _
& " Confirmez-vous votre saisie?", vbQuestion + vbYesNo, "SAISIE de la VALEUR ...")
If r = 6 Then Exit Sub
If r = 7 Then Target.Offset(0, 0).Select


Target.ClearContents

End Sub
 
Re : question sur macro evenementielle

bonjour a tous

A tester:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Byte
If Target = "" Then Exit Sub
'si une cellule ci-dessous mentionnée est modifiée
 If Target.Address = "$D$10" Or Target.Address = "$D$11" Or Target.Address = "$D$12" _
   Or Target.Address = "$D$16" Or Target.Address = "$D$20" Or Target.Address = "$D$21" _
     Then
'si une valeur est égale à la cellule de gauche
  If Target = Target.Offset(0, -1) Then
    Exit Sub
  Else
    GoTo message 'alors message
  End If
Exit Sub
message:
r = MsgBox("Le précédent relevé indiquait " & Target.Offset(0, -1) & Chr(10) _
& " Confirmez-vous votre saisie?", vbQuestion + vbYesNo, "SAISIE de la VALEUR ...")
  If r = 6 Then Exit Sub
  If r = 7 Then Target.Offset(0, 0).Select
Target.ClearContents
End If
End Sub
 
Re : question sur macro evenementielle

Bonjour Pierrejean,

Testé et approuvé!

La piste du End If et Exit Sub était bonne mais mal positionnée.

Un grand merci à Toi
Merci également à ceux qui ont essayé.

Bon week-end
Daniel dit gestel🙂

Problème résolu
 
Re : question sur macro evenementielle

Re

A mon avis la leçon a retenir est :

Eviter d'economiser les lignes de code
Et pratiquer l'indentation sans modération

Sauf bien sur pour ceux dont le niveau le permet ,ce qui n'est pas encore mon cas !!!
 
- 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

Réponses
4
Affichages
243
  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
163
Réponses
4
Affichages
177
  • Question Question
Microsoft 365 modifier un code
Réponses
1
Affichages
464
Retour