OVH Cloud OVH Cloud

Encadrement de la ligne active...c'est pas encore fini!

9 réponses
Avatar
géjoun.
Bonjour,

Petite question à ceux qui m'ont aidé pour cette fonction dans mon post du
21/04/2004:
Pourquoi le code ci-dessous qu'on m'a donné 'gèle' par la même occasion les
retours en arrière (les Ctrl + Z)?
Est-ce normal???

Voici le code:

'D'après la macro créée par Gaëtan Mourmant
'Contact : contact@polykromy.com et laborieusement adaptée par P. Bastard
'pour entourer d'un rectangle horizontal toute la ligne d'une sélection.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'*** Définition des variables ***
'Hauteur de la cellule active
h = ActiveCell.Height
'Hauteur entre la cellule active et la première ligne
t = ActiveCell.Top
'*** Suppression du rectangle précédent ***
'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("RectangleH").Delete
'*** Dessin du rectangle ***
' Ajoute le rectangle en fonction des coordonnées précédemment calculées.
' Le rectangle est transparent, de grosseur 2 et de couleur rouge (2)
' On ne peut pas l'imprimer.
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, t, 100000, h).Name =
"RectangleH"
With ActiveSheet.Shapes("RectangleH")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 2
.PrintObject = False
End With
End Sub

Merci!

--

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

9 réponses

Avatar
modeste
Bonsoir,
Normal ???? je ne saurai dire....
mais tant que la selection n'a pas changé de place,
toutes les actions(couleur, format effectuées sur la
cellule encadrée sont annulable par Ctrl-Z et inversement.

cette désactivation de la pile d'annulation n'est pas
unique à cette macro, c'est également vrai pour toute
macro VBA : les actions antérieures à l'utilisation de la
macro sont oubliées.

les actions effectuées par une macros ne sont pas
réversibles via l'interface feuille de calcul...
:-(
hélas toute action sur la touche Entrée déplace la
sélection, ce qui re-initialise met la pile d'annulation .

Nb: il y a me semble-t-il sur un site US (Chip Pearson ?
ou OzGrid.com) quelque chose pour gerer le Undo via
macro...
@+
-----Message d'origine-----
Bonjour,

Petite question à ceux qui m'ont aidé pour cette
fonction dans mon post du

21/04/2004:
Pourquoi le code ci-dessous qu'on m'a donné 'gèle' par
la même occasion les

retours en arrière (les Ctrl + Z)?
Est-ce normal???

Voici le code:

'D'après la macro créée par Gaëtan Mourmant
'Contact : et laborieusement
adaptée par P. Bastard

'pour entourer d'un rectangle horizontal toute la ligne
d'une sélection.

Private Sub Worksheet_SelectionChange(ByVal Target As
Range)

'*** Définition des variables ***
'Hauteur de la cellule active
h = ActiveCell.Height
'Hauteur entre la cellule active et la première ligne
t = ActiveCell.Top
'*** Suppression du rectangle précédent ***
'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("RectangleH").Delete
'*** Dessin du rectangle ***
' Ajoute le rectangle en fonction des coordonnées
précédemment calculées.

' Le rectangle est transparent, de grosseur 2 et de
couleur rouge (2)

' On ne peut pas l'imprimer.
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, t,
100000, h).Name =

"RectangleH"
With ActiveSheet.Shapes("RectangleH")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 2
.PrintObject = False
End With
End Sub

Merci!

--

Géjoun.

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

Enlevez le BLOCAGE pour répondre...





.



Avatar
Michel Pierron
Bonjour géjoun;
C'est quand même le marteau pilon pour écraser la mouche ton truc, d'autant que tu
ne peux même plus écrire dans les cellules encadrées. Pourquoi ne pas avoir opté
pour un encadrement de cellule par format:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Byte
For i = 5 To 12: Cells.Borders(i).LineStyle = -4142: Next i
ActiveCell.EntireRow.BorderAround ColorIndex:=3, Weight:=2
End Sub

MP

"géjoun." a écrit dans le message de
news:c6ofn6$l36$
Bonjour,

Petite question à ceux qui m'ont aidé pour cette fonction dans mon post du
21/04/2004:
Pourquoi le code ci-dessous qu'on m'a donné 'gèle' par la même occasion les
retours en arrière (les Ctrl + Z)?
Est-ce normal???

Voici le code:

'D'après la macro créée par Gaëtan Mourmant
'Contact : et laborieusement adaptée par P. Bastard
'pour entourer d'un rectangle horizontal toute la ligne d'une sélection.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'*** Définition des variables ***
'Hauteur de la cellule active
h = ActiveCell.Height
'Hauteur entre la cellule active et la première ligne
t = ActiveCell.Top
'*** Suppression du rectangle précédent ***
'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("RectangleH").Delete
'*** Dessin du rectangle ***
' Ajoute le rectangle en fonction des coordonnées précédemment calculées.
' Le rectangle est transparent, de grosseur 2 et de couleur rouge (2)
' On ne peut pas l'imprimer.
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, t, 100000, h).Name > "RectangleH"
With ActiveSheet.Shapes("RectangleH")
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 1#
.Line.ForeColor.SchemeColor = 2
.PrintObject = False
End With
End Sub

