Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sélection d'une cellule

5 réponses
Avatar
Mathieu René
Bonjour à tous,

Je me casse la tête sans résultat pour sélectionner une cellule au moment ou
on tape un code alpha dans une autre.
ex; se positionner sur B32 quand on entre "RT" dans B9, en fait pour y
introduire des heures variables.
J'ai essayé avec sub worksheet_change(byval target as excel.range) mais je
n'y arrive pas.
Je ne connais pas VBA suffisamment.
Quelqu'un peut-il m'aider?
merci d'avance.

5 réponses

Avatar
Tatanka
Salut Mathieu,

Quelque chose du genre :

Fais un clic droit sur l'onglet de ta feuille, un clic gauche sur
« Visualiser le code » et colle cette macro :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$9" And UCase(Target.Value) = "RT" _
Then Range("$B$32").Select
End Sub

dans la feuille du VBE qui devrait apparaître.

Retourne à ta feuille. Quand tu entreras RT, rT, Rt ou rt en B9,
B32 sera sélectionnée. Si tu veux que B32 soit sélectionnée
seulement quand tu entres RT, remplace UCase(Target.Value)
par Target.Value.


Serge


"Mathieu René" a écrit dans le message de news: 4cf6a46a$0$14261$
Bonjour à tous,

Je me casse la tête sans résultat pour sélectionner une cellule au moment ou on tape un code alpha dans une autre.
ex; se positionner sur B32 quand on entre "RT" dans B9, en fait pour y introduire des heures variables.
J'ai essayé avec sub worksheet_change(byval target as excel.range) mais je n'y arrive pas.
Je ne connais pas VBA suffisamment.
Quelqu'un peut-il m'aider?
merci d'avance.


Avatar
michdenis
Bonjour,

Copie ce qui suit dans le module feuille où l'action doit se dérouler.

'---------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("B9").Address Then
If UCase(Range("B9")) = "RT" Then
Application.EnableEvents = False
Range("B32").Select
Application.EnableEvents = True
End If
End If
End Sub
'---------------------------------


MichD
--------------------------------------------
"Mathieu René" a écrit dans le message de groupe de discussion : 4cf6a46a$0$14261$

Bonjour à tous,

Je me casse la tête sans résultat pour sélectionner une cellule au moment ou
on tape un code alpha dans une autre.
ex; se positionner sur B32 quand on entre "RT" dans B9, en fait pour y
introduire des heures variables.
J'ai essayé avec sub worksheet_change(byval target as excel.range) mais je
n'y arrive pas.
Je ne connais pas VBA suffisamment.
Quelqu'un peut-il m'aider?
merci d'avance.
Avatar
Mathieu René
Bonjour et merci pour votre réponse rapide et qui fonctionne parfaitement.

Je vous demande de m'excuser, j'aurai dû vous dire qu'en fait,
la B9 faisait partie d'une plages de B9 à AS9 et B32 de B32 à AS 32.
Il y a d'autres codes qui peuvent entrer dans ces cellules
RF va en B32
RT va en B33
JF va en B34
Ma va en B35
les autres codes (+/- 60) sont déjà programmés, ils font appels à des
traitements horaires qui fonctionnent par recherche en table,
Apparemment , Target ne peut s'adresser qu'a une cellule.
J'ai essayé en déclarant les deux plages par "set plage" mais cela ne va
pas.
pouvez-vous m'aider?
merci


"Mathieu René" a écrit dans le message de groupe
de discussion : 4cf6a46a$0$14261$
Bonjour à tous,

Je me casse la tête sans résultat pour sélectionner une cellule au moment
ou on tape un code alpha dans une autre.
ex; se positionner sur B32 quand on entre "RT" dans B9, en fait pour y
introduire des heures variables.
J'ai essayé avec sub worksheet_change(byval target as excel.range) mais je
n'y arrive pas.
Je ne connais pas VBA suffisamment.
Quelqu'un peut-il m'aider?
merci d'avance.


Avatar
LSteph
Bonjour,

Tout irait bien avec le code ci apres (sous mon post) s'il n'y avait
que cela: >RF va en B32;RT va en B33;JF va en B34;Ma va en B35
Si on a déjà entré RF ou Ma il faut que le code aille aussi effacer
les valeurs dépendant des cellules hors celle ou on veut entrer la
valeur RT
de plus si tu entre rt ou rf ou autre dans plusieurs cellules à la
fois ou tu fais un copier de plusieurs rt rf ma jf ce code demandera
une par une les valeurs à y entrer
Jusqu'ici cela irait presque. Reste à savoir ce qu'on doit faire si un
code différent est tapé. Question1

Alors par contre ta demande ne va plus du tout être possible avec
cette hypothese de traitement s'il faut tenir compte de cela:
les autres codes (+/- 60) sont d j programm s, ils font appels des...


On peut pas faire agir sur évennement et faire appel à ce qu'on ne
sait pas à la fois dans la même plage.
S'il y a déjà d'autres codes et formules dans les deux plages
concernées, on pourrait faire l'inverse si c'est juste le reste à
completer
à savoir si tu tapes en 33 mettre RT en 9 si tu tapes en 34 JF en
9 ... (à suivre..) Question2

Cordialement.

--
LSteph


Private Sub Worksheet_Change(ByVal Target As Range)
Dim isect As Range, c As Range
Set isect = Intersect(Target, [b9:as9])
If isect Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each c In isect.Cells
Select Case UCase(c)
Case "RF"
Range(c.Offset(23, 0), c.Offset(26, 0)).Value = ""
c.Offset(23, 0).Value = InputBox("Valeur pour " & c & " en " & _
c.Address & " en " & c.Offset(23, 0).Address)
Case "RT"
Range(c.Offset(23, 0), c.Offset(26, 0)).Value = ""
c.Offset(24, 0) = _
InputBox("Valeur pour " & c & " en " & _
c.Address & " en " & c.Offset(24, 0).Address)
Case "JF"
Range(c.Offset(23, 0), c.Offset(26, 0)).Value = ""
c.Offset(25, 0) = _
InputBox("Valeur pour " & c & " en " & _
c.Address & " en " & c.Offset(25, 0).Address)
Case "MA"
Range(c.Offset(23, 0), c.Offset(26, 0)).Value = ""
c.Offset(26, 0) = _
InputBox("Valeur pour " & c & " en " & _
c.Address & " en " & c.Offset(26, 0).Address)
Case Else
MsgBox "Code non traité en " & c.Address
End Select
Next
Application.EnableEvents = True
End Sub
Avatar
Mathieu René
Bonjour à tous,

Un grand merci à LSteph
La macro fonctionne parfaitement.

Pour la question, il n'y a qu'un code par case, de B9 à AS9.
ce code attribue un horaire de travail dans un home pour personnes âgées.
Le personnel est polyvalent et de ce fait a des horaires très, très
variables d'ou les +/- 60 codes.
Ces codes sont traités séparément par appel à un tableau avec les différents
horaires.
J'ai simplement supprimé le MSGBOX dans le cas ou on tape un code différent
de ceux attribués.
Encore merci
René



"Mathieu René" a écrit dans le message de groupe
de discussion : 4cf6a46a$0$14261$
Bonjour à tous,

Je me casse la tête sans résultat pour sélectionner une cellule au moment
ou on tape un code alpha dans une autre.
ex; se positionner sur B32 quand on entre "RT" dans B9, en fait pour y
introduire des heures variables.
J'ai essayé avec sub worksheet_change(byval target as excel.range) mais je
n'y arrive pas.
Je ne connais pas VBA suffisamment.
Quelqu'un peut-il m'aider?
merci d'avance.