La macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top + _
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
La macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top + _
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
La macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top + _
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
La macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top + _
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
La macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top + _
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
La macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top + _
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
Je l'ai testé sous excel 2007, et, elle fait exactement ce que tu dis.
P.S. dans mon message précédent, je t'ai retourné la macro, mais
en un endroit, j'ai modifié ActiveSheet par Feuil1... il faudrait
apporter la modification le cas échéant.
"JLuc" a écrit dans le message de news:
*Bonjour michdenis*,
Mon soucis, c'est que la macro fait le travail avec excel 2000, mais
mal avec excel 2003 et excel 2007.
Comme je connais pas trop les différences sur les version 2003 et 2007,
j'aurais aimer un peu d'aide :)
Merci d'avance si tu peux au moins m'aiguiller.
JLucLa macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top + _
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
Je l'ai testé sous excel 2007, et, elle fait exactement ce que tu dis.
P.S. dans mon message précédent, je t'ai retourné la macro, mais
en un endroit, j'ai modifié ActiveSheet par Feuil1... il faudrait
apporter la modification le cas échéant.
"JLuc" <ns.jeanluc.laurent@free.fr.ns> a écrit dans le message de news:
mn.2ca37d8b52592e1d.40692@free.fr.ns...
*Bonjour michdenis*,
Mon soucis, c'est que la macro fait le travail avec excel 2000, mais
mal avec excel 2003 et excel 2007.
Comme je connais pas trop les différences sur les version 2003 et 2007,
j'aurais aimer un peu d'aide :)
Merci d'avance si tu peux au moins m'aiguiller.
JLuc
La macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top + _
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
Je l'ai testé sous excel 2007, et, elle fait exactement ce que tu dis.
P.S. dans mon message précédent, je t'ai retourné la macro, mais
en un endroit, j'ai modifié ActiveSheet par Feuil1... il faudrait
apporter la modification le cas échéant.
"JLuc" a écrit dans le message de news:
*Bonjour michdenis*,
Mon soucis, c'est que la macro fait le travail avec excel 2000, mais
mal avec excel 2003 et excel 2007.
Comme je connais pas trop les différences sur les version 2003 et 2007,
j'aurais aimer un peu d'aide :)
Merci d'avance si tu peux au moins m'aiguiller.
JLucLa macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top + _
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
Je l'ai testé sous excel 2007, et, elle fait exactement ce que tu dis.
P.S. dans mon message précédent, je t'ai retourné la macro, mais
en un endroit, j'ai modifié ActiveSheet par Feuil1... il faudrait
apporter la modification le cas échéant.
"JLuc" a écrit dans le message de news:
*Bonjour michdenis*,
Mon soucis, c'est que la macro fait le travail avec excel 2000, mais
mal avec excel 2003 et excel 2007.
Comme je connais pas trop les différences sur les version 2003 et 2007,
j'aurais aimer un peu d'aide :)
Merci d'avance si tu peux au moins m'aiguiller.
JLucLa macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top + _
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
Je l'ai testé sous excel 2007, et, elle fait exactement ce que tu dis.
P.S. dans mon message précédent, je t'ai retourné la macro, mais
en un endroit, j'ai modifié ActiveSheet par Feuil1... il faudrait
apporter la modification le cas échéant.
"JLuc" <ns.jeanluc.laurent@free.fr.ns> a écrit dans le message de news:
mn.2ca37d8b52592e1d.40692@free.fr.ns...
*Bonjour michdenis*,
Mon soucis, c'est que la macro fait le travail avec excel 2000, mais
mal avec excel 2003 et excel 2007.
Comme je connais pas trop les différences sur les version 2003 et 2007,
j'aurais aimer un peu d'aide :)
Merci d'avance si tu peux au moins m'aiguiller.
JLuc
La macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top + _
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
Je l'ai testé sous excel 2007, et, elle fait exactement ce que tu dis.
P.S. dans mon message précédent, je t'ai retourné la macro, mais
en un endroit, j'ai modifié ActiveSheet par Feuil1... il faudrait
apporter la modification le cas échéant.
"JLuc" a écrit dans le message de news:
*Bonjour michdenis*,
Mon soucis, c'est que la macro fait le travail avec excel 2000, mais
mal avec excel 2003 et excel 2007.
Comme je connais pas trop les différences sur les version 2003 et 2007,
j'aurais aimer un peu d'aide :)
Merci d'avance si tu peux au moins m'aiguiller.
JLucLa macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top + _
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
Si tu décrivais ton problème lorsqu'il se présente ça orienterais
les recherches. Qu'est-ce qui fonctionne mal lorsque tu n'es
pas satisfait ?
"JLuc" a écrit dans le message de news:
*ReBonjour michdenis*,
Là, tu me surprends 8-o
Au travail, elle marche pas comme sous excel 2000 !!
Une option quelconque ?Je l'ai testé sous excel 2007, et, elle fait exactement ce que tu dis.
P.S. dans mon message précédent, je t'ai retourné la macro, mais
en un endroit, j'ai modifié ActiveSheet par Feuil1... il faudrait
apporter la modification le cas échéant.
"JLuc" a écrit dans le message de news:
*Bonjour michdenis*,
Mon soucis, c'est que la macro fait le travail avec excel 2000, mais
mal avec excel 2003 et excel 2007.
Comme je connais pas trop les différences sur les version 2003 et 2007,
j'aurais aimer un peu d'aide :)
Merci d'avance si tu peux au moins m'aiguiller.
JLucLa macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top +
_
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
Si tu décrivais ton problème lorsqu'il se présente ça orienterais
les recherches. Qu'est-ce qui fonctionne mal lorsque tu n'es
pas satisfait ?
"JLuc" <ns.jeanluc.laurent@free.fr.ns> a écrit dans le message de news:
mn.2cc87d8b695340bb.40692@free.fr.ns...
*ReBonjour michdenis*,
Là, tu me surprends 8-o
Au travail, elle marche pas comme sous excel 2000 !!
Une option quelconque ?
Je l'ai testé sous excel 2007, et, elle fait exactement ce que tu dis.
P.S. dans mon message précédent, je t'ai retourné la macro, mais
en un endroit, j'ai modifié ActiveSheet par Feuil1... il faudrait
apporter la modification le cas échéant.
"JLuc" <ns.jeanluc.laurent@free.fr.ns> a écrit dans le message de news:
mn.2ca37d8b52592e1d.40692@free.fr.ns...
*Bonjour michdenis*,
Mon soucis, c'est que la macro fait le travail avec excel 2000, mais
mal avec excel 2003 et excel 2007.
Comme je connais pas trop les différences sur les version 2003 et 2007,
j'aurais aimer un peu d'aide :)
Merci d'avance si tu peux au moins m'aiguiller.
JLuc
La macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top +
_
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub
Si tu décrivais ton problème lorsqu'il se présente ça orienterais
les recherches. Qu'est-ce qui fonctionne mal lorsque tu n'es
pas satisfait ?
"JLuc" a écrit dans le message de news:
*ReBonjour michdenis*,
Là, tu me surprends 8-o
Au travail, elle marche pas comme sous excel 2000 !!
Une option quelconque ?Je l'ai testé sous excel 2007, et, elle fait exactement ce que tu dis.
P.S. dans mon message précédent, je t'ai retourné la macro, mais
en un endroit, j'ai modifié ActiveSheet par Feuil1... il faudrait
apporter la modification le cas échéant.
"JLuc" a écrit dans le message de news:
*Bonjour michdenis*,
Mon soucis, c'est que la macro fait le travail avec excel 2000, mais
mal avec excel 2003 et excel 2007.
Comme je connais pas trop les différences sur les version 2003 et 2007,
j'aurais aimer un peu d'aide :)
Merci d'avance si tu peux au moins m'aiguiller.
JLucLa macro qui suit (celle que tu as publiée) fait le travail.
c'est quoi son problème ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Largeur entre la cellule active et la première colonne
PosHorizontal = Cells(Target.Row, 2).Left
' Position verticale sur ligne 2 ou plus
PosHaut = Application.WorksheetFunction.Max((Cells(Target.Row, 2).Top +
_
(Cells(Target.Row, 2).Height / 2)), _
(Cells(2, 5).Top + (Cells(2, 5).Height / 2)))
' longueur de la ligne
longueur = Cells(1, 253).Left - Cells(1, 2).Left
' Teste si l'index existe déjà. Dans ce cas, on l'efface.
' On utilise ici On Error Resume Next, qui permet de tester l'erreur
On Error Resume Next
ActiveSheet.Shapes("IndeX").Delete
' Ajoute une ligne en fonction des coordonnées précédemment calculées.
' La ligne est transparente, de grosseur 1 et de couleur rouge (10)
' On ne peut pas l'imprimer.
Feuil1.Shapes.AddShape(msoShapeRectangle, PosHorizontal, PosHaut, _
longueur, 1).Name = "IndeX"
With ActiveSheet.Shapes("IndeX")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub