OVH Cloud OVH Cloud

Rebondir dans la colonne D

5 réponses
Avatar
Caroline L.
Bonjour à vous !

J'ai besoin d'un coup de main avec un petit ajustement de la macro qui suit.
Ajustement vers la fin (j'ai fait une grande flèche à côté)...
Voici ce qui me chicotte. Si l'usager clique dans la plage nommé au départ
de la macro, la curseur rebondi automatiquement en D9... ce qui est très
déplaisant lorsque l'on est rendu par exemple en J37 ! Est-il facile de
faire en sorte que lorsqu'on clique en dehord de la plage sécurisé (la set
plage), le curseur rebondi au même numéro de ligne. Donc, par exemple, si je
clique en B20, je rebondi en D20. Le rebondi doit par contre toujours être
situé dans la colonne D.

Voilà, c'est ma question à 200 $ !!!
Merci,
Caroline

----------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))

If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False
Application.EnableEvents = False


If Not Intersect(Target, plage) Is Nothing Then
Else

Range("D9").Select <----------------------
End If
Application.EnableEvents = True

End If

End Sub

5 réponses

Avatar
isabelle
re bonjour Caroline,

Application.Goto Reference:=Range("D" & ActiveCell.Row)

ou bien Application.Goto Reference:=Range("D" & ActiveCell.Row), _
scroll:=True

isabelle

Bonjour à vous !

J'ai besoin d'un coup de main avec un petit ajustement de la macro qui suit.
Ajustement vers la fin (j'ai fait une grande flèche à côté)...
Voici ce qui me chicotte. Si l'usager clique dans la plage nommé au départ
de la macro, la curseur rebondi automatiquement en D9... ce qui est très
déplaisant lorsque l'on est rendu par exemple en J37 ! Est-il facile de
faire en sorte que lorsqu'on clique en dehord de la plage sécurisé (la set
plage), le curseur rebondi au même numéro de ligne. Donc, par exemple, si je
clique en B20, je rebondi en D20. Le rebondi doit par contre toujours être
situé dans la colonne D.

Voilà, c'est ma question à 200 $ !!!
Merci,
Caroline

----------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))

If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False
Application.EnableEvents = False


If Not Intersect(Target, plage) Is Nothing Then
Else

Range("D9").Select <----------------------
End If
Application.EnableEvents = True

End If

End Sub




Avatar
Caroline L.
Re-bonsoir Isabelle,

j'ai fait le test et il manque un petit quelque chose. C'est que la plage au
début de ma macro soit
Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))
cette plage est le seul endroit autorisé pour la saisi de l'utilisateur.
Cette macro est utilisé puique la protection Feuille est ENLEVÉE mais je
dois protéger le reste de la feuille (le "gabarit"). C'est pouquoi lorsque
l'on clique en dehors de la plage ci-haut, la macro fait rebondir en D9.

Il est vrai que je ne l'avais pas mentionné (la protection de la feuille
enlevé, etc.). donc, avec ce que tu me suggères, il est possible de saisir
à l'extérieur de la plage... ce qu'il ne faut surtout pas !
Tu comprends ?

Caroline


"isabelle" a écrit dans le message de news:

re bonjour Caroline,

Application.Goto Reference:=Range("D" & ActiveCell.Row)

ou bien Application.Goto Reference:=Range("D" & ActiveCell.Row), _
scroll:=True

isabelle

Bonjour à vous !

J'ai besoin d'un coup de main avec un petit ajustement de la macro qui
suit.


Ajustement vers la fin (j'ai fait une grande flèche à côté)...
Voici ce qui me chicotte. Si l'usager clique dans la plage nommé au
départ


de la macro, la curseur rebondi automatiquement en D9... ce qui est très
déplaisant lorsque l'on est rendu par exemple en J37 ! Est-il facile de
faire en sorte que lorsqu'on clique en dehord de la plage sécurisé (la
set


plage), le curseur rebondi au même numéro de ligne. Donc, par exemple,
si je