Merci!

--

Géjoun.

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







Avatar
géjoun.
Salut,

Le marteau pilon? pourquoi? Elle est lourde à trainer ma macro? Et qu'est ce
qu'elle a de mieux la tienne?
Je ne sais pas si tu as lu le message du 21/04, mais si tu l'as lu, tu as du
t'apercevoir que j'y connaissais pas grand chose en macro, alors j'ai pris
ce qu'on m'a donné, mais si tu en as une mieux, et en plus qui permet de
revenir en arrière aprés une opération, je veux bien la prendre, même une
qui me soulignerai juste la ligne sur ce principe :

Private Sub Worksheet_SelectionChange(ByVal zz As Range)
zz.EntireRow.Select
zz.Activate
End Sub


--

Géjoun. (qui en est à son 863ème post en moins de 2 semaines, c'est vous
dire le niveau! :o)

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

Dans son élan, Michel Pierron nous a écrit:
|| Bonjour géjoun;
|| C'est quand même le marteau pilon pour écraser la mouche ton truc,
|| d'autant que tu ne peux même plus écrire dans les cellules
|| encadrées. Pourquoi ne pas avoir opté pour un encadrement de cellule
|| par format:
||
|| Private Sub Worksheet_SelectionChange(ByVal Target As Range)
|| Dim i As Byte
|| For i = 5 To 12: Cells.Borders(i).LineStyle = -4142: Next i
|| ActiveCell.EntireRow.BorderAround ColorIndex:=3, Weight:=2
|| End Sub
||
|| MP
Avatar
AV
qui me soulignerai juste la ligne sur ce principe :

Private Sub Worksheet_SelectionChange(ByVal zz As Range)
zz.EntireRow.Select
zz.Activate
End Sub


Ben moi je me contenterais de celle-là.....!
Et je consacrerais mon énergie/temps à d'autres trucs bcp plus fondamentaux...

AV

Avatar
géjoun.
Ben là, pour le coup, à la rigueur, ce que j'ai me va trés bien, sauf que
j'aimerai bien pouvoir revenir en arrière, et c'était ça le sens de ma
question.

--

Géjoun.

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



AV nous a écrit:
||| qui me soulignerai juste la ligne sur ce principe :
||
||| Private Sub Worksheet_SelectionChange(ByVal zz As Range)
||| zz.EntireRow.Select
||| zz.Activate
||| End Sub
||
|| Ben moi je me contenterais de celle-là.....!
|| Et je consacrerais mon énergie/temps à d'autres trucs bcp plus
|| fondamentaux...
||
|| AV
Avatar
géjoun.
Et d'ailleurs AV, ta fonction serait trés bien car elle permet le "undo",
mais le petit proiblème qu'elle a, c'est que si on veut effacer une cellule
de la ligne, elle efface toute le ligne, sinon, elle serait parfaite :-(

--

Géjoun.

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


Dans son élan, géjoun. nous a écrit:
|| Ben là, pour le coup, à la rigueur, ce que j'ai me va trés bien,
|| sauf que j'aimerai bien pouvoir revenir en arrière, et c'était ça le
|| sens de ma question.
||
|| --
||
|| Géjoun.
||
|| ····························································
|| Enlevez le BLOCAGE pour répondre...
Avatar
AV
....elle efface toute le ligne,


Autant continuer dans les bricoles : Efface dans la barre de formule

AV

Avatar
Modeste
Bonjour GD aussi ;-)))
comme je le notifiais dans ma réponse précédente :

