'Worksheet_Change'

Le
JeanYvesGascon
Bonjour à toutes et tous

Je travaille sous excel 2003 sur un tableau partagé de gestion
d'abscence.

Initialement, j'avais ecris ce code pour avoir une trace de changement
de valeur sur une ligne qui donnait ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en X le user name et en Y le moment
If Not Intersect([A2:P65000], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
Cells(Target.Row, 24) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 25) = Now
Application.EnableEvents = True
End If
End Sub

Je voudrais afinner ce code en le divisant en deux parties distinctes,
à savoir de [A:L] une zone dédiée à l'abscence
et une zone dédiée au remplacement [M:P]

J'ai donc écris ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en X le user name et en Y le moment
If Not Intersect([A2:L65000], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
Cells(Target.Row, 24) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 25) = Now
Application.EnableEvents = True
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en AA le user name et en AB le moment
If Not Intersect([M2:p65000], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
Cells(Target.Row, 27) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 28) = Now
Application.EnableEvents = True
End If
End Sub

La première procédure fonctionne, mais pas la seconde !!!

Que faire ?

Qui pourrait m'apporter ses lumières ?

merci d'avance et joyeuses fêtes à toutes et tous

Jean-Yves
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Corona
Le #20823781
Bonjour Jean-Yves,
Est-ce que ce code te convient ?
Il y a évidemment moyen de faire plus court
Philippe Tulliez

Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en X le user name et en Y le moment
If Not Intersect([A2:P65000], Target) Is Nothing And Target.Count = 1 Then
Application.EnableEvents = False
' de A à L
Select Case Target.Column
Case 1 To 12
Cells(Target.Row, 24) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 25) = Now
Case 13 To 16
' de M à P
Cells(Target.Row, 27) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 28) = Now
End Select
Application.EnableEvents = True
End If
End Sub

JeanYvesGascon a écrit :
Bonjour à toutes et tous

Je travaille sous excel 2003 sur un tableau partagé de gestion
d'abscence.

Initialement, j'avais ecris ce code pour avoir une trace de changement
de valeur sur une ligne qui donnait ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en X le user name et en Y le moment
If Not Intersect([A2:P65000], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
Cells(Target.Row, 24) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 25) = Now
Application.EnableEvents = True
End If
End Sub

Je voudrais afinner ce code en le divisant en deux parties distinctes,
à savoir de [A:L] une zone dédiée à l'abscence
et une zone dédiée au remplacement [M:P]

J'ai donc écris ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en X le user name et en Y le moment
If Not Intersect([A2:L65000], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
Cells(Target.Row, 24) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 25) = Now
Application.EnableEvents = True
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en AA le user name et en AB le moment
If Not Intersect([M2:p65000], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
Cells(Target.Row, 27) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 28) = Now
Application.EnableEvents = True
End If
End Sub

La première procédure fonctionne, mais pas la seconde !!!

Que faire ?

Qui pourrait m'apporter ses lumières ?

merci d'avance et joyeuses fêtes à toutes et tous

Jean-Yves


Corona
Le #20823871
Version plus courte
Philippe

Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en X le user name et en Y le moment
If Not Intersect([A2:P65000], Target) Is Nothing And Target.Count = 1 Then
Application.EnableEvents = False
' de A à L (1-12) ' de M à P (13-16)
With Target
Cells(.Row, 24 + 3 * Abs(.Column > 12)) = Environ("username") ' ou
GetUserName()
Cells(.Row, 25 + 3 * Abs(.Column > 12)) = Now
End With
Application.EnableEvents = True
End If
End Sub

Corona a écrit :
Bonjour Jean-Yves,
Est-ce que ce code te convient ?
Il y a évidemment moyen de faire plus court
Philippe Tulliez

Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en X le user name et en Y le moment
If Not Intersect([A2:P65000], Target) Is Nothing And Target.Count = 1 Then
Application.EnableEvents = False
' de A à L
Select Case Target.Column
Case 1 To 12
Cells(Target.Row, 24) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 25) = Now
Case 13 To 16
' de M à P
Cells(Target.Row, 27) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 28) = Now
End Select
Application.EnableEvents = True
End If
End Sub

JeanYvesGascon a écrit :
Bonjour à toutes et tous

Je travaille sous excel 2003 sur un tableau partagé de gestion
d'abscence.

Initialement, j'avais ecris ce code pour avoir une trace de changement
de valeur sur une ligne qui donnait ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en X le user name et en Y le moment
If Not Intersect([A2:P65000], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
Cells(Target.Row, 24) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 25) = Now
Application.EnableEvents = True
End If
End Sub

Je voudrais afinner ce code en le divisant en deux parties distinctes,
à savoir de [A:L] une zone dédiée à l'abscence
et une zone dédiée au remplacement [M:P]

J'ai donc écris ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en X le user name et en Y le moment
If Not Intersect([A2:L65000], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
Cells(Target.Row, 24) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 25) = Now
Application.EnableEvents = True
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en AA le user name et en AB le moment
If Not Intersect([M2:p65000], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
Cells(Target.Row, 27) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 28) = Now
Application.EnableEvents = True
End If
End Sub

La première procédure fonctionne, mais pas la seconde !!!

Que faire ?

Qui pourrait m'apporter ses lumières ?

merci d'avance et joyeuses fêtes à toutes et tous

Jean-Yves