clique en B20, je rebondi en D20. Le rebondi doit par contre toujours
être


situé dans la colonne D.

Voilà, c'est ma question à 200 $ !!!
Merci,
Caroline

----------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))

If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False
Application.EnableEvents = False


If Not Intersect(Target, plage) Is Nothing Then
Else

Range("D9").Select <----------------------
End If
Application.EnableEvents = True

End If

End Sub






Avatar
isabelle
re..,
je ne suis pas sur de bien comprendre.
si par exemple la cellule B46 est sélectionnée, doit t'ont rebondir en
D45 ou bien en D47 ?

isabelle


Re-bonsoir Isabelle,

j'ai fait le test et il manque un petit quelque chose. C'est que la plage au
début de ma macro soit
Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))
cette plage est le seul endroit autorisé pour la saisi de l'utilisateur.
Cette macro est utilisé puique la protection Feuille est ENLEVÉE mais je
dois protéger le reste de la feuille (le "gabarit"). C'est pouquoi lorsque
l'on clique en dehors de la plage ci-haut, la macro fait rebondir en D9.

Il est vrai que je ne l'avais pas mentionné (la protection de la feuille
enlevé, etc.). donc, avec ce que tu me suggères, il est possible de saisir
à l'extérieur de la plage... ce qu'il ne faut surtout pas !
Tu comprends ?

Caroline


"isabelle" a écrit dans le message de news:


re bonjour Caroline,

Application.Goto Reference:=Range("D" & ActiveCell.Row)

ou bien Application.Goto Reference:=Range("D" & ActiveCell.Row), _
scroll:=True

isabelle


Bonjour à vous !

J'ai besoin d'un coup de main avec un petit ajustement de la macro qui



suit.

Ajustement vers la fin (j'ai fait une grande flèche à côté)...
Voici ce qui me chicotte. Si l'usager clique dans la plage nommé au



départ

de la macro, la curseur rebondi automatiquement en D9... ce qui est très
déplaisant lorsque l'on est rendu par exemple en J37 ! Est-il facile de
faire en sorte que lorsqu'on clique en dehord de la plage sécurisé (la



set

plage), le curseur rebondi au même numéro de ligne. Donc, par exemple,



si je

clique en B20, je rebondi en D20. Le rebondi doit par contre toujours



être

situé dans la colonne D.

Voilà, c'est ma question à 200 $ !!!
Merci,
Caroline

----------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))

If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False
Application.EnableEvents = False


If Not Intersect(Target, plage) Is Nothing Then
Else

Range("D9").Select <----------------------
End If
Application.EnableEvents = True

End If

End Sub











Avatar
Caroline L.
je vais essayé d'être plus clair :

Ma feuille n'est plus protégée, la seule plage qui autorise la saisie de
données est la suivante :
Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))

Tout le reste de la feuille n'est pas à l'accès des usagers.

en te fiant aux instructions suivantes...

- de la ligne 9 à 22, si je clique à l'EXTÉRIEUR DE D9:J22, rebondir dans
la colonne D,
numéro de ligne correspondant

- de la ligne 26 à 39, si je clique à l'EXTÉRIEUR DE D26:J39, rebondir dans
la colonne D, numéro de ligne correspondant

- de la ligne 43 à 45, si je clique à l'EXTÉRIEUR DE D43:J45, rebondir dans
la colonne D, numéro de ligne correspondant

- de la ligne 47 à 48, si je clique à l'EXTÉRIEUR DE D47:J48, rebondir dans
la colonne D, numéro de ligne correspondant

- si je clique en B2, ok rebondir en D9 est correct à ce moment

- si je clique dans une autre zone que celle du haut, ok rebondir en D9.


Gros merci !

Caroline


"isabelle" a écrit dans le message de news:

re bonjour Caroline,

Application.Goto Reference:=Range("D" & ActiveCell.Row)

