OVH Cloud OVH Cloud

Encadrement de la ligne active : problème VBA

24 réponses
Avatar
géjoun.
Bonjour,

En faisant une recherche dans les archives, j'ai trouvé la possibilité
d'encadrer horizontalement la ligne active (ce qui permet de facilement
repérer les valeurs qui sont sur cette ligne); seulement la macro "encadre"
la ligne ET aussi toutes les séparations verticales de celle-ci, hors
j'aimerai que cette fonction ne m'encadre simplement que le haut et le bas
de la ligne, et pas toutes les "séparations verticales"; (je sais pas si je
suis trés clair, je voudrais que ça m'affiche seulement comme si on
sélectionne une ligne sur toute la longueur, et qu'on active seulement une
bordure haute et une basse); alors, est ce possible?

D'autre part, j'ai aussi remarqué en utilisant cette macro, qu'à l'ouverture
suivante, la dernière ligne sur laquelle se trouvait la cellule sélectionnée
se retrouve encadrée telle que le permet la macro, et ça, c'est pas terrible
lorsqu'on a déja des bordures de prédéfinies, alors est ce qu'il est pas
possible d'avoir cette fonction sans cette inconvénient?

Voici le code de la macro:


Private lngAvant As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If lngAvant <> 0 Then
If Target.Row <> lngAvant Then
Range("a" & lngAvant).EntireRow.Style = "normal"
End If
End If
lngAvant = Target.Row
Target.EntireRow.Borders.Color = vbRed
End Sub


Merci à tous!

--

Géjoun.
dam-mailBLOCAGE@ifrance.com
····························································
Enlevez le BLOCAGE pour répondre...

10 réponses

1 2 3
Avatar
sabatier
bonjour géjoun
inspire de toi de cela, tu trouveras peut-être ton bonheur :

With ActiveCell.EntireRow.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 3
End With
With ActiveCell.EntireRow.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 3
End With

HTH
jps

géjoun. a écrit:
Bonjour,

En faisant une recherche dans les archives, j'ai trouvé la possibilité
d'encadrer horizontalement la ligne active (ce qui permet de facilement
repérer les valeurs qui sont sur cette ligne); seulement la macro "encadre"
la ligne ET aussi toutes les séparations verticales de celle-ci, hors
j'aimerai que cette fonction ne m'encadre simplement que le haut et le bas
de la ligne, et pas toutes les "séparations verticales"; (je sais pas si je
suis trés clair, je voudrais que ça m'affiche seulement comme si on
sélectionne une ligne sur toute la longueur, et qu'on active seulement une
bordure haute et une basse); alors, est ce possible?

D'autre part, j'ai aussi remarqué en utilisant cette macro, qu'à l'ouverture
suivante, la dernière ligne sur laquelle se trouvait la cellule sélectionnée
se retrouve encadrée telle que le permet la macro, et ça, c'est pas terrible
lorsqu'on a déja des bordures de prédéfinies, alors est ce qu'il est pas
possible d'avoir cette fonction sans cette inconvénient?

Voici le code de la macro:


Private lngAvant As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If lngAvant <> 0 Then
If Target.Row <> lngAvant Then
Range("a" & lngAvant).EntireRow.Style = "normal"
End If
End If
lngAvant = Target.Row
Target.EntireRow.Borders.Color = vbRed
End Sub


Merci à tous!



Avatar
géjoun.
bonjour géjoun
inspire de toi de cela, tu trouveras peut-être ton bonheur :

With ActiveCell.EntireRow.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 3
End With
With ActiveCell.EntireRow.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 3
End With

HTH
jps


Euuuuh, merci, mais j'ai oublié de préciser, j'y connais rien en VBA (je
fais que "piquer" ce que poste les autres sur le forum, et je sais, c'est
pas bien!!! ;o))) ; alors si tu pouvais aussi me dire ou le placer et quoi
en faire.... C'est à rajouter dans mon code à un endroit précis? Ou c'est
simplement une fonction sur laquelle il faut que je m'inspire?

Merci!

--

Géjoun.

····························································
Enlevez le BLOCAGE pour répondre...

