impossible d'activer un offset dans un Worksheet_Change
5 réponses
François
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous
soumettre un petit problème ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de la
colonne B) en majuscule et j'effectue un tri des colonnes -> sans problème.
Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la
cellule qui se trouvait initialement à la droite de la target ...
J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas,
pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est très
lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en B28 !)
Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide,
et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cellule As Range, Posit As Long
If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then
Application.ScreenUpdating = False
Target.Value = UCase(Target.Value)
' Target.Offset(, 1).Select
ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _
.Sort key1:=ActiveSheet.Range("B2"), order1:=xlAscending,
Header:=xlNo
On Error Resume Next
For Each Cellule In ActiveSheet.Range("Noms")
If Cellule.Value <> "" Then
Posit = Application.WorksheetFunction.Find(Target.Value,
Cellule.Value)
If Posit > 0 Then
Cellule.Offset(, 1).Activate
Exit Sub
End If
End If
Next
Application.ScreenUpdating = True
End If
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
LSteph
Bonsoir,
Après ton tri ou Avant ton tri la cellule voisine de target est toujours la même. Ainsi si target est ligne33,colonne2 lorsque la worksheet_change est lancée sa voisine demeurera Après le tri ou Avant le tri la cellule voisine de ligne33,colonne2 soit par .offset(0,1) ligne33,colonne3 Que la valeur de la cellule aille (du fait du tri) se promener ailleurs ne changera rien. Le offset fonctionne parfaitement, c'est ce que tu souhaiterais qui est probablement différent de ce que tu demandes.
Est-ce bien ce qu'il fallait te préciser?
En outre, il vaudrait mieux mettre enableeevents à false avant et à true après.
@+
-- lSteph
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous soumettre un petit problèm
e ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de la colonne B) en majuscule et j'effectue un tri des colonnes -> sans problème. Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la cellule qui se trouvait initialement à la droite de la target ... J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas, pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en B28 !) Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide, et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range) Dim Cellule As Range, Posit As Long If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then Application.ScreenUpdating = False Target.Value = UCase(Target.Value) ' Target.Offset(, 1).Select ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo On Error Resume Next For Each Cellule In ActiveSheet.Range("Noms") If Cellule.Value <> "" Then Posit = Application.WorksheetFunction.Find(Target.Value, Cellule.Value) If Posit > 0 Then Cellule.Offset(, 1).Activate Exit Sub End If End If Next Application.ScreenUpdating = True End If
Bonsoir,
Après ton tri ou Avant ton tri la cellule voisine de target est toujours
la même.
Ainsi si target est ligne33,colonne2 lorsque la worksheet_change est
lancée sa voisine demeurera
Après le tri ou Avant le tri la cellule voisine de ligne33,colonne2
soit par .offset(0,1)
ligne33,colonne3
Que la valeur de la cellule aille (du fait du tri) se promener ailleurs
ne changera rien.
Le offset fonctionne parfaitement, c'est ce que tu souhaiterais qui est
probablement différent de ce que tu demandes.
Est-ce bien ce qu'il fallait te préciser?
En outre, il vaudrait mieux mettre enableeevents à false
avant et à true après.
@+
--
lSteph
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous
soumettre un petit problèm
e ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de la
colonne B) en majuscule et j'effectue un tri des colonnes -> sans problème.
Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la
cellule qui se trouvait initialement à la droite de la target ...
J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas,
pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est très
lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en B28 !)
Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide,
et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cellule As Range, Posit As Long
If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then
Application.ScreenUpdating = False
Target.Value = UCase(Target.Value)
' Target.Offset(, 1).Select
ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _
.Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending,
Header:=xlNo
On Error Resume Next
For Each Cellule In ActiveSheet.Range("Noms")
If Cellule.Value <> "" Then
Posit = Application.WorksheetFunction.Find(Target.Value,
Cellule.Value)
If Posit > 0 Then
Cellule.Offset(, 1).Activate
Exit Sub
End If
End If
Next
Application.ScreenUpdating = True
End If
Après ton tri ou Avant ton tri la cellule voisine de target est toujours la même. Ainsi si target est ligne33,colonne2 lorsque la worksheet_change est lancée sa voisine demeurera Après le tri ou Avant le tri la cellule voisine de ligne33,colonne2 soit par .offset(0,1) ligne33,colonne3 Que la valeur de la cellule aille (du fait du tri) se promener ailleurs ne changera rien. Le offset fonctionne parfaitement, c'est ce que tu souhaiterais qui est probablement différent de ce que tu demandes.
Est-ce bien ce qu'il fallait te préciser?
En outre, il vaudrait mieux mettre enableeevents à false avant et à true après.
@+
-- lSteph
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous soumettre un petit problèm
e ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de la colonne B) en majuscule et j'effectue un tri des colonnes -> sans problème. Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la cellule qui se trouvait initialement à la droite de la target ... J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas, pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en B28 !) Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide, et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range) Dim Cellule As Range, Posit As Long If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then Application.ScreenUpdating = False Target.Value = UCase(Target.Value) ' Target.Offset(, 1).Select ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo On Error Resume Next For Each Cellule In ActiveSheet.Range("Noms") If Cellule.Value <> "" Then Posit = Application.WorksheetFunction.Find(Target.Value, Cellule.Value) If Posit > 0 Then Cellule.Offset(, 1).Activate Exit Sub End If End If Next Application.ScreenUpdating = True End If
Youky \(BJ\)
Avant que les rois ne rattrappent ta macro mets: Application.EnableEvents = False 'ceci neutralise les événements exemple Target.Value = UCase(Target.Value) 'la macro repasse par là si changement de target.value 'ensuite en fin de macro remets... Application.EnableEvents = True
Youky(BJ)
"François" a écrit dans le message de news:
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous soumettre un petit problème ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de la colonne B) en majuscule et j'effectue un tri des colonnes -> sans problème. Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la cellule qui se trouvait initialement à la droite de la target ... J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas, pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en B28 !) Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide, et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range) Dim Cellule As Range, Posit As Long If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then Application.ScreenUpdating = False Target.Value = UCase(Target.Value) ' Target.Offset(, 1).Select ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo On Error Resume Next For Each Cellule In ActiveSheet.Range("Noms") If Cellule.Value <> "" Then Posit = Application.WorksheetFunction.Find(Target.Value, Cellule.Value) If Posit > 0 Then Cellule.Offset(, 1).Activate Exit Sub End If End If Next Application.ScreenUpdating = True End If
Avant que les rois ne rattrappent ta macro mets:
Application.EnableEvents = False
'ceci neutralise les événements exemple Target.Value = UCase(Target.Value)
'la macro repasse par là si changement de target.value
'ensuite en fin de macro remets...
Application.EnableEvents = True
Youky(BJ)
"François" <nospam@nospam.fr> a écrit dans le message de news:
Ozk9G2ObJHA.4684@TK2MSFTNGP03.phx.gbl...
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous
soumettre un petit problème ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de
la colonne B) en majuscule et j'effectue un tri des colonnes -> sans
problème.
Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la
cellule qui se trouvait initialement à la droite de la target ...
J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas,
pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est
très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en
B28 !)
Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide,
et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cellule As Range, Posit As Long
If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then
Application.ScreenUpdating = False
Target.Value = UCase(Target.Value)
' Target.Offset(, 1).Select
ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _
.Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending,
Header:=xlNo
On Error Resume Next
For Each Cellule In ActiveSheet.Range("Noms")
If Cellule.Value <> "" Then
Posit = Application.WorksheetFunction.Find(Target.Value,
Cellule.Value)
If Posit > 0 Then
Cellule.Offset(, 1).Activate
Exit Sub
End If
End If
Next
Application.ScreenUpdating = True
End If
Avant que les rois ne rattrappent ta macro mets: Application.EnableEvents = False 'ceci neutralise les événements exemple Target.Value = UCase(Target.Value) 'la macro repasse par là si changement de target.value 'ensuite en fin de macro remets... Application.EnableEvents = True
Youky(BJ)
"François" a écrit dans le message de news:
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous soumettre un petit problème ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de la colonne B) en majuscule et j'effectue un tri des colonnes -> sans problème. Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la cellule qui se trouvait initialement à la droite de la target ... J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas, pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en B28 !) Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide, et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range) Dim Cellule As Range, Posit As Long If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then Application.ScreenUpdating = False Target.Value = UCase(Target.Value) ' Target.Offset(, 1).Select ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo On Error Resume Next For Each Cellule In ActiveSheet.Range("Noms") If Cellule.Value <> "" Then Posit = Application.WorksheetFunction.Find(Target.Value, Cellule.Value) If Posit > 0 Then Cellule.Offset(, 1).Activate Exit Sub End If End If Next Application.ScreenUpdating = True End If
Charabeuh
Bonsoir,
Peut-être en interprétant tes propos:
Private Sub Worksheet_Change(ByVal Target As Range) ' Dim targetValue ' Application.EnableEvents = False ' If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then targetValue = UCase(Target.Value) Target.Value = targetValue ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo Range("B2:B" & Range("B1000").End(xlUp).Row).Find(What:=targetValue).Activate ActiveCell.Offset(0, 1).Activate End If ' Application.EnableEvents = True ' End Sub
Cdlt
"François" a écrit dans le message de news:
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous soumettre un petit problème ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de la colonne B) en majuscule et j'effectue un tri des colonnes -> sans problème. Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la cellule qui se trouvait initialement à la droite de la target ... J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas, pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en B28 !) Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide, et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range) Dim Cellule As Range, Posit As Long If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then Application.ScreenUpdating = False Target.Value = UCase(Target.Value) ' Target.Offset(, 1).Select ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo On Error Resume Next For Each Cellule In ActiveSheet.Range("Noms") If Cellule.Value <> "" Then Posit = Application.WorksheetFunction.Find(Target.Value, Cellule.Value) If Posit > 0 Then Cellule.Offset(, 1).Activate Exit Sub End If End If Next Application.ScreenUpdating = True End If
Bonsoir,
Peut-être en interprétant tes propos:
Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim targetValue
'
Application.EnableEvents = False
'
If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then
targetValue = UCase(Target.Value)
Target.Value = targetValue
ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _
.Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo
Range("B2:B" &
Range("B1000").End(xlUp).Row).Find(What:=targetValue).Activate
ActiveCell.Offset(0, 1).Activate
End If
'
Application.EnableEvents = True
'
End Sub
Cdlt
"François" <nospam@nospam.fr> a écrit dans le message de
news:Ozk9G2ObJHA.4684@TK2MSFTNGP03.phx.gbl...
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous
soumettre un petit problème ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de
la colonne B) en majuscule et j'effectue un tri des colonnes -> sans
problème.
Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la
cellule qui se trouvait initialement à la droite de la target ...
J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas,
pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est
très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en
B28 !)
Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide,
et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cellule As Range, Posit As Long
If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then
Application.ScreenUpdating = False
Target.Value = UCase(Target.Value)
' Target.Offset(, 1).Select
ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _
.Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending,
Header:=xlNo
On Error Resume Next
For Each Cellule In ActiveSheet.Range("Noms")
If Cellule.Value <> "" Then
Posit = Application.WorksheetFunction.Find(Target.Value,
Cellule.Value)
If Posit > 0 Then
Cellule.Offset(, 1).Activate
Exit Sub
End If
End If
Next
Application.ScreenUpdating = True
End If
Private Sub Worksheet_Change(ByVal Target As Range) ' Dim targetValue ' Application.EnableEvents = False ' If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then targetValue = UCase(Target.Value) Target.Value = targetValue ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo Range("B2:B" & Range("B1000").End(xlUp).Row).Find(What:=targetValue).Activate ActiveCell.Offset(0, 1).Activate End If ' Application.EnableEvents = True ' End Sub
Cdlt
"François" a écrit dans le message de news:
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous soumettre un petit problème ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de la colonne B) en majuscule et j'effectue un tri des colonnes -> sans problème. Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la cellule qui se trouvait initialement à la droite de la target ... J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas, pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en B28 !) Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide, et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range) Dim Cellule As Range, Posit As Long If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then Application.ScreenUpdating = False Target.Value = UCase(Target.Value) ' Target.Offset(, 1).Select ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo On Error Resume Next For Each Cellule In ActiveSheet.Range("Noms") If Cellule.Value <> "" Then Posit = Application.WorksheetFunction.Find(Target.Value, Cellule.Value) If Posit > 0 Then Cellule.Offset(, 1).Activate Exit Sub End If End If Next Application.ScreenUpdating = True End If
François
Bonjour Youky, et Bonjour Lsteph,
Effectivement, ce que je recherchais à faire, c'était d'avoir la cellule pré-activée par la Worksheet_Change soit celle de droite après classement (et non d'avant) ... J'avais aussi essayé de mettre : For Each Cellule In ActiveSheet.Range("Noms") If Cellule.Value = valeur Then Cells(Cellule.Row, Cellule.Column + 1).Activate Exit Sub ... mais cela ne fonctionne pas non plus ...
Merci pour votre aide à tous les deux
P.S. j'ai aussi introduit les EnableEvents en début et fin de procédure...
"Youky (BJ)" a écrit dans le message de news:
Avant que les rois ne rattrappent ta macro mets: Application.EnableEvents = False 'ceci neutralise les événements exemple Target.Value = UCase(Target.Value) 'la macro repasse par là si changement de target.value 'ensuite en fin de macro remets... Application.EnableEvents = True
Youky(BJ)
"François" a écrit dans le message de news:
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous soumettre un petit problème ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de la colonne B) en majuscule et j'effectue un tri des colonnes -> sans problème. Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la cellule qui se trouvait initialement à la droite de la target ... J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas, pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en B28 !) Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide, et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range) Dim Cellule As Range, Posit As Long If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then Application.ScreenUpdating = False Target.Value = UCase(Target.Value) ' Target.Offset(, 1).Select ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo On Error Resume Next For Each Cellule In ActiveSheet.Range("Noms") If Cellule.Value <> "" Then Posit = Application.WorksheetFunction.Find(Target.Value, Cellule.Value) If Posit > 0 Then Cellule.Offset(, 1).Activate Exit Sub End If End If Next Application.ScreenUpdating = True End If
Bonjour Youky,
et Bonjour Lsteph,
Effectivement, ce que je recherchais à faire, c'était d'avoir la cellule
pré-activée par la Worksheet_Change soit celle de droite après classement
(et non d'avant) ...
J'avais aussi essayé de mettre :
For Each Cellule In ActiveSheet.Range("Noms")
If Cellule.Value = valeur Then
Cells(Cellule.Row, Cellule.Column + 1).Activate
Exit Sub ...
mais cela ne fonctionne pas non plus ...
Merci pour votre aide à tous les deux
P.S. j'ai aussi introduit les EnableEvents en début et fin de procédure...
"Youky (BJ)" <nospam.bruno.jeune@wanadoo.fr> a écrit dans le message de
news: O8SYuZPbJHA.1676@TK2MSFTNGP03.phx.gbl...
Avant que les rois ne rattrappent ta macro mets:
Application.EnableEvents = False
'ceci neutralise les événements exemple Target.Value = UCase(Target.Value)
'la macro repasse par là si changement de target.value
'ensuite en fin de macro remets...
Application.EnableEvents = True
Youky(BJ)
"François" <nospam@nospam.fr> a écrit dans le message de news:
Ozk9G2ObJHA.4684@TK2MSFTNGP03.phx.gbl...
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous
soumettre un petit problème ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de
la colonne B) en majuscule et j'effectue un tri des colonnes -> sans
problème.
Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la
cellule qui se trouvait initialement à la droite de la target ...
J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas,
pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est
très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en
B28 !)
Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide,
et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cellule As Range, Posit As Long
If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then
Application.ScreenUpdating = False
Target.Value = UCase(Target.Value)
' Target.Offset(, 1).Select
ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _
.Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending,
Header:=xlNo
On Error Resume Next
For Each Cellule In ActiveSheet.Range("Noms")
If Cellule.Value <> "" Then
Posit = Application.WorksheetFunction.Find(Target.Value,
Cellule.Value)
If Posit > 0 Then
Cellule.Offset(, 1).Activate
Exit Sub
End If
End If
Next
Application.ScreenUpdating = True
End If
Effectivement, ce que je recherchais à faire, c'était d'avoir la cellule pré-activée par la Worksheet_Change soit celle de droite après classement (et non d'avant) ... J'avais aussi essayé de mettre : For Each Cellule In ActiveSheet.Range("Noms") If Cellule.Value = valeur Then Cells(Cellule.Row, Cellule.Column + 1).Activate Exit Sub ... mais cela ne fonctionne pas non plus ...
Merci pour votre aide à tous les deux
P.S. j'ai aussi introduit les EnableEvents en début et fin de procédure...
"Youky (BJ)" a écrit dans le message de news:
Avant que les rois ne rattrappent ta macro mets: Application.EnableEvents = False 'ceci neutralise les événements exemple Target.Value = UCase(Target.Value) 'la macro repasse par là si changement de target.value 'ensuite en fin de macro remets... Application.EnableEvents = True
Youky(BJ)
"François" a écrit dans le message de news:
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous soumettre un petit problème ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de la colonne B) en majuscule et j'effectue un tri des colonnes -> sans problème. Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la cellule qui se trouvait initialement à la droite de la target ... J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas, pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en B28 !) Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide, et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range) Dim Cellule As Range, Posit As Long If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then Application.ScreenUpdating = False Target.Value = UCase(Target.Value) ' Target.Offset(, 1).Select ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo On Error Resume Next For Each Cellule In ActiveSheet.Range("Noms") If Cellule.Value <> "" Then Posit = Application.WorksheetFunction.Find(Target.Value, Cellule.Value) If Posit > 0 Then Cellule.Offset(, 1).Activate Exit Sub End If End If Next Application.ScreenUpdating = True End If
François
Merci Charabeuh,
C'est super ! C'est exactement cela que je recherchais à faire ...
Merci encore et Bon WE
François
"Charabeuh" a écrit dans le message de news: %23%
Bonsoir,
Peut-être en interprétant tes propos:
Private Sub Worksheet_Change(ByVal Target As Range) ' Dim targetValue ' Application.EnableEvents = False ' If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then targetValue = UCase(Target.Value) Target.Value = targetValue ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo Range("B2:B" & Range("B1000").End(xlUp).Row).Find(What:=targetValue).Activate ActiveCell.Offset(0, 1).Activate End If ' Application.EnableEvents = True ' End Sub
Cdlt
"François" a écrit dans le message de news:
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous soumettre un petit problème ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de la colonne B) en majuscule et j'effectue un tri des colonnes -> sans problème. Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la cellule qui se trouvait initialement à la droite de la target ... J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas, pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en B28 !) Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide, et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range) Dim Cellule As Range, Posit As Long If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then Application.ScreenUpdating = False Target.Value = UCase(Target.Value) ' Target.Offset(, 1).Select ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo On Error Resume Next For Each Cellule In ActiveSheet.Range("Noms") If Cellule.Value <> "" Then Posit = Application.WorksheetFunction.Find(Target.Value, Cellule.Value) If Posit > 0 Then Cellule.Offset(, 1).Activate Exit Sub End If End If Next Application.ScreenUpdating = True End If
Merci Charabeuh,
C'est super ! C'est exactement cela que je recherchais à faire ...
Merci encore et Bon WE
François
"Charabeuh" <charabeuh@orenge.fr> a écrit dans le message de news:
%23%23tKBSQbJHA.3692@TK2MSFTNGP04.phx.gbl...
Bonsoir,
Peut-être en interprétant tes propos:
Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim targetValue
'
Application.EnableEvents = False
'
If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then
targetValue = UCase(Target.Value)
Target.Value = targetValue
ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _
.Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo
Range("B2:B" &
Range("B1000").End(xlUp).Row).Find(What:=targetValue).Activate
ActiveCell.Offset(0, 1).Activate
End If
'
Application.EnableEvents = True
'
End Sub
Cdlt
"François" <nospam@nospam.fr> a écrit dans le message de
news:Ozk9G2ObJHA.4684@TK2MSFTNGP03.phx.gbl...
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous
soumettre un petit problème ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de
la colonne B) en majuscule et j'effectue un tri des colonnes -> sans
problème.
Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la
cellule qui se trouvait initialement à la droite de la target ...
J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas,
pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est
très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en
B28 !)
Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide,
et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cellule As Range, Posit As Long
If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then
Application.ScreenUpdating = False
Target.Value = UCase(Target.Value)
' Target.Offset(, 1).Select
ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _
.Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending,
Header:=xlNo
On Error Resume Next
For Each Cellule In ActiveSheet.Range("Noms")
If Cellule.Value <> "" Then
Posit = Application.WorksheetFunction.Find(Target.Value,
Cellule.Value)
If Posit > 0 Then
Cellule.Offset(, 1).Activate
Exit Sub
End If
End If
Next
Application.ScreenUpdating = True
End If
C'est super ! C'est exactement cela que je recherchais à faire ...
Merci encore et Bon WE
François
"Charabeuh" a écrit dans le message de news: %23%
Bonsoir,
Peut-être en interprétant tes propos:
Private Sub Worksheet_Change(ByVal Target As Range) ' Dim targetValue ' Application.EnableEvents = False ' If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then targetValue = UCase(Target.Value) Target.Value = targetValue ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo Range("B2:B" & Range("B1000").End(xlUp).Row).Find(What:=targetValue).Activate ActiveCell.Offset(0, 1).Activate End If ' Application.EnableEvents = True ' End Sub
Cdlt
"François" a écrit dans le message de news:
Bonjour à tous,
Je profite que les rois ne nous aient pas encore rejoints pour vous soumettre un petit problème ...
Dans un Worksheet_Change, je mets la cellule active (dernière cellule de la colonne B) en majuscule et j'effectue un tri des colonnes -> sans problème. Je n'arrive en revanche pas à sélectionner à la fin del a procédure, la cellule qui se trouvait initialement à la droite de la target ... J'ai essayé : Target.Offset(, 1).Select qui ne fonctionne pas, pas plus que la fonction Find !
Par ailleurs, le tableau qui ne comporte que 28 lignes / 6 colonnes est très lent lors de la procédure (8 sec lorsque j'ajoute un simple nom en B28 !) Est-ce normal ? (il n'y a aucune formule dans toutes les cellules ...)
Merci pour votre aide, et bonne année à tous les exceliens contributeur du MPFE
Private Sub Worksheet_Change(ByVal Target As Range) Dim Cellule As Range, Posit As Long If Target.Column = 2 And Target.Row > 1 And Target.Count = 1 Then Application.ScreenUpdating = False Target.Value = UCase(Target.Value) ' Target.Offset(, 1).Select ActiveSheet.Range("B2:C" & Range("B1000").End(xlUp).Row) _ .Sort key1:¬tiveSheet.Range("B2"), order1:=xlAscending, Header:=xlNo On Error Resume Next For Each Cellule In ActiveSheet.Range("Noms") If Cellule.Value <> "" Then Posit = Application.WorksheetFunction.Find(Target.Value, Cellule.Value) If Posit > 0 Then Cellule.Offset(, 1).Activate Exit Sub End If End If Next Application.ScreenUpdating = True End If