Je travaille sous excel 2003 sur un tableau partag=E9 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 =3D 1
Then
Application.EnableEvents =3D False
Cells(Target.Row, 24) =3D Environ("username") ' ou GetUserName()
Cells(Target.Row, 25) =3D Now
Application.EnableEvents =3D True
End If
End Sub
Je voudrais afinner ce code en le divisant en deux parties distinctes,
=E0 savoir de [A:L] une zone d=E9di=E9e =E0 l'abscence
et une zone d=E9di=E9e au remplacement [M:P]
J'ai donc =E9cris 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 =3D 1
Then
Application.EnableEvents =3D False
Cells(Target.Row, 24) =3D Environ("username") ' ou GetUserName()
Cells(Target.Row, 25) =3D Now
Application.EnableEvents =3D 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 =3D 1
Then
Application.EnableEvents =3D False
Cells(Target.Row, 27) =3D Environ("username") ' ou GetUserName()
Cells(Target.Row, 28) =3D Now
Application.EnableEvents =3D True
End If
End Sub
La premi=E8re proc=E9dure fonctionne, mais pas la seconde !!!
Que faire ?
Qui pourrait m'apporter ses lumi=E8res ?
merci d'avance et joyeuses f=EAtes =E0 toutes et tous
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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 !!!
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
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
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 !!!
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
On 23 déc, 11:22, Corona wrote:
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
On 23 déc, 11:22, Corona <PhilippeTull...@Brux.be> wrote:
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.
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
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 wrote:
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
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 <PhilippeTull...@Brux.be> wrote:
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.
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 wrote:
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.