Macro pour modéliser des flux et les actualiser

Bonjour à tous !

Mon objectif est de matérialiser des flux sur une carte à l’aide de flèches d’épaisseur variable selon une valeur. Sachant que les « trajectoires » des flux sont toujours identiques, c’est leur valeur qui change.

Par exemple j’imagine placer manuellement (et garder fixe) une flèche d’un point A vers un point B et que son épaisseur dépende de la valeur d’une cellule (valeur allant de 100 à 100.000, la carte est très grande).

Il y aurait beaucoup de conditions différentes et énormément de flux représentés, c’est pourquoi j’aimerai pouvoir facilement actualiser les données : que la flèche reste en place, mais que son épaisseur change juste en modifiant la valeur dans la cellule correspondante.

Je suis loin d’être un pro d’Excel, j’utilise la version 2007.

D’avance, merci pour vos réponses et bonne journée !

Bonjour,

Pour espérer bénéficier d'une aide tu dois y mettre un petit peu du tien ... Par exemple joindre les débuts de ton projet ... Carte, flèche, ... le forum ne peux pas tout deviner !

Cordialement,

Désolé j'ai voulu faire court pour ne pas noyer dans les détails !

Voici la carte avec les flux : Blain est le site de départ, j'ai placé les flèches manuellement, je voudrai que l'épaisseur des flèches corresponde automatiquement aux valeurs dans les cellules (que je vais régulièrement modifier).

carte excel

Voici un micro aperçut des données, je voudrai par exemple changer la valeur du volume du flux de Blain vers Notre Dame et que cela modifie directement l'épaisseur de la flèche (sans changer sa position).

valeur excel

J'espère être davantage clair !

Bonjour à tous,

J'arrive un peu a avancer sur mon problème : j'ai trouvé une macro pour créer des flèches dont la largeur dépend de la valeur.

Mais je n'arrive pas à faire que l'épaisseur de la flèche s'actualise si je change la valeur dans la cellule correspondante (sachant que je ne veux pas que la flèche se déplace).

La macro utilisée est la suivante :

Dim a, b, c, d

a = Selection.Left

b = Selection.Top

c = Selection.Value

d = Selection.Address

If c = 0 Then

MsgBox "Cell Selected had No Value"

Exit Sub

End If

ActiveSheet.Shapes.AddLine(a, b, a + 20, b).Select

Selection.ShapeRange.Line.Weight = c * 0.1

Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle

Range(d).Select

End Sub

Je vous remercie d'avance !

Bonjour,

pour faire ce que tu veux faire, il faut utiliser une macro événementielle "worksheet_change".

et y exécuter

l'instruction

Selection.ShapeRange.Line.Weight = c * 0.1

après avoir mis la valeur correcte dans c.

le problème est de retrouver la flèche qui correspond à la donnée modifiée. une manière de faire serait de sauver le nom de la flèche au moment de sa création et de le lier aux données.

Sans en savoir plus sur tes données, ni sur tes macros, difficile de t'aider davantage.

Désolé j'ai surement du mal à exprimer clairement mes idées^^

Avec la macro que j'ai trouvé, j'arrive bien a construire une flèche à partir des données (le tonnage d'un transfert de blé par exemple comme sur le tableau de données que j'ai joint). Plus le tonnage est important, plus la flèche est épaisse. Jusqu'ici tout va bien, je construis ma flèche, je la place manuellement sur ma carte (que j'ai jointe dans un post précédant) et c'est parfait.

L'étape suivante que je n'arrive pas à résoudre, c'est que si je veux visualiser un transfert d'orge par exemple, qui suit le même trajet que précédemment (la flèche est donc bien placé), mais qui a un tonnage différent, je voudrai que juste en changeant la valeur dans la cellule lié à la flèche, celle-ci change d'épaisseur automatiquement (et qu'elle ne se déplace pas).

L'objectif est donc en gros que je link des données de tonnage a des flèches, ces flèches je les place manuellement sur ma carte, et que en changeant les données de tonnage (par exemple quand je veux étudier une autre marchandise) l'épaisseur des flèches change pour mettre en évidence où sont les gros flux.

J’espère être compréhensible cette fois !

Merci d'avance

Bonjour,

ce que tu as réexpliqué correspond tout-à-fait à ce que j'avais compris.

Ce que j'ai essayé de t'expliquer c'est que pour pouvoir modifier la flèche qui correspond au trajet pour lequel tu as modifié le tonnage, il faut pouvoir retrouver la flèche (shape) qui correspond au trajet.

ce qu'il faut faire

au moment où tu crées la flèche, tu mets son nom dans une cellule liée au trajet, tout comme les tonnages.

après quand tu modifies le tonnage pour un trajet, tu utilises le nom de la flèche associée pour retrouver le shape correspondant et ainsi pouvoir modifier son épaisseur.

quelque chose du genre

  • une procédure pour créer les flèches (qui a déjà été exécutée dans le fichier joint)
  • une procédure événementielle qui change la taille de la flèche sur base de son nom et en fonction du tonnage (tu peux t'amuser à changer le tonnage en colonne F)

Super merci beaucoup c'est ce que je voulais faire!

Un dernier petit détail cependant concernant l'actualisation des données :

Je voudrai pouvoir les actualiser en faisant un simple copié collé d'une colonne entière (j'ai trop de données pour les changer manuellement une par une), je voudrai donc pouvoir coller une colonne de données sur la colonne F (du dossier que tu m'a joint) et que cela actualise toutes les flèches !

Merci beaucoup pour votre aide en tout cas

bonjour,

voici une version adaptée pour le copier-coller

Rechercher des sujets similaires à "macro modeliser flux actualiser"