VBA pour une nulle : quand je clique, je veux un R...

  • Initiateur de la discussion Initiateur de la discussion SOYA
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

SOYA

XLDnaute Occasionnel
Bonjour et merci de me lire !

J'ai un tableau en Excel 2003.

Quel serait le code VBA qui, lorsque je sélectionne une cellule dans la colonne H, entre H4 et H50, m'inscrirait un "R" dans la-dite cellule ?

J'y arrive pas... 🙁

Merci beaucoup à l'avance.

Soya.
 
Re : VBA pour une nulle : quand je clique, je veux un R...

bonjour Soya

A mettre dans le module de la feuille

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set isect = Application.Intersect(Target, Range("H4:H50"))
If Not isect Is Nothing Then
   Target.Value = "R"
End If
End Sub
 
Re : VBA pour une nulle : quand je clique, je veux un R...

Bonjour,

une macro à mettre dans le ode de ta feuille :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Set plage = Range("h4:h50")


If Application.Intersect(Target, plage) Is Nothing Then Exit Sub Else Target.Value = "R"

End Sub


Edit : Hello Pierrejean. Décidement trop prompt.
 
Re : VBA pour une nulle : quand je clique, je veux un R...

Bonjour SOYA, suistrop, le forum

EDITION: pour varier
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Value = _
IIf(Not Intersect(Target, Range("H4:H50")) Is Nothing, "R", vbNullString)
End Sub
A mettre dans le code de la feuille
(Clic-droit --> [Visualiser le code])
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("H4:H50")) Is Nothing Then
Target = "R"
End If
End Sub
Houps: désolé pas rafraichi assez vite
bonjour pierrejan, ballmaster
 
Dernière édition:
Re : VBA pour une nulle : quand je clique, je veux un R...

Allez un peu plus loin...........

Je tente d'allez un peu plus loin mais ca bloque.

Quand on sélectionne une cellule qui fait parti d'une plage determinée, on affiche R. Jusque là ok.

Mais si on selectionne à nouveau une cellule de la plage qui a déja un R, je veux que soit affiché un S (par exemple) etc.........

J'ai tenté une instruction select case mais j'ai du rater qque chose.
Autant le code initial (affichage R) fonctionne, autant avec le select case j'ai un message d'erreur (end if sans bloc if alors que je n'ai pas de end if??????).

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Application.Intersect(Range("a1:d16"), Target) Is Nothing _
    Then Exit Sub _
    Else Select Case Target.Value
        Case "": Target.Value = "R"
        Case "R": Target.Value = "S"
        Case "S": Target.Value = "T"
        Case Else: Target.Value = ""
    End Select

End Sub

Edit : Help
 
Re : VBA pour une nulle : quand je clique, je veux un R...

re

A tester

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
If Application.Intersect(Range("a1:d16"), Target) Is Nothing  Then 
       Exit Sub
    Else 
       Select Case Target.Value
        Case "": Target.Value = "R"
        Case "R": Target.Value = "S"
        Case "S": Target.Value = "T"
        Case Else: Target.Value = ""
    End Select
 End if
End Sub

Nb les space_ sont horriblement piegeux !!
 
Dernière édition:
Re : VBA pour une nulle : quand je clique, je veux un R...

Re



J'avais oublié un petit détail
(Target à la place de vbNullstring)


Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Value = _
IIf(Not Intersect(Target, Range("H4:H50")) Is Nothing, "R", Target)
End Sub
 
Re : VBA pour une nulle : quand je clique, je veux un R...

Merci à vous deux,

Pierrejean, tu avais raison. A vouloir rendre plus digeste mon code avec des _, cela a été catastrophique.

Ce qui me rassure, c'est que mon code était correct (ouais enfin pas vraiment puisque ca marchait pas😀)

Autre question, et la c'est sur je sais pas faire.
Le changement impose de cliquer sur une cellule puis d'en sortir et la reselectionner pour que cela fonctionne.

Si on veut faire le même procédé mais que ce soit avec le clic de souris.
Comment faire ?
Je voulais le faire avec l'évènement beforerightclick. Ca marche bien mais cela donne le menu contextuel à chaque fois après. Il faudrait le désactiver ou mieux que ce soit le clic gauche.(mais le double clic).

Merci


Edit : J'ai trouvé pour désactiver le menu contextuel du clic droit. (cancel=true).
 
Dernière édition:
Re : VBA pour une nulle : quand je clique, je veux un R...

Salut tout le monde

Une autre approche sur le double clic:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim C
If Not Application.Intersect(Target, Range("A1: D16")) Is Nothing Then
Cancel = True
C = Target.Value
Target.Value = Switch(C = "", "R", C = "R", "S", C = "S", "T", C = "T", "")
End If
End Sub

Bonne continuation
Ya'v
 
Re : VBA pour une nulle : quand je clique, je veux un R...

Bonsoir ya_v_ka


Bravo pour le Switch (et merci)

Je n'arrivais pas à me dépatouiller avec.
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' ;-) ya_v_ka
Dim C
C = Target.Value
Target.Value = _
IIf(Not Intersect(Target, _
Range("A1:A5")) Is Nothing, _
Switch(C = "", "R", C = "R", "S", C = "S", "T", C = "T", ""), _
Target)
End Sub
 
Dernière édition:
Re : VBA pour une nulle : quand je clique, je veux un R...

Re tous

De rien, c'est un truc que je tiens de MdF... mais j'ai donné sans tester !!!!

Maintenant combiné avec le iif... pas mal.

Le grand avantage du switch se trouve dans sa 'légereté' pour de grands choix dans le même ordre... ou pour des séries spéciales, style tennis (0-15-30-40-A)...

Ya'v
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
521
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
1 K
Retour