Avatar
Modeste
Bonjour,
hélas si tu ne sais que piquer et que tu ne connais rien
à VBA, ce lien ne te sera pas d'utilité ....
http://www.polykromy.com/nl/nl6/nl6.html#as4

mais Gaêtan peut te fournir (moyennant finance) l'add-in
EXCEL qui va bien ....
http://www.polykromy.com/repere/index.html
;-)))
aussi peut-etre trouvera tu sur ce site ami,
l'information et les formations que tu souhaites !!!!

@+
-----Message d'origine-----
bonjour géjoun
inspire de toi de cela, tu trouveras peut-être ton
bonheur :



With ActiveCell.EntireRow.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 3
End With
With ActiveCell.EntireRow.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 3
End With

HTH
jps


Euuuuh, merci, mais j'ai oublié de préciser, j'y connais
rien en VBA (je

fais que "piquer" ce que poste les autres sur le forum,
et je sais, c'est

pas bien!!! ;o))) ; alors si tu pouvais aussi me dire ou
le placer et quoi

en faire.... C'est à rajouter dans mon code à un endroit
précis? Ou c'est

simplement une fonction sur laquelle il faut que je
m'inspire?


Merci!

--

Géjoun.

························ ························· ········
···

Enlevez le BLOCAGE pour répondre...


.




Avatar
Krisprol
c'est qu'il nous frapperai avec ses petits points,
l'homme aux scuds :
vous avez vu ces ">..LineStyle" et ">..ColorIndex" ?

;-)))
G&D

-----Message d'origine-----
bonjour géjoun
inspire de toi de cela, tu trouveras peut-être ton
bonheur :


With ActiveCell.EntireRow.Borders(xlEdgeTop)
..LineStyle = xlContinuous
..ColorIndex = 3
End With
With ActiveCell.EntireRow.Borders(xlEdgeBottom)
..LineStyle = xlContinuous
..ColorIndex = 3
End With

HTH
jps

géjoun. a écrit:
Bonjour,

En faisant une recherche dans les archives, j'ai
trouvé la possibilité


d'encadrer horizontalement la ligne active (ce qui
permet de facilement


repérer les valeurs qui sont sur cette ligne);
seulement la macro "encadre"


la ligne ET aussi toutes les séparations verticales de
celle-ci, hors


j'aimerai que cette fonction ne m'encadre simplement
que le haut et le bas


de la ligne, et pas toutes les "séparations
verticales"; (je sais pas si je


suis trés clair, je voudrais que ça m'affiche
seulement comme si on


sélectionne une ligne sur toute la longueur, et qu'on
active seulement une


bordure haute et une basse); alors, est ce possible?

D'autre part, j'ai aussi remarqué en utilisant cette
macro, qu'à l'ouverture


suivante, la dernière ligne sur laquelle se trouvait
la cellule sélectionnée


se retrouve encadrée telle que le permet la macro, et
ça, c'est pas terrible


lorsqu'on a déja des bordures de prédéfinies, alors
est ce qu'il est pas


possible d'avoir cette fonction sans cette
inconvénient?



Voici le code de la macro:


Private lngAvant As Long
Private Sub Worksheet_SelectionChange(ByVal Target As
Range)


If lngAvant <> 0 Then
If Target.Row <> lngAvant Then
Range("a" & lngAvant).EntireRow.Style = "normal"
End If
End If
lngAvant = Target.Row
Target.EntireRow.Borders.Color = vbRed
End Sub


Merci à tous!



.




Avatar
sabatier
merdum de merdum, geedee
et moi qui eng....le broutard parce qu'il écrit "endif"!!!!!
tiens, je commence la journée en me filant deux beignes en travers du
museau tout en m'invectivant : "ça t'apprendra à t'occuper des autres" ;
comme quand j'étais encore à l'école communale en auvergne ; je reviens
un jour avec 500 lignes à écrire ; papa sabatier me dit "qu'as-tu fait
encore, sinistre crétin" "ben, j'ai pas su où était le ballon de
guebwiller" "ça t'apprendra à jouer avec les affaires des autres, fils
d'idiot"
jps

Krisprol a écrit:
c'est qu'il nous frapperai avec ses petits points,
l'homme aux scuds :
vous avez vu ces ">..LineStyle" et ">..ColorIndex" ?

;-)))
G&D


