Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

BARYCENTRE

Chrisnut

XLDnaute Nouveau
Bonsoir,

J'ai un projet à réaliser et une recherche d'un barycentre pour positionner un entrepôt.
Des flux au départ du 33 et au départ du 60.
Auriez vous une idée sur un mode de calcul à adapter par rapport à mes données ci jointes ?
 

Pièces jointes

  • Barycentre.xlsx
    313.8 KB · Affichages: 108

Chrisnut

XLDnaute Nouveau
Bonjour,

Merci JHA

Visiblement, il faut rajouter les X et Y figurant sur la carte de France de la méthode et pondérer avec mes quantités dans mon cas.

Déjà moins simple mais c'est seulement 95 départements.
 

job75

XLDnaute Barbatruc
Bonjour Chrisnut, JHA, Jean-Claude,

Il faut du VBA et utiliser la définition mathématique d'un barycentre.

O étant l'origine des coordonnées de la feuille, A B C etc... les centres des images des départements, le barycentre G sera déterminé par l'équation vectorielle OG = (n1OA + n2OB + n3OC + …)/(n1 + n2 + n3 + …)

n1 n2 n3...
étant les coefficients de pondération (ici les quantités) de chaque point/département.

Pour programmer ça il faut faire une bonne petite gymnastique avec les images.

A+
 

job75

XLDnaute Barbatruc
Re,

Oui Jean-Claude on pourrait se passer de la carte (et du VBA) avec les coordonnée GPS des centres des départements.

Mais puisqu'il y a une carte c'est bien plus parlant, on positionne la petite image "Barycentre".

Voyez le fichier joint avec cette macro qui se déclenche par double-clic en A1 ou A101 :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [A1,A101]) Is Nothing Then Exit Sub
Dim P As Range, i As Byte, image As Shape, X#, Y#
Cancel = True
Application.Goto Target, True 'cadrage
Set P = Target.CurrentRegion
Shapes("CarteFrance").Top = P.Rows(2).Top
For i = 3 To P.Rows.Count
  Set image = Shapes(P(i, 1))
  X = X + P(i, 4) * (image.Left + image.Width / 2)
  Y = Y + P(i, 4) * (image.Top + image.Height / 2)
Next
X = X / Application.Sum(P.Columns(4))
Y = Y / Application.Sum(P.Columns(4))
Set image = Shapes("Barycentre")
image.Left = X - image.Width / 2
image.Top = Y - image.Height / 2
End Sub
PS : Côte de Nacre JC.

A+
 

Pièces jointes

  • Barycentre(1).xlsm
    180.5 KB · Affichages: 78

job75

XLDnaute Barbatruc
Re,

Pendant que j'y suis... J'ai ajouté un 3ème tableau pour déterminer le barycentre de la Basse-Normandie.

Fichier (2).

A+
 

Pièces jointes

  • Barycentre(2).xlsm
    181.6 KB · Affichages: 85

job75

XLDnaute Barbatruc
Re,

Une petite précision peut-être utile puisque vous mentionnez dans vos tableaux un "LIEU DEPART".

Dans un espace à 2 ou 3 dimensions (voire dans l'espace-temps) l'emplacement du barycentre ne dépend pas de l'origine des coordonnées.

A+
 

job75

XLDnaute Barbatruc
Re,

La macro traite toutes les images (Shapes) dont les noms sont en colonne A du tableau étudié.

Le centre de chaque image a pour coordonnées :

- par rapport au bord gauche de la feuille (origine des abscisses) : image.Left + image.Width / 2

- par rapport au bord supérieur de la feuille (origine des ordonnées) : image.Top + image.Height / 2

Renseignez-vous si vous ne savez pas ce que sont les propriétés Left Top Width Height.

A+
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…