Traduction partielle de :
http://www.j-walk.com/ss/excel/tips/tip23.htm

Les utilisateurs se sont habitués à la capacité "de
défaire » une opération.
Presque chaque opération que vous exécutez dans l'Excel
peut être défaite.
Si vous programmez dans VBA, vous pouvez vous être
demandé s'il est possible de défaire les effets d'un sous-
programme.
La réponse est oui.
La réponse correcte serait plutot : ce n'est pas toujours
très facile !!!!!.

Faire que les effets de vos sous-programmes soient
défaisables n'est pas automatique. Votre sous-programme
devra stocker l'état précédent pour être reconstitué si
l'utilisateur choisit la commande UNDO.
Cela variera donc, selon ce que le sous-programme fait.
Dans des cas extrêmes, vous pourriez devoir memoriser une
feuille de calcul entière.
Si votre sous-programme modifie une plage, par exemple,
vous ne devrez mémoriser seulement que le contenu de
cette plage.

Le lien ci-dessous démontre comment permettre
l'utilisation de la commande UNDO après éxécution d'un
sous-programme.

http://www.j-walk.com/ss/excel/tips/tip23.htm

il faut cependant avoir un minimum de maitrise de VBA !!!
de ton aveu, tu nous as hélas avoué que tu n'y
connaissais pas grand chose en macro...

;-)))
la curiosité n'étant pas a mes yeux un défaut, Ce n'est
pas un grief qui sera retenu contre toi.

@+

-----Message d'origine-----
Ben là, pour le coup, à la rigueur, ce que j'ai me va
trés bien, sauf que

j'aimerai bien pouvoir revenir en arrière, et c'était ça
le sens de ma

question.

--

Géjoun.

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

Enlevez le BLOCAGE pour répondre...



AV nous a écrit:
||| qui me soulignerai juste la ligne sur ce principe :
||
||| Private Sub Worksheet_SelectionChange(ByVal zz As
Range)

||| zz.EntireRow.Select
||| zz.Activate
||| End Sub
||
|| Ben moi je me contenterais de celle-là.....!
|| Et je consacrerais mon énergie/temps à d'autres trucs
bcp plus

|| fondamentaux...
||
|| AV


.



Avatar
géjoun.
Dans son élan, Modeste nous a écrit:
| Bonjour GD aussi ;-)))
| comme je le notifiais dans ma réponse précédente :
| Traduction partielle de :
| http://www.j-walk.com/ss/excel/tips/tip23.htm


Oui, là, pour le coup, ça dépasse un peu mes compétences...

A la base, aprés avoir regardé dans les archives du groupe et rien trouvé
qui me convenait, je pensais, vu que comme beaucoup j'ai pas encore les yeux
de superman, que c'était une fonction toute bête ce que je demandais (voire
une fonction directement intégré à excel que je connaissais pas) : je
suppose que je suis pas le seul, lors d'une lecture horizontale, à arriver à
mélanger les lignes d'un tableau lorsque celui ci à beaucoup de colonnes
mais apparement, même si je suis pas le 1er à avoir posé ce sujet, et il n'y
a toujours pas eu de solutions 'satisfaisantes' trouvées ('satisfaisantes
'dans le sens ou ça ne 'gèle' pas la fonction undo d'excel par exemple, et
que ça permet de travailler sans trop de galère avec; parce que je veux bien
effacer le contenu d'1 cellule directement dans la barre de formule comme le
dis AV: je suis plus à une bricole prés; mais lorsque je fais la somme sur
une colonne, que ça me la reporte sur toutes les colonnes, c'est pas top non
plus, et si il faut que je resuive toutes mes colonnes pour effacer toutes
les sommes dans la barre de formule, là, vaut mieux que je reprenne direct
le crayon à papier, la gomme et la feuille de papier)...

Alors je crois que je vais abandonner l'idée de cette fonction, et continuer
à me perdre dans mes chiffres ;-)

Merci quand même!

--

Géjoun.

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