-----Message d'origine-----
bonjour géjoun
inspire de toi de cela, tu trouveras peut-être ton


bonheur :

With ActiveCell.EntireRow.Borders(xlEdgeTop)
..LineStyle = xlContinuous
..ColorIndex = 3
End With
With ActiveCell.EntireRow.Borders(xlEdgeBottom)
..LineStyle = xlContinuous
..ColorIndex = 3
End With

HTH
jps

géjoun. a écrit:

Bonjour,

En faisant une recherche dans les archives, j'ai


trouvé la possibilité


d'encadrer horizontalement la ligne active (ce qui


permet de facilement


repérer les valeurs qui sont sur cette ligne);


seulement la macro "encadre"


la ligne ET aussi toutes les séparations verticales de


celle-ci, hors


j'aimerai que cette fonction ne m'encadre simplement


que le haut et le bas


de la ligne, et pas toutes les "séparations


verticales"; (je sais pas si je


suis trés clair, je voudrais que ça m'affiche


seulement comme si on


sélectionne une ligne sur toute la longueur, et qu'on


active seulement une


bordure haute et une basse); alors, est ce possible?

D'autre part, j'ai aussi remarqué en utilisant cette


macro, qu'à l'ouverture


suivante, la dernière ligne sur laquelle se trouvait


la cellule sélectionnée


se retrouve encadrée telle que le permet la macro, et


ça, c'est pas terrible


lorsqu'on a déja des bordures de prédéfinies, alors


est ce qu'il est pas


possible d'avoir cette fonction sans cette


inconvénient?


Voici le code de la macro:


Private lngAvant As Long
Private Sub Worksheet_SelectionChange(ByVal Target As


Range)


If lngAvant <> 0 Then
If Target.Row <> lngAvant Then
Range("a" & lngAvant).EntireRow.Style = "normal"
End If
End If
lngAvant = Target.Row
Target.EntireRow.Borders.Color = vbRed
End Sub


Merci à tous!



.







Avatar
géjoun.
Bonjour,
hélas si tu ne sais que piquer et que tu ne connais rien
à VBA, ce lien ne te sera pas d'utilité ....
http://www.polykromy.com/nl/nl6/nl6.html#as4

mais Gaêtan peut te fournir (moyennant finance) l'add-in
EXCEL qui va bien ....
http://www.polykromy.com/repere/index.html
;-)))
aussi peut-etre trouvera tu sur ce site ami,
l'information et les formations que tu souhaites !!!!

===========================================
"Moyennant finance"???????
Si je viens demander de l'aide sur un forum public, c'est peut être d'abord
pour espérer avoir une réponse GRATUITE; si c'est payer pour avoir la
solution, autant que je m'inscive à des cours de VBA, au moins, je saurais
pourquoi je paye! (c'est le fait que c'est un forum 'microsoft' qui provoque
cet effet "poyon"?)
Sinon, j'ai déja fait des recherches dans les archives du groupe, et du
coup, j'ai déja visité ce site, mais sans vraiment trouvé la solution...

Et pourtant, d'aprés ce que j'ai pu lire dans les précédents messages, il
doit bien y avoir 2 ou 3 personnes dans ce forum succeptibles de me
répondre... :-)

Merci d'avance!

--

Géjoun.

····························································
Enlevez le BLOCAGE pour répondre...
Avatar
sabatier
attends, geedee, horrible falsificateur et manipulateur de macros...
je ne vois pas les .. dans mon post original...alors, moi,je me dégifle
et toi, tu t'excuses à genoux...
quant à géjoun, il est prié de redonner l'énoncé de son pb pour que
quelque expert se repenche sur lui et trouve la soluce gratuite tant
attendue...
jps

sabatier a écrit:
merdum de merdum, geedee
et moi qui eng....le broutard parce qu'il écrit "endif"!!!!!
tiens, je commence la journée en me filant deux beignes en travers du
museau tout en m'invectivant : "ça t'apprendra à t'occuper des autres" ;
comme quand j'étais encore à l'école communale en auvergne ; je reviens
un jour avec 500 lignes à écrire ; papa sabatier me dit "qu'as-tu fait
encore, sinistre crétin" "ben, j'ai pas su où était le ballon de
guebwiller" "ça t'apprendra à jouer avec les affaires des autres, fils
d'idiot"
jps

