[Résolu][Calc] Mise en surbrillance ligne et colonne d'une cellule active
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- NOOuvel adepte
- Messages : 23
- Inscription : 25 avr. 2021 08:43
[Résolu][Calc] Mise en surbrillance ligne et colonne d'une cellule active
Bonsoir à tous,
Pour faire simple je souhaite mettre en surbrillance les bordures inférieures et de droite d'une cellule active comme dans le document en pièces jointes (version excel en VBA) mais en version API de LibreOffice Calc.
Merci de vos réponses
Bien à vous
Pour faire simple je souhaite mettre en surbrillance les bordures inférieures et de droite d'une cellule active comme dans le document en pièces jointes (version excel en VBA) mais en version API de LibreOffice Calc.
Merci de vos réponses
Bien à vous
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par fabiencan le 30 sept. 2023 13:36, modifié 6 fois.
LibreOffice 7.6.1 sous Windows 11
-
- SuppOOrter
- Messages : 1047
- Inscription : 19 août 2018 05:20
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Bonjour
Le VBA ça ne fonctionnera pas
Faîtes une recherche la prochaine fois car le problème à déjà été posté viewtopic.php?t=53550
Le VBA ça ne fonctionnera pas
Faîtes une recherche la prochaine fois car le problème à déjà été posté viewtopic.php?t=53550
Open Office 4.1.15 sous Windows 11
-
- NOOuvel adepte
- Messages : 23
- Inscription : 25 avr. 2021 08:43
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Bonjour,
Je sais que le VBA ne fonctionnera pas, c'est pour ça que je demande s'il y a une équivalence en API pour éviter les conflits entre les différents logiciels et les différentes les versions.
J'ai déjà fait des recherches, mais cela ne correspond pas à ce que je souhaite. Je ne veux pas que les cellules passent en surbrillance, mais juste les bordures comment en exemple en pièce jointe (qui est malheureusement en version VBA).
Merci
Je sais que le VBA ne fonctionnera pas, c'est pour ça que je demande s'il y a une équivalence en API pour éviter les conflits entre les différents logiciels et les différentes les versions.
J'ai déjà fait des recherches, mais cela ne correspond pas à ce que je souhaite. Je ne veux pas que les cellules passent en surbrillance, mais juste les bordures comment en exemple en pièce jointe (qui est malheureusement en version VBA).
Merci
LibreOffice 7.6.1 sous Windows 11
-
- SuppOOrter
- Messages : 1047
- Inscription : 19 août 2018 05:20
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Et bien il suffit d'adapter pour que ce soit les bordures et non la couleur de cellule
La prochaine fois, merci d'indiquer les posts que vous avez déjà trouvés afin de gagner du temps
Open Office 4.1.15 sous Windows 11
-
- Grand Maître de l'OOffice
- Messages : 17084
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Bonjour,
Avec ma configuration, ta Macro fonctionne et interprète le code de cette manière : Le clic sur une autre cellule déplace les lignes rouges là où est le curseur.
Avec ma configuration, ta Macro fonctionne et interprète le code de cette manière : Le clic sur une autre cellule déplace les lignes rouges là où est le curseur.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 24.8.2 (x64)(10 novembre 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- PassiOOnné
- Messages : 639
- Inscription : 09 août 2017 22:15
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Hello,
voici une version sans code VBA
Les lignes existent déjà dans la feuille (CurseurH et CurseurV). Le code peut être sûrement durci et optimisé :
Ami calmant, J.P
voici une version sans code VBA
Les lignes existent déjà dans la feuille (CurseurH et CurseurV). Le code peut être sûrement durci et optimisé :
Code : Tout sélectionner
Option Explicit
Function Intersection(oEvt as Object) as Boolean
Dim oDoc as Object, maFeuille as Object
Dim oPlage As Object, oCell As Object, oDrawpage, oResult As Object
Dim adrCol as Object, adrRow as Object, oRanges as Object, oLast as Object, oLastPos As Object
Dim oShape As Object, oCurseurH As Object, oCurseurV As Object, oPos As Object, oSize As Object
Dim x As Integer
Const maPlage = "A1:Z26"
On Error Resume Next
oDoc = thisComponent
maFeuille = oDoc.CurrentController.ActiveSheet
oLast = maFeuille.getCellRangeByName("AA27")
oLastPos = oLast.Position
oDrawPage = maFeuille.getDrawPage()
oPlage = maFeuille.getCellRangeByName(maPlage)
oResult = oEvt.queryIntersection(oPlage.RangeAddress)
If oResult.RangeAddressesAsString <> "" Then
for x = 0 to oDrawPage.Count -1
oShape = oDrawPage.getByIndex(x)
If oShape.Name = "curseurH" Then
oShape.Visible = True
oPos = oShape.Position
oSize = oShape.Size
oSize.Width = oLastPos.Width: oSize.Height = 10
oPos.X = 0: oPos.Y = oEvt.Position.Y + oEvt.Size.Height
oShape.setPosition(oPos)
oShape.setSize(oSize)
End If
If oShape.Name = "curseurV" Then
oShape.Visible = True
oPos = oShape.Position
oPos.X = oEvt.Position.X : oPos.Y = 0
oSize = oShape.Size
oSize.Width = 10: oSize.Height = oLastPos.Y
oShape.setPosition(oPos)
oShape.setSize(oSize)
End If
Next x
Else
for x = 0 to oDrawPage.Count -1
oShape = oDrawPage.getByIndex(x)
If oShape.Name = "curseurH" Then
oShape.Visible = False
End If
If oShape.Name = "curseurV" Then
oShape.Visible = False
End If
Next x
End If
End Function
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
-
- NOOuvel adepte
- Messages : 23
- Inscription : 25 avr. 2021 08:43
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Bonsoir JP,
Merci de ta réponse, c'est tout à fait ce que je recherche.
Petit problème, je n'y connais pas grand-chose en macro...
J'arrive à copier le code dans le catalogue d'objet, j'assigne le macro à la sélection modifiée de ma feuille, mais après rien ne se passe... Même si je ferme et que j'ouvre le fichier en activant les macros...
Et, est-il possible de modifier la couleur de la surbrillance ?
Merci d'avance
Merci de ta réponse, c'est tout à fait ce que je recherche.
Petit problème, je n'y connais pas grand-chose en macro...
J'arrive à copier le code dans le catalogue d'objet, j'assigne le macro à la sélection modifiée de ma feuille, mais après rien ne se passe... Même si je ferme et que j'ouvre le fichier en activant les macros...
Et, est-il possible de modifier la couleur de la surbrillance ?
Merci d'avance
LibreOffice 7.6.1 sous Windows 11
-
- PassiOOnné
- Messages : 639
- Inscription : 09 août 2017 22:15
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Hello
Met ton classeur en pièce jointe si cela ne fonctionne pas.
Ami calmant, J.P
il faut affecter la macro à l'événement de feuille Sélection Modifiée -> Menu Feuille/Evénéments de la feuille As -tu bien mis deux objets graphiques lignes dans la feuille ?
Met ton classeur en pièce jointe si cela ne fonctionne pas.
C'est à dire la couleur des lignes ? dans ce cas il faut changer la couleur des objets graphiques lignes de la feuille (curseurH et curseurV)
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
-
- NOOuvel adepte
- Messages : 23
- Inscription : 25 avr. 2021 08:43
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Oui oui c'est ce que j'ai fait, mais rien...
Pour la couleur, changer le rouge en une autre, mais je ne sais pas quelles lignes de code modifier
Désolé pour toutes ces questions
Pour la couleur, changer le rouge en une autre, mais je ne sais pas quelles lignes de code modifier
Désolé pour toutes ces questions
LibreOffice 7.6.1 sous Windows 11
-
- PassiOOnné
- Messages : 639
- Inscription : 09 août 2017 22:15
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Met ton classeur en pièce jointe pour voir (si il n'y a pas de données confidentielles dedans.
Et pour la couleur : [EDIT] en code oo Basic exemple pour changer la couleur en vert de la ligne horizontale :
Et pour la couleur : [EDIT] en code oo Basic exemple pour changer la couleur en vert de la ligne horizontale :
Code : Tout sélectionner
If oShape.Name = "curseurH" Then
oShape.Visible = True
oShape.LineColor = RGB(0, 255, 0)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
-
- NOOuvel adepte
- Messages : 23
- Inscription : 25 avr. 2021 08:43
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Bonjour,
Je vous mets le classeur avec la macro intégrée.
Super pour les couleurs merci
Merci d'avance
Je vous mets le classeur avec la macro intégrée.
Super pour les couleurs merci
Merci d'avance
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.1 sous Windows 11
-
- PassiOOnné
- Messages : 639
- Inscription : 09 août 2017 22:15
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Hello,
Voici une version de code qui crée les objets lignes si ils n'existent pas :
Le souci que j'ai c'est que j'avais prévu de n'appeler la procédure InitCurseurs qu'une seule fois sur l'événement d'activation de la feuille à l'ouverture du document mais apparemment il n' y a pas cet événement à l'ouverture du document (L.O 7.3.6.2) mais quand par exemple on change de feuille et on revient sur la feuille. En attendant mieux j'ai mis InitCurseurs au début de la fonction Intersection.
Ami calmant, J.P
c'est normal que cela ne fonctionne pas dans ton classeur, il n' y a pas d'objets ligne dans ton classeur
Voici une version de code qui crée les objets lignes si ils n'existent pas :
Code : Tout sélectionner
Option Explicit
Global curseurH As Object
Global curseurV As Object
Sub InitCurseurs()
Dim oDoc as Object, maFeuille as Object, oDrawPage As Object, oShape As Object
Dim oPos As Object, oSize As Object, x As Integer
oDoc = thisComponent
maFeuille = oDoc.CurrentController.ActiveSheet
oDrawPage = maFeuille.getDrawPage()
For x = 0 to oDrawPage.Count -1
oShape = oDrawPage.getByIndex(x)
If oShape.Name = "curseurH" Then
curseurH = oShape
End If
If oShape.Name = "curseurV" Then
curseurV = oShape
End If
Next x
if curseurH is Nothing then
curseurH = oDoc.createInstance("com.sun.star.drawing.LineShape")
curseurH.Name = "curseurH"
oPos = curseurH.Position
oSize = curseurH.Size
oPos.X=0: oPos.Y=0: oSize.Width= 1000: oSize.Height=10
curseurH.LineColor = RGB(255, 0, 0)
curseurH.setPosition(oPos):curseurH.setSize(oSize)
curseurH.visible = True
oDrawPage.Add(curseurH)
End If
if curseurV is Nothing then
curseurV = oDoc.createInstance("com.sun.star.drawing.LineShape")
curseurV.Name = "curseurV"
oPos = curseurV.Position
oSize = curseurV.Size
oPos.X=0: oPos.Y=0: oSize.Width= 10: oSize.Height=1000
curseurV.LineColor = RGB(255, 0, 0)
curseurV.setPosition(oPos):curseurV.setSize(oSize)
curseurV.visible = True
oDrawPage.Add(curseurV)
End If
End Sub
Function Intersection(oEvt) as Boolean
Dim oDoc as Object, maFeuille as Object
Dim oPlage As Object, oCell As Object, oDrawpage, oResult As Object
Dim adrCol as Object, adrRow as Object, oRanges as Object, oLast as Object, oLastPos As Object
Dim oShape As Object, oCurseurH As Object, oCurseurV As Object
Dim oPos As New com.sun.star.awt.Point
Dim oSize As New com.sun.star.awt.Size
Dim x As Integer
Const maPlage = "A1:Z26"
' On Error Resume Next
InitCurseurs()
oDoc = thisComponent
maFeuille = oDoc.CurrentController.ActiveSheet
oLast = maFeuille.getCellRangeByName("AA27")
oLastPos = oLast.Position
oDrawPage = maFeuille.getDrawPage()
oPlage = maFeuille.getCellRangeByName(maPlage)
oResult = oEvt.queryIntersection(oPlage.RangeAddress)
If oResult.RangeAddressesAsString <> "" Then
curseurH.Visible = True
oSize.Width = oLastPos.X: oSize.Height = 10
oPos.X = 0: oPos.Y = oEvt.Position.Y + oEvt.Size.Height
curseurH.setPosition(oPos)
curseurH.setSize(oSize)
curseurV.Visible = True
oPos.X = oEvt.Position.X : oPos.Y = 0
oSize.Width = 10: oSize.Height = oLastPos.Y
curseurV.setPosition(oPos)
curseurV.setSize(oSize)
Else
curseurH.Visible = False
curseurV.Visible = False
End If
End Function
Ami calmant, J.P
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
-
- NOOuvel adepte
- Messages : 23
- Inscription : 25 avr. 2021 08:43
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Bonjour JP
Bon, on avance.
Avec le nouveau code, on aperçoit une croix rouge en haut à gauche, mais quand je clique sur une autre cellule rien ne bouge.
Je suis vraiment désolé, je n'y connais rien en macro...
Bon, on avance.
Avec le nouveau code, on aperçoit une croix rouge en haut à gauche, mais quand je clique sur une autre cellule rien ne bouge.
Je suis vraiment désolé, je n'y connais rien en macro...
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.1 sous Windows 11
-
- PassiOOnné
- Messages : 639
- Inscription : 09 août 2017 22:15
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
C'est normal que cela ne fonctionne pas il faut "brancher" l'événement de changement de sélection sur Intersection pas sur InitCurseurs.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
-
- NOOuvel adepte
- Messages : 23
- Inscription : 25 avr. 2021 08:43
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Autant pour moi.... je teste et je vous dis si tout fonctionne
Merci
Merci
LibreOffice 7.6.1 sous Windows 11
-
- NOOuvel adepte
- Messages : 23
- Inscription : 25 avr. 2021 08:43
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
C'est parfait tout fonctionne
Encore merci pour tout JP
Encore merci pour tout JP
LibreOffice 7.6.1 sous Windows 11
-
- NOOuvel adepte
- Messages : 23
- Inscription : 25 avr. 2021 08:43
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
J'ai parlé un peu trop vite, si j'ai le malheur de cliquer sur la ligne qui est en surbrillance le fichier bug et j'ai un message d'erreur sur une ligne de code.
Vu que c'est un fichier où l'on va être plusieurs à travailler, j'ai bien peur qu'ils me le fassent bugger à chaque fois ...
Vu que c'est un fichier où l'on va être plusieurs à travailler, j'ai bien peur qu'ils me le fassent bugger à chaque fois ...
Code : Tout sélectionner
oResult = oEvt.queryIntersection(oPlage.RangeAddress)
LibreOffice 7.6.1 sous Windows 11
-
- PassiOOnné
- Messages : 639
- Inscription : 09 août 2017 22:15
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Hello,
Ami calmant, J.P
comme indiqué précédemment mon code n'est pas "durci". Au début de la fonction Intersection il faut tester si l'objet déclencheur est bien une cellule (dans ton cas d'erreur c'est une "shape"). Voici le code à placer avant InitCurseurs() dans le code de la fonction Intersection :
Code : Tout sélectionner
If oEvt.ImplementationName <> "ScCellObj" then Exit Function
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
-
- NOOuvel adepte
- Messages : 23
- Inscription : 25 avr. 2021 08:43
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Bonjour à tous,
Je viens de tester et avec cette ligne de code en plus, j’ai l'impression que tout fonctionne correctement.
Dernière question et je vous laisse tranquille, je n'arrive pas à assigner la macro à plusieurs feuilles... Est-ce que je dois créer autant de macros que j'ai des pages ?
Bon samedi à tous
Je viens de tester et avec cette ligne de code en plus, j’ai l'impression que tout fonctionne correctement.
Dernière question et je vous laisse tranquille, je n'arrive pas à assigner la macro à plusieurs feuilles... Est-ce que je dois créer autant de macros que j'ai des pages ?
Bon samedi à tous
LibreOffice 7.6.1 sous Windows 11
-
- RespOOnsable forum
- Messages : 12457
- Inscription : 08 nov. 2005 16:23
- Localisation : Caen, France
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Bonjour,
Donc vous clôturez comme c'est l'usage.
Merci de respecter les règles de ce forum : un fil = un problème
-
- NOOuvel adepte
- Messages : 23
- Inscription : 25 avr. 2021 08:43
Re: [Calc] Mise en surbrillance ligne et colonne d'une cellule active
Désolé
Je vais ouvrir un autre fil...
Je vais ouvrir un autre fil...
LibreOffice 7.6.1 sous Windows 11