OVH Cloud OVH Cloud

Tracer automatiquement des lignes avec ".AddLine"

6 réponses
Avatar
Jean bidule
Bonjour le Forum,

j'aimerais pouvoir tracer automatiquement une grande croix à travers une
sélection de cellules à l'aide de la fonction ".AddLine"

Si j'ai par exemple un range de cellules nommé "Frigo 1" (E5:I12),
j'aimerais mettre une croix dans ce range:
une ligne qui va de la cellule E5 et qui s'arrete en I12,
et ensuite une ligne qui va de la cellule I5 et qui s'arrete en E12

Y-a-t-il moyen de tracer cela automatquement lorsque la cellule D5 est égale
à 323 (par exemple) ?

Merci beaucoup à vous de votre attention
Jean

6 réponses

Avatar
papou
Bonjour
Clic droit sur l'onglet de ta feuille puis visualiser le code et coller les
lignes suivantes :
(A adapter, note bien que la feuille est identifiée ici par son codename :
Feuil1)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Trait1 As Shape
Dim Trait2 As Shape
If Target.Address = "$D$5" Then
If Target.Value = 353 Then
Set Trait1 = Me.Shapes.AddLine(240#, 51#, 540#, 153#)
Set Trait2 = Me.Shapes.AddLine(240#, 51#, 540#, 153#)
Trait2.Flip msoFlipVertical
Else
On Error Resume Next
For Each trait In Feuil1.Shapes
trait.Delete
Next trait
End If
End If
End Sub

Cordialement
Pascal

"Jean bidule" a écrit dans le message de
news:41a2eb47$0$30708$
Bonjour le Forum,

j'aimerais pouvoir tracer automatiquement une grande croix à travers une
sélection de cellules à l'aide de la fonction ".AddLine"

Si j'ai par exemple un range de cellules nommé "Frigo 1" (E5:I12),
j'aimerais mettre une croix dans ce range:
une ligne qui va de la cellule E5 et qui s'arrete en I12,
et ensuite une ligne qui va de la cellule I5 et qui s'arrete en E12

Y-a-t-il moyen de tracer cela automatquement lorsque la cellule D5 est
égale

à 323 (par exemple) ?

Merci beaucoup à vous de votre attention
Jean




Avatar
Jean bidule
Ok Pascal

je vais essayer d'adapter ca à mes besoins

Un grand merci et bonne journée
Jean


"papou" <çestpasbon@çanonplus44.fr> a écrit dans le message de news:

Bonjour
Clic droit sur l'onglet de ta feuille puis visualiser le code et coller
les
lignes suivantes :
(A adapter, note bien que la feuille est identifiée ici par son codename :
Feuil1)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Trait1 As Shape
Dim Trait2 As Shape
If Target.Address = "$D$5" Then
If Target.Value = 353 Then
Set Trait1 = Me.Shapes.AddLine(240#, 51#, 540#, 153#)
Set Trait2 = Me.Shapes.AddLine(240#, 51#, 540#, 153#)
Trait2.Flip msoFlipVertical
Else
On Error Resume Next
For Each trait In Feuil1.Shapes
trait.Delete
Next trait
End If
End If
End Sub

Cordialement
Pascal

"Jean bidule" a écrit dans le message de
news:41a2eb47$0$30708$
Bonjour le Forum,

j'aimerais pouvoir tracer automatiquement une grande croix à travers une
sélection de cellules à l'aide de la fonction ".AddLine"

Si j'ai par exemple un range de cellules nommé "Frigo 1" (E5:I12),
j'aimerais mettre une croix dans ce range:
une ligne qui va de la cellule E5 et qui s'arrete en I12,
et ensuite une ligne qui va de la cellule I5 et qui s'arrete en E12

Y-a-t-il moyen de tracer cela automatquement lorsque la cellule D5 est
égale

à 323 (par exemple) ?

Merci beaucoup à vous de votre attention
Jean








Avatar
MichelB
Bonjour Papou

Alors là, CHAPEAU !

Assez obscure pour moi, cette macro. Début du trait, fin du trait, et
création de la croix,
mais alors, qu'est-ce qui crée Trait3 et Trait4 ?
Il n'en est pas question dans le code.
Aucune explication plausible dans l'aide qui puisse m'expliquer ce tour de
passe-passe !

Des éclaircissements seraient les bienvenus !
Merci de te pencher sur mon cas !
--
Salut
Michel ---- ;o)
Enlever _nospam pour me répondre





"papou" <çestpasbon@çanonplus44.fr> a écrit dans le message de news:

Bonjour
Clic droit sur l'onglet de ta feuille puis visualiser le code et coller
les
lignes suivantes :
(A adapter, note bien que la feuille est identifiée ici par son codename :
Feuil1)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Trait1 As Shape
Dim Trait2 As Shape
If Target.Address = "$D$5" Then
If Target.Value = 353 Then
Set Trait1 = Me.Shapes.AddLine(240#, 51#, 540#, 153#)
Set Trait2 = Me.Shapes.AddLine(240#, 51#, 540#, 153#)
Trait2.Flip msoFlipVertical
Else
On Error Resume Next
For Each trait In Feuil1.Shapes
trait.Delete
Next trait
End If
End If
End Sub

Cordialement
Pascal


Avatar
papou
Bonjour
Il n'y a absolument aucun mystère, désolé ;-)
J'ai utilisé l'enregistreur de macros et adpaté au besoin de notre ami !
Il suffit parfois de rester simple et d'utiliser les outils qui sont à
disposition dans Excel.
Cordialement
Pascal

"MichelB" a écrit dans le message de
news:
Bonjour Papou

Alors là, CHAPEAU !

Assez obscure pour moi, cette macro. Début du trait, fin du trait, et
création de la croix,
mais alors, qu'est-ce qui crée Trait3 et Trait4 ?
Il n'en est pas question dans le code.
Aucune explication plausible dans l'aide qui puisse m'expliquer ce tour de
passe-passe !

Des éclaircissements seraient les bienvenus !
Merci de te pencher sur mon cas !
--
Salut
Michel ---- ;o)
Enlever _nospam pour me répondre





"papou" <çestpasbon@çanonplus44.fr> a écrit dans le message de news:

Bonjour
Clic droit sur l'onglet de ta feuille puis visualiser le code et coller
les
lignes suivantes :
(A adapter, note bien que la feuille est identifiée ici par son codename
:


Feuil1)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Trait1 As Shape
Dim Trait2 As Shape
If Target.Address = "$D$5" Then
If Target.Value = 353 Then
Set Trait1 = Me.Shapes.AddLine(240#, 51#, 540#, 153#)
Set Trait2 = Me.Shapes.AddLine(240#, 51#, 540#, 153#)
Trait2.Flip msoFlipVertical
Else
On Error Resume Next
For Each trait In Feuil1.Shapes
trait.Delete
Next trait
End If
End If
End Sub

Cordialement
Pascal






Avatar
Jean bidule
Salut Pascal,

Ca fonctionne bien, mais je ne comprends pas encore la liaison entre
l'adresse d'une cellule et les chiffres à mettre dans la fonction .addLine
(les 240#, 51#, 540#, 153#).
As-tu une idée où je pourrais m'informer à ce sujet ?

Amitiés
Jean

"Jean bidule" a écrit dans le message de news:
41a30ab7$0$13460$
Ok Pascal

je vais essayer d'adapter ca à mes besoins

Un grand merci et bonne journée
Jean


"papou" <çestpasbon@çanonplus44.fr> a écrit dans le message de news:

Bonjour
Clic droit sur l'onglet de ta feuille puis visualiser le code et coller
les
lignes suivantes :
(A adapter, note bien que la feuille est identifiée ici par son codename
:
Feuil1)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Trait1 As Shape
Dim Trait2 As Shape
If Target.Address = "$D$5" Then
If Target.Value = 353 Then
Set Trait1 = Me.Shapes.AddLine(240#, 51#, 540#, 153#)
Set Trait2 = Me.Shapes.AddLine(240#, 51#, 540#, 153#)
Trait2.Flip msoFlipVertical
Else
On Error Resume Next
For Each trait In Feuil1.Shapes
trait.Delete
Next trait
End If
End If
End Sub

Cordialement
Pascal

"Jean bidule" a écrit dans le message de
news:41a2eb47$0$30708$
Bonjour le Forum,

j'aimerais pouvoir tracer automatiquement une grande croix à travers une
sélection de cellules à l'aide de la fonction ".AddLine"

Si j'ai par exemple un range de cellules nommé "Frigo 1" (E5:I12),
j'aimerais mettre une croix dans ce range:
une ligne qui va de la cellule E5 et qui s'arrete en I12,
et ensuite une ligne qui va de la cellule I5 et qui s'arrete en E12

Y-a-t-il moyen de tracer cela automatquement lorsque la cellule D5 est
égale

à 323 (par exemple) ?

Merci beaucoup à vous de votre attention
Jean












Avatar
papou
Re
Voici ce que dit l'aide de VBA :
AddLine , méthode
expression.AddLine(BeginX, BeginY, EndX, EndY)
expression Obligatoire. Expression qui renvoie un objet Shapes.

BeginX , BeginY Argument de type Single obligatoire. Position (en
points) du début de la ligne par rapport au coin supérieur gauche du
document.

EndX , EndY Argument de type Single obligatoire. Position (en points) de
la fin de la ligne par rapport au coin supérieur gauche du document

Cordialement
Pascal

"Jean bidule" a écrit dans le message de
news:41a31f33$0$31958$
Salut Pascal,

Ca fonctionne bien, mais je ne comprends pas encore la liaison entre
l'adresse d'une cellule et les chiffres à mettre dans la fonction .addLine
(les 240#, 51#, 540#, 153#).
As-tu une idée où je pourrais m'informer à ce sujet ?

Amitiés
Jean

"Jean bidule" a écrit dans le message de news:
41a30ab7$0$13460$
Ok Pascal

je vais essayer d'adapter ca à mes besoins

Un grand merci et bonne journée
Jean


"papou" <çestpasbon@çanonplus44.fr> a écrit dans le message de news:

Bonjour
Clic droit sur l'onglet de ta feuille puis visualiser le code et coller
les
lignes suivantes :
(A adapter, note bien que la feuille est identifiée ici par son
codename



:
Feuil1)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Trait1 As Shape
Dim Trait2 As Shape
If Target.Address = "$D$5" Then
If Target.Value = 353 Then
Set Trait1 = Me.Shapes.AddLine(240#, 51#, 540#, 153#)
Set Trait2 = Me.Shapes.AddLine(240#, 51#, 540#, 153#)
Trait2.Flip msoFlipVertical
Else
On Error Resume Next
For Each trait In Feuil1.Shapes
trait.Delete
Next trait
End If
End If
End Sub

Cordialement
Pascal

"Jean bidule" a écrit dans le message de
news:41a2eb47$0$30708$
Bonjour le Forum,

j'aimerais pouvoir tracer automatiquement une grande croix à travers
une




sélection de cellules à l'aide de la fonction ".AddLine"

Si j'ai par exemple un range de cellules nommé "Frigo 1" (E5:I12),
j'aimerais mettre une croix dans ce range:
une ligne qui va de la cellule E5 et qui s'arrete en I12,
et ensuite une ligne qui va de la cellule I5 et qui s'arrete en E12

Y-a-t-il moyen de tracer cela automatquement lorsque la cellule D5 est
égale

à 323 (par exemple) ?

Merci beaucoup à vous de votre attention
Jean