JeanYvesGascon
Le #20823941
On 23 déc, 11:22, Corona
Bonjour Jean-Yves,
   Est-ce que ce code te convient ?
   Il y a évidemment moyen de faire plus court
Philippe Tulliez

Private Sub Worksheet_Change(ByVal Target As Range)
'   indiquer en X le user name et en Y le moment
  If Not Intersect([A2:P65000], Target) Is Nothing And Target.Count = 1 Then
    Application.EnableEvents = False
    ' de A à L
    Select Case Target.Column
      Case 1 To 12
         Cells(Target.Row, 24) = Environ("username") ' ou Get UserName()
         Cells(Target.Row, 25) = Now
      Case 13 To 16
    ' de M à P
         Cells(Target.Row, 27) = Environ("username") ' ou Get UserName()
         Cells(Target.Row, 28) = Now
    End Select
    Application.EnableEvents = True
  End If
End Sub

JeanYvesGascon a écrit :



> Bonjour à toutes et tous

> Je travaille sous excel 2003 sur un tableau partagé de gestion
> d'abscence.

> Initialement, j'avais ecris ce code pour avoir une trace de changement
> de valeur sur une ligne qui donnait ceci :

> Private Sub Worksheet_Change(ByVal Target As Range)
> '   indiquer en X le user name et en Y le moment
>  If Not Intersect([A2:P65000], Target) Is Nothing And Target.Count = 1
> Then
>    Application.EnableEvents = False
>    Cells(Target.Row, 24) = Environ("username") ' ou GetUserName()
>    Cells(Target.Row, 25) = Now
>    Application.EnableEvents = True
>  End If
> End Sub

> Je voudrais afinner ce code en le divisant en deux parties distinctes,
> à savoir de [A:L] une zone dédiée à l'abscence
> et une zone dédiée au remplacement [M:P]

> J'ai donc écris ceci :

> Private Sub Worksheet_Change(ByVal Target As Range)
> '   indiquer en X le user name et en Y le moment
>  If Not Intersect([A2:L65000], Target) Is Nothing And Target.Count = 1
> Then
>    Application.EnableEvents = False
>    Cells(Target.Row, 24) = Environ("username") ' ou GetUserName()
>    Cells(Target.Row, 25) = Now
>    Application.EnableEvents = True
>  End If
> End Sub

> Private Sub Worksheet_Change(ByVal Target As Range)
> '   indiquer en AA le user name et en AB le moment
>  If Not Intersect([M2:p65000], Target) Is Nothing And Target.Count = 1
> Then
>    Application.EnableEvents = False
>    Cells(Target.Row, 27) = Environ("username") ' ou GetUserName()
>    Cells(Target.Row, 28) = Now
>    Application.EnableEvents = True
>  End If
> End Sub

> La première procédure fonctionne, mais pas la seconde !!!

> Que faire ?

> Qui pourrait m'apporter ses lumières ?

> merci d'avance et joyeuses fêtes à toutes et tous

> Jean-Yves- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Merci Philippe
Cela fonctionne admirablement bien.
Bien sur, si tu connais un moyen plus court ou plus rapide, je suis
preneur.

Joyeuses Fêtes

Jean-Yves
Corona
Le #20824021
J'ai déposé la version plus courte, dans le deuxième fil.
C'est à dire les premières lignes de ce fil
Philippe
JeanYvesGascon a écrit :
On 23 déc, 11:22, Corona
Bonjour Jean-Yves,
Est-ce que ce code te convient ?
Il y a évidemment moyen de faire plus court
Philippe Tulliez

Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en X le user name et en Y le moment
If Not Intersect([A2:P65000], Target) Is Nothing And Target.Count = 1 Then
Application.EnableEvents = False
' de A à L
Select Case Target.Column
Case 1 To 12
Cells(Target.Row, 24) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 25) = Now
Case 13 To 16
' de M à P
Cells(Target.Row, 27) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 28) = Now
End Select
Application.EnableEvents = True
End If
End Sub

JeanYvesGascon a écrit :



Bonjour à toutes et tous
Je travaille sous excel 2003 sur un tableau partagé de gestion
d'abscence.
Initialement, j'avais ecris ce code pour avoir une trace de changement
de valeur sur une ligne qui donnait ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en X le user name et en Y le moment
If Not Intersect([A2:P65000], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
Cells(Target.Row, 24) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 25) = Now
Application.EnableEvents = True
End If
End Sub
Je voudrais afinner ce code en le divisant en deux parties distinctes,
à savoir de [A:L] une zone dédiée à l'abscence
et une zone dédiée au remplacement [M:P]
J'ai donc écris ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en X le user name et en Y le moment
If Not Intersect([A2:L65000], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
Cells(Target.Row, 24) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 25) = Now
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
' indiquer en AA le user name et en AB le moment
If Not Intersect([M2:p65000], Target) Is Nothing And Target.Count = 1
Then
Application.EnableEvents = False
Cells(Target.Row, 27) = Environ("username") ' ou GetUserName()
Cells(Target.Row, 28) = Now
Application.EnableEvents = True
End If
End Sub
La première procédure fonctionne, mais pas la seconde !!!
Que faire ?
Qui pourrait m'apporter ses lumières ?
merci d'avance et joyeuses fêtes à toutes et tous
Jean-Yves- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Merci Philippe
Cela fonctionne admirablement bien.
Bien sur, si tu connais un moyen plus court ou plus rapide, je suis
preneur.

Joyeuses Fêtes

Jean-Yves


Publicité
Poster une réponse
Anonyme