Excel mettre en couleur la ligne et la colonne de la cellule selection
Dernière réponse : dans Programmation
Bonjour,
J'aimerai sur excel, lorsque je déplace le curseur de la souris sur une cellule, que la ligne et la colonne, correspondants à cette dernière se mettent en couleur.
Par exemple si la souris se trouve sur la cellule I23, la ligne 23 et la colonne I se colorient.
De même, si la cellule D8 se trouve sous le curseur de la souris, la ligne 8 et la colonne D se colorient.
J'aimerai pouvoir effectuer cette opération dans une plage donné, par exemple range ("E5;S31").
J'aimerai sur excel, lorsque je déplace le curseur de la souris sur une cellule, que la ligne et la colonne, correspondants à cette dernière se mettent en couleur.
Par exemple si la souris se trouve sur la cellule I23, la ligne 23 et la colonne I se colorient.
De même, si la cellule D8 se trouve sous le curseur de la souris, la ligne 8 et la colonne D se colorient.
J'aimerai pouvoir effectuer cette opération dans une plage donné, par exemple range ("E5;S31").
Autres pages sur : excel mettre couleur ligne colonne cellule selection
Lassé par la pub ? Créez un compte
Meilleure solution
Salut les ptits gars.
Aujourd'hui, je vous montre comment récupérer la cellule au dessus de laquelle le curseur de la souris se balade. Comme promis, c'est une usine à gaz !
Cette fonction ne sert à rien, sinon à voir un peu mieux ce que nous faisons. Nous nous en servirons en debug pour voir le titre des fenêtres repérées.
Et voilà.
Ne vous avais-je pas promis une usine à gaz ?
Aujourd'hui, je vous montre comment récupérer la cellule au dessus de laquelle le curseur de la souris se balade. Comme promis, c'est une usine à gaz !
Obligatoire, sinon je m'énerve
Option Explicit
-----------------------------
Excel/VBa ne sait pas le faire. Windows, si. Voici les fonctions C présentent dans la DLL %windir%\system32\user32.dll qui vont nous être utiles.
Private Type POINTAPI X As Long Y As Long End Type Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
-----------------------------
Deux variables globales. C'est laid le VB
Const UneSeconde As Double = #12:00:01 AM# Dim Boucle As Boolean
Spa trivial de passer du C au VB.
Private Function WindowText(hWnd As Long) As String Dim s As String Dim l As Long Dim r As Long s = Space$(150) l = 149 r = GetWindowText(hWnd, s, l) WindowText = Mid(s, 1, r) End Function
Cette fonction ne sert à rien, sinon à voir un peu mieux ce que nous faisons. Nous nous en servirons en debug pour voir le titre des fenêtres repérées.
-----------------------------
Yeepeeeeeee! C'est dans cette fonction que l'on récupère la cellule survolée.
Private Function CelluleSurvolee() As Range Dim hWndMain As Long Dim hWndDesk As Long Dim hWndSheet As Long Dim hWndCurs As Long Dim r As Long Dim p As POINTAPI Dim c As Range Set CelluleSurvolee = Nothing hWndMain = FindWindow("XLMAIN", Application.Caption) If hWndMain = 0 Then Debug.Print "Je n'ai trouvé la fenêtre principale d'Excel." Exit Function End If Debug.Print "J'ai trouvé la fenêtre principale d'Excel : [" & hWndMain & "] '" & WindowText(hWndMain) & "'" hWndDesk = FindWindowEx(hWndMain, 0, "XLDESK", vbNullString) If hWndDesk = 0 Then Debug.Print "Je n'ai trouvé la fenêtre principale d'Excel." Exit Function End If Debug.Print "J'ai trouvé la fenêtre MDI d'Excel : [" & hWndDesk & "] '" & WindowText(hWndDesk) & "'" hWndSheet = FindWindowEx(hWndDesk, 0, vbNullString, ActiveWindow.Caption) If hWndSheet = 0 Then Debug.Print "Je n'ai trouvé la fenêtre active d'Excel." Exit Function End If Debug.Print "J'ai trouvé la fenêtre active d'Excel : [" & hWndSheet & "] '" & WindowText(hWndSheet) & "'" r = GetCursorPos(p) Debug.Print "La souris, par rapport à l'écran, est là : " & p.X & "x" & p.Y hWndCurs = WindowFromPoint(p.X, p.Y) Debug.Print "La fenêtre sous la souris est : [" & hWndCurs & "] '" & WindowText(hWndCurs) & "'" If hWndCurs <> hWndSheet Then Debug.Print "La fenêtre sous la souris n'est pas la feuille Excel." Exit Function End If Debug.Print "Ca tombe, bien, c'est la fenêtre qu'on cherchait à survoler" Set c = ActiveWindow.RangeFromPoint(p.X, p.Y) If Not (c Is Nothing) Then Debug.Print "Voilà la cellule survolée : " & c.Address Set CelluleSurvolee = c End If End Function
-----------------------------
C'est là que l'on boucle et qu'on fait quelque chose de la cellule récupérée. A la fin, on réarme le timer.
Private Sub Survol() Dim cell As Range If Not Boucle Then Exit Sub Set cell = CelluleSurvolee If cell Is Nothing Then Range("A1").Value = "" Else Range("A1").Value = cell.Address DoEvents Application.OnTime Now + UneSeconde, "Survol" End Sub
-----------------------------
C'est ici qu'on initialise le timer et la boucle. C'est parti !
Public Sub Survol_Demarre() Boucle = True Application.OnTime Now + UneSeconde, "Survol" End Sub
-----------------------------
Stop !
Public Sub Survol_Arrete() Boucle = False End Sub
-----------------------------
Et voilà.
Ne vous avais-je pas promis une usine à gaz ?
?
Par macro, on peut, puisque le VBA se base sur le VB. Toute l'API Windows est donc disponible. Mais je me vois mal t'expliquer comment utiliser en VB les fonction C WindowFromPoint et autres GetCursorPos, avec le passage des paramètres de VB à C, ainsi que la création d'un timer pour scruter régulièrement si le curseur est ou pas au dessus de la fenêtre Excel....
Par contre, je serais curieux de voir quelle formule tu utilises !
Par macro, on peut, puisque le VBA se base sur le VB. Toute l'API Windows est donc disponible. Mais je me vois mal t'expliquer comment utiliser en VB les fonction C WindowFromPoint et autres GetCursorPos, avec le passage des paramètres de VB à C, ainsi que la création d'un timer pour scruter régulièrement si le curseur est ou pas au dessus de la fenêtre Excel....
Par contre, je serais curieux de voir quelle formule tu utilises !
Effectivement, celà me parait compliqué pour creer cette macro
, mais curieux comme je suis j'irai rechercher certaines notions lool
Concernant le code pour les mise en formes conditionnelles, il se déclenche aussi sur le click de la souris, et non pas au passage de celle-ci sur la cellule.
Mais bon j'ai du me résigner à celà.
Après avoir défini la zone ou l'on souhaite appiliquer les régles de mise en forme, on créer 2 règles
1) La première pour indiquer toute les cellules que l'on ne souhaite pas mettre en couleur
=OU(CELLULE("ligne")<8;CELLULE("ligne")>38;CELLULE("colonne")<3;CELLULE("colonne")>8)
2) La deuxième, pour indiquer les cellules que l'on souhaite mettre en couleur
=OU(LIGNE()=CELLULE("ligne");COLONNE()=CELLULE("colonne"))
, mais curieux comme je suis j'irai rechercher certaines notions loolConcernant le code pour les mise en formes conditionnelles, il se déclenche aussi sur le click de la souris, et non pas au passage de celle-ci sur la cellule.
Mais bon j'ai du me résigner à celà.
Après avoir défini la zone ou l'on souhaite appiliquer les régles de mise en forme, on créer 2 règles
1) La première pour indiquer toute les cellules que l'on ne souhaite pas mettre en couleur
=OU(CELLULE("ligne")<8;CELLULE("ligne")>38;CELLULE("colonne")<3;CELLULE("colonne")>8)
2) La deuxième, pour indiquer les cellules que l'on souhaite mettre en couleur
=OU(LIGNE()=CELLULE("ligne");COLONNE()=CELLULE("colonne"))
Effectivement je me rend compte de la complexité de la chose. Je vais donc me contenter du click sur la cellule mdrr. En revanche, cela m aspire a une autre question; peux tu m expliquer la nuance entre les diiferentes procedures private public type et les autres? Et sans vouloir chnger de sujet tu saurai ou je pourais avoir des info pour recuperer mon mot de passe oublié sur msn? Je te pose cette question au cas ou tu sois polyvalent sur la programmation
Désolé, je ne récupère pas les mots de passe MSN.
(Comment est-ce possible d'oublier son MDP ?
)
(Comment est-ce possible de récupérer un MDP ?
)
Euh, par contre, côté polyvalence sur la programmation, je ne me plains pas.
L'élément de syntaxe Private indique que la procédure, la fonction ou la variable déclarée n'est accessible qu'à d'autres procédures ou fonctions du module dans lequel elle a été déclarée. C'est une question de portée.
(Comment est-ce possible d'oublier son MDP ?
)(Comment est-ce possible de récupérer un MDP ?
)Euh, par contre, côté polyvalence sur la programmation, je ne me plains pas.
L'élément de syntaxe Private indique que la procédure, la fonction ou la variable déclarée n'est accessible qu'à d'autres procédures ou fonctions du module dans lequel elle a été déclarée. C'est une question de portée.
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumMacro excel selection plage de cellule
- ForumPb selection cellule excel
- ForumFormater ligne colonne cellule active excel résolu
- ForumVba excel supprimer cellule dans une colonne
- ForumExcel multiplier une colonne par une cellule
- ForumExcel couleur si colonne
- ForumExcel passer colonne en ligne
- ForumLigne en colonne sous excel
- ForumTransposer ligne en colonne excel
- ForumMettre en couleur cellule excel
- Voir plus