Krisprol a écrit:

c'est qu'il nous frapperai avec ses petits points, l'homme aux scuds :
vous avez vu ces ">..LineStyle" et ">..ColorIndex" ?

;-)))
G&D


-----Message d'origine-----
bonjour géjoun
inspire de toi de cela, tu trouveras peut-être ton



bonheur :

With ActiveCell.EntireRow.Borders(xlEdgeTop)
..LineStyle = xlContinuous
..ColorIndex = 3
End With
With ActiveCell.EntireRow.Borders(xlEdgeBottom)
..LineStyle = xlContinuous
..ColorIndex = 3
End With

HTH
jps

géjoun. a écrit:

Bonjour,

En faisant une recherche dans les archives, j'ai



trouvé la possibilité


d'encadrer horizontalement la ligne active (ce qui



permet de facilement


repérer les valeurs qui sont sur cette ligne);



seulement la macro "encadre"


la ligne ET aussi toutes les séparations verticales de



celle-ci, hors


j'aimerai que cette fonction ne m'encadre simplement



que le haut et le bas


de la ligne, et pas toutes les "séparations



verticales"; (je sais pas si je


suis trés clair, je voudrais que ça m'affiche



seulement comme si on


sélectionne une ligne sur toute la longueur, et qu'on



active seulement une


bordure haute et une basse); alors, est ce possible?

D'autre part, j'ai aussi remarqué en utilisant cette



macro, qu'à l'ouverture


suivante, la dernière ligne sur laquelle se trouvait



la cellule sélectionnée


se retrouve encadrée telle que le permet la macro, et



ça, c'est pas terrible


lorsqu'on a déja des bordures de prédéfinies, alors



est ce qu'il est pas


possible d'avoir cette fonction sans cette



inconvénient?


Voici le code de la macro:


Private lngAvant As Long
Private Sub Worksheet_SelectionChange(ByVal Target As



Range)


If lngAvant <> 0 Then
If Target.Row <> lngAvant Then
Range("a" & lngAvant).EntireRow.Style = "normal"
End If
End If
lngAvant = Target.Row
Target.EntireRow.Borders.Color = vbRed
End Sub


Merci à tous!



.












Avatar
Patrick Bastard
Il n'est pas interdit de remercier Gaëtan MOURMANT
;-)))

L'épaisseur du trait :
.Line.Weight = 2#
La couleur du trait :
.Line.ForeColor.SchemeColor = 22

''***DEBUT DU CODE ***
'Cette macro a été créée par Gaëtan Mourmant
'Contact :


Private Sub Worksheet_SelectionChange(ByVal Target As Range)


'*** Définition des variables ***
'Hauteur de la cellule active
h = ActiveCell.Height

'Largeur de la cellule active
w2 = ActiveCell.Width

'Hauteur entre la cellule active et la première ligne
t = ActiveCell.Top

'Largeur entre la cellule active et la première colonne
w = ActiveCell.Left

'Teste si les rectangles existent déjà. Dans ce cas, on les efface.
'On utilise ici On Error Resume Next, qui permet de tester
' l'erreur de création d'un rectangle en double portant le même nom.
On Error Resume Next
ActiveSheet.Shapes("RectangleV").Delete
On Error Resume Next
ActiveSheet.Shapes("RectangleH").Delete


' Ajoute les rectangles en fonction des coordonnées précédemment calculées.
' Les rectangles sont transparents, de grosseur 2 et de couleur gris clair
(22)
' On ne peut pas les imprimer.

'RECTANGLE VERTICAL :
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, t, w, h).Name "RectangleV"
With ActiveSheet.Shapes("RectangleV")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 2#
.Line.ForeColor.SchemeColor = 22
.PrintObject = False
End With

'RECTANGLE HORIZONTAL :
ActiveSheet.Shapes.AddShape(msoShapeRectangle, w, 0, w2, t).Name "RectangleH"
With ActiveSheet.Shapes("RectangleH")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 2#
.Line.ForeColor.SchemeColor = 22
.PrintObject = False
End With

End Sub