ou bien Application.Goto Reference:=Range("D" & ActiveCell.Row), _
scroll:=True

isabelle

Bonjour à vous !

J'ai besoin d'un coup de main avec un petit ajustement de la macro qui
suit.


Ajustement vers la fin (j'ai fait une grande flèche à côté)...
Voici ce qui me chicotte. Si l'usager clique dans la plage nommé au
départ


de la macro, la curseur rebondi automatiquement en D9... ce qui est très
déplaisant lorsque l'on est rendu par exemple en J37 ! Est-il facile de
faire en sorte que lorsqu'on clique en dehord de la plage sécurisé (la
set


plage), le curseur rebondi au même numéro de ligne. Donc, par exemple,
si je


clique en B20, je rebondi en D20. Le rebondi doit par contre toujours
être


situé dans la colonne D.

Voilà, c'est ma question à 200 $ !!!
Merci,
Caroline

----------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))

If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False
Application.EnableEvents = False


If Not Intersect(Target, plage) Is Nothing Then
Else

Range("D9").Select <----------------------
End If
Application.EnableEvents = True

End If

End Sub






Avatar
isabelle
re bonjour Caroline,

est ce que c'est mieux comme ça ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"), _
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False
Application.EnableEvents = False
If Intersect(Target, plage) Is Nothing Then
Select Case Target.Row
Case 1
' à déterminé
Case 9 To 22, 26 To 39, 43 To 45, 47, 48
Range("D" & ActiveCell.Row).Select
Case Else
Range("D9").Select
End Select
End If
Application.EnableEvents = True
End If
End Sub

isabelle


je vais essayé d'être plus clair :

Ma feuille n'est plus protégée, la seule plage qui autorise la saisie de
données est la suivante :
Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))

Tout le reste de la feuille n'est pas à l'accès des usagers.

en te fiant aux instructions suivantes...

- de la ligne 9 à 22, si je clique à l'EXTÉRIEUR DE D9:J22, rebondir dans
la colonne D,
numéro de ligne correspondant

- de la ligne 26 à 39, si je clique à l'EXTÉRIEUR DE D26:J39, rebondir dans
la colonne D, numéro de ligne correspondant

- de la ligne 43 à 45, si je clique à l'EXTÉRIEUR DE D43:J45, rebondir dans
la colonne D, numéro de ligne correspondant

- de la ligne 47 à 48, si je clique à l'EXTÉRIEUR DE D47:J48, rebondir dans
la colonne D, numéro de ligne correspondant

- si je clique en B2, ok rebondir en D9 est correct à ce moment

- si je clique dans une autre zone que celle du haut, ok rebondir en D9.


Gros merci !

Caroline


"isabelle" a écrit dans le message de news:


re bonjour Caroline,

Application.Goto Reference:=Range("D" & ActiveCell.Row)

ou bien Application.Goto Reference:=Range("D" & ActiveCell.Row), _
scroll:=True

isabelle


Bonjour à vous !

J'ai besoin d'un coup de main avec un petit ajustement de la macro qui



suit.

Ajustement vers la fin (j'ai fait une grande flèche à côté)...
Voici ce qui me chicotte. Si l'usager clique dans la plage nommé au



départ

de la macro, la curseur rebondi automatiquement en D9... ce qui est très
déplaisant lorsque l'on est rendu par exemple en J37 ! Est-il facile de
faire en sorte que lorsqu'on clique en dehord de la plage sécurisé (la



set

plage), le curseur rebondi au même numéro de ligne. Donc, par exemple,



si je

clique en B20, je rebondi en D20. Le rebondi doit par contre toujours



être

situé dans la colonne D.

Voilà, c'est ma question à 200 $ !!!
Merci,
Caroline

----------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))

If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False
Application.EnableEvents = False


If Not Intersect(Target, plage) Is Nothing Then
Else

Range("D9").Select <----------------------
End If
Application.EnableEvents = True

End If

End Sub