Worksheet_change

lolo62000

XLDnaute Junior
Bonjour,

j'ai un petit soucis. Dans un tableau, lorsqu'on modifie une cellule, un checkmark est inséré dans la cellule à droite de la sélection.
Seulement la macro s'exécute uniquement quand je clique sur une autre cellule. J'aurais besoin qu'elle se déclenche dès la première lettre rentrée, car si je ne sors pas de la cellule, et que je lance une autre macro qui envoie mon tableau par email, l'événement "worksheet_change" ne se déclenche pas.
Est-ce possible de lancer la macro dès qu'on change une lettre sans sortir de la cellule?
Voici mon code actuel:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
ActiveSheet.Unprotect Password:="1248appro"
If Not Intersect(Target, Range("C9:C15")) Is Nothing Then
Target.Offset(0, 1) = "ü"
End If
If Not Intersect(Target, Range("C16")) Is Nothing Then
Range("F16") = "ü"
End If
If Not Intersect(Target, Range("D16")) Is Nothing Then
Range("F16") = "ü"
End If
If Not Intersect(Target, Range("E16")) Is Nothing Then
Range("F16") = "ü"
End If
If Not Intersect(Target, Range("C17:C17")) Is Nothing Then
Range("F18") = "ü"
End If
ActiveSheet.Protect Password:="1248appro"
End Sub

Merci,
Laurent.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Worksheet_change

Bonsoir Laurent, bonsoir le forum,

Non !... l'événement Change
ne se déclenche qu'après validation de l'édition. Donc après l'appui sur une des touches [Entrée], [TAB], [CTRL]+[Entré] ou une des 4 flèches de déplacement. Peut-être tu pourrais intégrer cette action dans le code de l'e-mail avant l'envoi de celui-ci ?
Avec un code du style (condition à adapter à ton cas) :

Code:
Sub Macro1()
Dim CEL As Range

With Sheets("Feuil")
    On Error Resume Next
    .Unprotect Password:="1248appro"
    For Each CEL In .Range("C9:C15")
        If CEL.Value <> "" Then CEL.Offset(0, 1) = "ü"
    Next CEL
    End If
    For Each CEL In Application.Union(.Range("C16:E16"), .Range("C17"))
        If CEL.Value <> "" Then .Range("F18").Value = "ü": Exit For
    Next CEL
    ActiveSheet.Protect Password:="1248appro"
End With
'code de l'envoie d'e-mail...
End Sub
 

lolo62000

XLDnaute Junior
Re : Worksheet_change

Bonjour Robert,

désolé, je n'arrive pas à joindre mon fichier en pièce jointe, car je n'arrive pas à le réduire suffisamment en poids.
Je joins par contre une capture d'écran.
J'ai donc une feuille dans laquelle apparaissent des informations, qui est nourrie après l'exécution d'une macro.
Donc certains champs sont remplis, d'autres vides.
Mon but était que si quelqu'un change un texte existant, ou ajoute un texte dans une cellule vide, alors un checkmark apparaît dans la colonne cellule modifiée.
En fait, si les gens cliquent sur une autre cellule, ou tab etc.., pas de problèmes.
Par contre, si quelqu'un rentre du texte dans une cellule, et ensuite clique directement sur le bouton Envoyer, le checkmark de la dernière modification n'apparaît pas quand je reçois le courriel.
Et j'ai essayé dans la macro Envoyer de dire genre Range("C8").select pour modifier la sélection, mais à l'intérieur d'une macro, l'événement change est inactif. :(

Merci pour ton aide.
 

Pièces jointes

  • Worksheet_change.jpg
    Worksheet_change.jpg
    37.1 KB · Affichages: 10

Robert

XLDnaute Barbatruc
Repose en paix
Re : Worksheet_change

Bonsoir Laurent, bonsoir le forum,

Dans la première ligne du bouton Envoyer rajoute le code :

Code:
ActiveCell.Value = ActiveCell.Value
Comme cela, même si la cellule active n'a pas été validée, cette ligne de code le fera et déclenchera par la même l'événement Change...
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 535
dernier inscrit
moimeme1