'*** FIN DU CODE ***
"sabatier" a écrit dans le
message de news:
attends, geedee, horrible falsificateur et manipulateur de macros...
....... la soluce gratuite tant attendue...
jps



--
==================================== P. Bastard.
Pour me contacter, remplacez "Chez" par @ dans l'adresse

Une foule de conseils utiles sur le site de Misange :
http://www.excelabo.net

Avatar
Modeste
;-))
Gejoun a insinué :
c'est le fait que c'est un forum 'microsoft' qui provoque
cet effet "poyon"?


tout doux Gejoun !!!!
l'aide complete je te l'ai fournie gratuitement et cela
sans en enlever un once de paternité à gaëtan qui est un
habitué de ce forum .
il fallait cliquer là :
http://www.polykromy.com/nl/nl6/nl6.html#as4


La générosité de gaêtan de mettre son code à disposition
des utilisateurs avancés est accompagnée par la mise à
disposition de ce même code (et beaucoup d'autres) sous
forme de produit utilisable directement par
l'utilisateur "lambda hermétique aux finesses de la
programation individuelle", il est normal que ce travail
mérite rétribution.
il n'y avait ni dans ce message, ni dans le précédent, ni
dans la façon de procéder d'incitation "ostentatoire" à
un quelconque bizness à "poyon".
** d'ailleurs, comme le fait remarquer Patrick, j'ose
croire que tu respecteras toi-même, la dernière ligne ???
;-))))

http://www.polykromy.com/nl/nl6/nl6.html#as4
ce lien te conduisait directement là:


Ajouter un repère à vos grands tableaux - le code :

Ce code fonctionne à l'aide d'une procédure
événementielle.
Ces procédures spéciales permettent de gérer
les "événements", comme par exemple un changement de
sélection, puis d'y affecter le code voulu. Elles sont
situées au niveau de la feuille dans l'éditeur de Visual
Basic (voir plus bas l'explication animée).
Ici, ce code crée deux rectangles qui encadreront la
partie haute et gauche de la cellule, permettant de mieux
se repérer dans de grands tableaux.

''***DEBUT DU CODE***
'Cette macro a été créée par Gaëtan Mourmant
'Contact :

'*** Définition des variables ***
'Hauteur de la cellule active
h = ActiveCell.Height

'Largeur de la cellule active
w2 = ActiveCell.Width

'Hauteur entre la cellule active et la première ligne
t = ActiveCell.Top

'Largeur entre la cellule active et la première colonne
w = ActiveCell.Left

'Teste si les rectangles existent déjà. Dans ce cas, on
les efface.
'On utilise ici On Error Resume Next, qui permet de
tester
' l'erreur de création d'un rectangle en double portant
le même nom.
On Error Resume Next
ActiveSheet.Shapes("RectangleV").Delete
On Error Resume Next
ActiveSheet.Shapes("RectangleH").Delete


' Ajoute les rectangles en fonction des coordonnées
précédemment calculées.
' Les rectangles sont transparents, de grosseur 3 et de
couleur rouge (10)
' On ne peut pas les imprimer.
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, t, w,
h).Name = "RectangleV"
With ActiveSheet.Shapes("RectangleV")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 3#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With

ActiveSheet.Shapes.AddShape(msoShapeRectangle, w, 0, w2,
t).Name = "RectangleH"

With ActiveSheet.Shapes("RectangleH")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 3#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
'*** FIN DU CODE ***

Vous pouvez librement vous inspirer de ce code pour
ajouter vos propres repères à vos tableaux. Une référence
à l'auteur sera cependant grandement appréciée.

Avatar
Modeste
;-)))
ni à Genouj, ni à Gejoun :
plutot un grand merci à gaëtan......

Objet: Re: Encadrement de la ligne active : problème VBA
De: "sabatier"
Envoyé:
4/21/2004 8:48:57 AM
-----Message d'origine-----
bonjour géjoun
inspire de toi de cela, tu trouveras peut-être ton



bonheur :

With ActiveCell.EntireRow.Borders(xlEdgeTop)
..LineStyle = xlContinuous
..ColorIndex = 3
End With
With ActiveCell.EntireRow.Borders(xlEdgeBottom)
..LineStyle = xlContinuous
..ColorIndex = 3
End With

HTH
jps








1 2 3