Insérer objet

bonjour j'ai une carte et je voudrais insérer une flèche (montante, descendante ou stable)...A partir de l'onglet "données" la colonne H permet de définir le sens de la flèche..avec une macro est il possible de faire intervenir la flèche qui faut selon les données (exemple : metz) les flèches sont en arrière plan et je veux faire intervenir celle en hausse;

MERCI PAR AVANCE

11carte-objet.xlsm (102.49 Ko)

Salut Mel !

Oui c'est possible

J'ai pas compris quelles sont les conditions pour que tes flèches apparaissent ou non (vis-à-vis de ta feuille Données), mais par exemple, vue quelles sont cachées par la carte tu peux les mettrent au premier plan via :

ActiveSheet.Shapes.Range(Array("Flèche4")).Select
Selection.ShapeRange.ZOrder msoBringToFront

Flèche 4 est ta flèche qui est en diagonale vers le haut

Avec ce code, elle passe au premier plan, mais avec celui-ci dessous, elle repasse en arrière plan :

ActiveSheet.Shapes.Range(Array("Flèche4")).Select
Selection.ShapeRange.ZOrder msoBringToBack

(Ou alors tu a la méthode du Visible = False ou Visible = True que je préfère :p)

Restant à ta dispo si tu a des questions !

les conditions pour qu'elles apparaissent dépendent de l'onglet "donnée" et c'est la différence entre la colonne C et la colonne D et je veux les faire apparaitre pour les 4 premières villes par exemple ! après ca m'embête de les cacher sur toutes les villes que je désire...je préfère les mettre dans un autre onglet et qu'elles s'affichent sur la carte selon les données (pour les 4 première par exemple)

merci encore

Re- Mel,

Merci pour tes précisions, j'ai compris où tu voulais en venir

Par contre :

je préfère les mettre dans un autre onglet et qu'elles s'affichent sur la carte selon les données

C'est ce compliquer la vie :0

Pour moi il vaux mieux avoir tes images en Visible = False dans l'onglet Carte, et les rendre visibles et les positionner au besoin.

Déjà voilà un code qui te permet de positionner une image sur Excel :

Sub Moove()
Dim Lig As Long, Col As Long
Dim Colonne As String
Lig = 1
Col = 10
Colonne = Split(Columns(Col).Address(ColumnAbsolute:=False), ":")(1)
'La ligne ci-dessous gère la ligne: Lig(1) = Ligne 1 ; Lig(1) = Ligne 2 etc...
Feuil1.Shapes("Right Arrow 1").Top = Range("A" & Lig).Top
'La ligne ci-dessous gère la colonne: Col(1) = Colonne A ; Col(2) = Colonne B etc...
Feuil1.Shapes("Right Arrow 1").Left = Range(Colonne & "1").Left
End Sub

Dans l'attente de te lire pour parler méthodo :p

Je reviens à la charge avec ton fichier modifié !

Je te laisse tester pour les villes de Strasbourg, Nancy et Metz

En gros, si tu modifie une cellule en colonne D ou E alors tes flèches vont s'orienter automatiquement sur ta carte !

12pour-mel.xlsm (105.06 Ko)

merci Juice cela a l'air de marcher...alors j'ai essayé de le transposer sur mon fichier mais pour l'orientation des flèches pour les 3 premières villes cela n'a pas fonctionné..je te joins le fichier. Par contre c'est vrai que je vais faire apparaître les flèches directement sur la carte (les 3 premières villes suffiront)...peut être faut-il les cacher (mettre en arrière plan les flèches) ?

en tout les cas merci pour ce que tu as fais !

6cartes-couleur.xlsm (104.86 Ko)

Re- Mel

en tout les cas merci pour ce que tu as fais !

Ravie que sa te convienne !

[...] cela n'a pas fonctionné..

Je vais te faire passer sa sur ton fichier mais du coup :

Par contre c'est vrai que je vais faire apparaître les flèches directement sur la carte (les 3 premières villes suffiront)...peut être faut-il les cacher (mettre en arrière plan les flèches) ?

Dans quelle condition veux tu qu'une flèche apparaisse/sois cacher ou non ?

les flèches seront sur les 3 principales villes..elles devront être cachés (en arrière plan) puis ensuite je fais tourner la macro pr colorier la carte selon les données et la légende (ca c ok) et là je fais tourner la macro qui me permettra de faire apparaître les flèches soit en hausse, stable ou en baisse...Merci Juice d'avoir pris du temps je t'offrirai bien un café ! A+

Re- Mel!

Merci Juice d'avoir pris du temps je t'offrirai bien un café ! A+

A l'occasion xD

Du coup, je t'ai simplifier la macro par :

Sub Modif()
Dim Flèche As String
Dim x As Long
For x = 3 To Range("B" & Rows.Count).End(xlUp).Row
    If Cells(x, 8) <> "" Then
        Flèche = Cells(x, 8)
        If Cells(x, 3) > Cells(x, 4) Then Sheets("Carte").Shapes(Flèche).Rotation = 135
        If Cells(x, 3) = Cells(x, 4) Then Sheets("Carte").Shapes(Flèche).Rotation = 90
        If Cells(x, 3) < Cells(x, 4) Then Sheets("Carte").Shapes(Flèche).Rotation = 45
        Sheets("Carte").Shapes(Flèche).Visible = True
    End If
Next
End Sub

Plus besoin de la colonne qui affichait "Haut" / "Bas" / "Neutre"

Comme tu peux le voir, il y a une ligne de code [...]

Sheets("Carte").Shapes(Flèche).Visible = True

[...] qui fais apparaître les flèches, et je t'ai rajouté une procédure pour les faire disparaître :

Sub Caché_Mes_Flèches()
Dim x As Long
For x = 1 To Sheets("Carte").Shapes.Count
    If Sheets("Carte").Shapes(x).Name Like "Flèche*" Then Sheets("Carte").Shapes(x).Visible = False
Next
End Sub

La condition pour cacher une flèche est que le nom du Shape commence par "Flèche" ! Faut y faire attention ;D

Je te remet ton fichier ci-joint et reste à ta dispo

9pour-mel-2.xlsm (105.82 Ko)

oh super cela fonctionne...juste une dernière chose on a trois flèches (4, 5 et 6)...je voulais savoir si je peux définir mon objet en l'appelant juste "Flèche" et qu'il puisse me l'orienter selon que ce soit en hausse en baisse ou stable cela est-il possible...

j'imagine que dans la colonne H le nom des flèches a été écrit à la main..car si j'écris le mot "Flèche" dans la colonne H cela ne marchera pas...il faut que je différencie flèche4 de flèche5 de flèche6. merci pour ces précisions...

Mel,

.je voulais savoir si je peux définir mon objet en l'appelant juste "Flèche"

Aaaah là tu veux le beurre, l'argent du beurre et l'popotin (normalement on dit autre chose mais c'est un Forum tout public ici!) de la crémière xD

Si tu appelais toutes tes flèches, juste "Flèche" sans identificateur unique à côté (1; 2; 3 etc...), alors comment la procédure/macro va reconnaître la flèche à orienter ?

Il y aurait bien une autre manière de faire, mais crois moi que sa t’embêterais plus que d'avoir juste à écrire à la main les noms de tes Shapes et des les faire correspondre à la bonne ville :p

Restant à disposition si tu a d'autre question

non non très bien merci beaucoup pour ta contribution...sincèrement un grand MERCI !!!

Rechercher des sujets similaires à "inserer objet"