Office 365 exécution code si sélection d'une ligne entière

arthour973

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Me voilà devant un nouveau be"soin que je ne parviens pas à résoudre.
Pourtant, je pense que ce n'est pas bien compliqué mais je n'y arrive pas malgré mes recherches et essais.

Si solution, ça m'arrangerait bien :)

Je voudrais, si clic sur le n° d'une ligne (n'importe laquelle) - donc sélection d'une ligne entière,
que dans la cellule colonne A de cette ligne apparaisse la mention "OK"

Mais uniquement si sélection d'une ligne entière
Pas si clic dans une cellule ou sélection plusieurs cellules

Je joins un petit fichier test.
Avec mes remerciements
Je vous souhaite à toutes et à tous une belle fin de journée,
Amicalement,
Lionel
 

Fichiers joints

Robert

XLDnaute Barbatruc
Bonjour Arthour, bonjour le forum,

Essaie comme ça (à placer dans l'onglet concerné) :

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count = Application.Columns.Count Then Cells(Target.Row, "A").Value = "OK"
End Sub
 

job75

XLDnaute Barbatruc
Bonjour Lionel, Robert,
.... et ça marche nickel,
Ah oui ? Alors sélectionne la plage A1:A16384 pour voir ! Il vaut mieux :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Rows.Count = 1 And Target.Columns.Count = Columns.Count Then Target(1) = "OK"
End Sub
A+
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, arthour, Robert

Une autre syntaxe
VB:
Private Sub Worksheet_SelectionChange(ByVal T As Range)
T(1) = IIf(T.EntireRow.Address = Selection.Address, "OK", vbNullString)
End Sub
EDITION: Bonsoir job75 (je n'avais pas rafraîchi la page)
 

Staple1600

XLDnaute Barbatruc
Re

Du coup, en prenant en compte la réponse de Job75
VB:
Private Sub Worksheet_SelectionChange(ByVal T As Range)
T(1) = IIf((T.EntireRow.Address = Selection.Address) And T.Rows.Count = 1, "OK", vbNullString)
End Sub
 

arthour973

XLDnaute Barbatruc
Supporter XLD
LOL, effectivement ça beug si je sélectionne toute la feuille.
Mais je n'ai à sélectionner qu'une seule ligne à la fois :)
Mais je garde tous les codes c'est génial car un jour ....... quand je serai encore plus vieux et que j'aurai plus de temps,
j'essaierai de faire un fichier recueil de codes.
Un jour LOL ......
lionel,
 

job75

XLDnaute Barbatruc
Bonsoir JM,

L'effacement que tu proposes sur T(1) ne va pas : la sélection d'une cellule l'efface...

Si l'on veut effacer le "OK" précédent :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Rows.Count = 1 And Target.Columns.Count = Columns.Count Then [A:A].Replace "OK", "", xlWhole: Target(1) = "OK"
End Sub
A+
 

Staple1600

XLDnaute Barbatruc
Re

job75
C'était volontaire ;)
Je voulais voir la réaction d'arthour
(Si pas de réaction, c'est qu'il n'a pas testé mon bout de code)

PS: Personnellement, j'ai du mal à voir l’intérêt de la chose (au niveau ergonomie d'utilisation du classeur)
 

Staple1600

XLDnaute Barbatruc
Re

Juste histoire de ...
VB:
Private Sub Worksheet_SelectionChange(ByVal T As Range)
T(1) = Application.Rept("OK", (T.EntireRow.Address = Selection.Address) And T.Rows.Count = 1)
End Sub
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas