Exclure une zone d'une macro

Résolu/Fermé
Elyss - Modifié par pijaku le 13/01/2015 à 13:44
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 13 janv. 2015 à 14:48
Bonjour,

Je me permet de demander votre aide dans l'écriture d'une macro Excel qui me pose problème.
J'ai dans un tableau Excel une macro qui consigne automatiquement dans les colonnes T et U la date et l'heure de modification d'une ligne. Lorsqu'un utilisateur modifie la valeur d'une cellule sur une ligne, la date et l'heure de ce changement sur la ligne sont consignés, ainsi que la date et l'heure de l'éventuel changement précédent.
J'utilise pour celà le code suivant:
Private Sub Worksheet_Change(ByVal sel As Range)



Application.EnableEvents = False

Cells(sel.Row, "U").Value = Cells(sel.Row, "T").Value

Application.EnableEvents = True


Application.EnableEvents = False

Cells(sel.Row, "T").Value = Date + Time

Application.EnableEvents = True


End Sub

Mais le problème c'est que je veux pouvoir modifier les titres de mes colonnes sans déclencher la macro dans la ligne des titres. Ni dans les lignes qui se trouvent au dessus du tableau et qui servent à consigner des informations diverses.
Du coup, je cherche le moyen de faire en sorte que la macro ne se déclenche pas pour les lignes 1 à 9 de mon tableau, mais se déclenche systématiquement pour les autres.

Si quelqu'un pouvait m'indiquer comment créer cette condition dans ma macro, je lui serais très reconnaissant.

Merci par avance!
A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
13 janv. 2015 à 13:48
Bonjour,

Regarde ceci :
If Intersect(Target, Range("D5:M26")) Is Nothing Then
   MsgBox "ici tu es dans la zone non concernée par la macro"
Else
   MsgBox "ici tu es dans la zone concernée par la macro"
End If

0
J'avais essayé quelque chose comme ça en effet, mais j'obtiens l'erreur 424 "Objet requis". Voici le code modifié qui me renvoi l'erreur :

Private Sub Worksheet_Change(ByVal sel As Range)

If Intersect(Target, Range("A1:Z9")) Is Nothing Then

Else

Application.EnableEvents = False

Cells(sel.Row, "U").Value = Cells(sel.Row, "T").Value

Application.EnableEvents = True


Application.EnableEvents = False

Cells(sel.Row, "T").Value = Date + Time

Application.EnableEvents = True

End If
End Sub


Et donc erreur...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752 > Elyss
13 janv. 2015 à 14:07
1-Lorsque vous placez du code sur notre forum, merci d'utiliser les balises code à votre disposition.
Le mode d'emploi (au cas ou) est ICI.

2- dans la ligne de déclaration vous indiquez sel As Range et ensuite essayez d'utiliser Target... Pas possible.
Private Sub Worksheet_Change(ByVal sel As Range)

If Intersect(sel, Range("A1:Z9")) Is Nothing Then

Else

Application.EnableEvents = False

Cells(sel.Row, "U").Value = Cells(sel.Row, "T").Value

Application.EnableEvents = True


Application.EnableEvents = False

Cells(sel.Row, "T").Value = Date + Time

Application.EnableEvents = True

End If
End Sub
0
Elyss > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
13 janv. 2015 à 14:17
Oh, pardon pour les balises code, je n'avais aucune idée de leur existence.
Mais merci beaucoup pour la solution, ça fonctionne effectivement ! Du moins, à l'envers en fait, mais il m'a suffit d'inverser de la façon suivante:

Private Sub Worksheet_Change(ByVal sel As Range)

If Intersect(sel, Range("A1:Z9")) Is Nothing Then
Application.EnableEvents = False

Cells(sel.Row, "U").Value = Cells(sel.Row, "T").Value

Application.EnableEvents = True


Application.EnableEvents = False

Cells(sel.Row, "T").Value = Date + Time

Application.EnableEvents = True

Else



End If
End Sub


C'est donc parfait! encore merci !
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752 > Elyss
13 janv. 2015 à 14:48
Oh, pardon pour les balises code, je n'avais aucune idée de leur existence.
Aucun souci. C'est tout de même mieux avec...
Du moins, à l'envers en fait, mais il m'a suffit d'inverser
Pourtant ma première réponse était à l'endroit...vue de mon côté ;-)

Bonne fin de journée
0