VBA Générer une matrice i*j de données

  • Initiateur de la discussion Initiateur de la discussion Nnaks
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Nnaks

XLDnaute Nouveau
Bonjour à tous chers amis internautes,

Dans le cadre d'un projet universitaire, je dois développer un programme assez complexe destiné à être utilisé pour résoudre des problèmes d'optimisation de transport en logistique.
Je cherche pour commencer à demander à l'utilisateur de saisir un certain nombre de données:
1) Les couts cij du client i à l'usine j avec 20<i<40 et 10<j<20 donc une matrice de taille (i,j) décidé par l'utilisateur.
2) Générer une matrice de la même taille avec des données aléatoires comprises entre 10 et 50 correspondant à la distance de transport du client i à l'usine j : tij

Je vous prie de bien vouloir m'aider si vous avez des idées.
Toutes partition VBA sera la bienvenue.

Merci d'avance.

Nnaks
 
Re : VBA Générer une matrice i*j de données

Bonjour Nnaks, Gardien de phare, pierrejean,

Bon, j'avais cru comprendre mais j'ai encore lu trop vite (oublié le VBA 🙁).

Je joins malgré tout le fichier que j'avais fait (par formule)

En B2, saisir la valeur de I.
En D2, saisir la valeur de J.
 

Pièces jointes

Re : VBA Générer une matrice i*j de données

Bonjour à vous Gardien de Phare, pierrejean, mapomme

Tout d'abord, je vous remercie énormément pour vous être penché sur le sujet et pour le temps que vous y avez accordé.
Gardien de phare, ce que tu m'as envoyé est excellent, ce la dit j'aurai souhaité que comme dans le fichier de pierrejean et de mapomme, on ait une précision des matrices i et j, c'est à dire un tableau contenant les données aléatoires fournies:
ex: Usine2
Client1 32

Pierrejean, ce que tu m'as proposé est aussi excellent, cela dit, comment puis je changer le nombre d'usines et de clients si je le souhaite, et surtout comment proposer un msgbox ou un formulaire à l'utilisateur pour qu'il sélectionne sa valeur i et sa valeur j.

Mapomme, c'est exactement ce que je recherchais, je n'ai juste pas compris comment tu as fait, c'est impressionnant 🙂
Je voudrai savoir, si je veux que i inclue la valeur 20 et 40 c'est dire 20=<i=<40 et 10=<j=<20 comment puis je faire?
Je te remercie pour l'aide fournie.

Je vous remercie une fois de plus pour votre aide. Ce site est vraiment génial.
 
Re : VBA Générer une matrice i*j de données

Bonjour à tous,

Correction de mon post précédent #4

Avec l'hypothèse que la distance de I à J est la même que la distance de J à I (c'est une hypothèse raisonnable), la matrice des distances doit être 'presque symétrique' (symétrique si elle est carrée)

J'ai rectifié les formules des distances pour ce faire.
 

Pièces jointes

Re : VBA Générer une matrice i*j de données

Re tout le monde,

mapomme, j'aimerais juste que tu m'explique comment tu as fait pour définir la cellule de commande de i et j en B2 et D2.
Si je souhaite modifier les bornes, comment puis j faire s'il te plait?
Merci encore.
 
Re : VBA Générer une matrice i*j de données

Bonjour à tous,
2 eme Correction de mon post précédent #4

1) j'ai complété la zone non carrée de la matrice des distances par des distances aléatoires.

2) j'ai modifié les mises en forme conditionnelles de la matrice des distances pour colorer en jaune la partie 'symétrique'

La touche F9 génére de nouvelles valeurs aléatoires.

Si on veut figer les valeurs aléatoires, copier la feuille et la coller sur une autre par collage spécial 'Valeur'.
 

Pièces jointes

Re : VBA Générer une matrice i*j de données

Re tout le monde,

mapomme, j'aimerais juste que tu m'explique comment tu as fait pour définir la cellule de commande de i et j en B2 et D2.
Si je souhaite modifier les bornes, comment puis j faire s'il te plait?
Merci encore.

Je ne suis pas certains d'avoir bien compris la question.

J'ai nommé les deux cellules B2 et D2 respectivement Ind_i et Ind_j.
Ensuite j'ai utilisé ces noms pour définir les formules des colonnes C et X et pour définir les formules de la ligne 3.

Pour limiter les valeurs prises par i, se placer sur la cellule B2, puis utiliser le menu "Données / Validation des données".
J'ai utilisé une formule ( =ET(B1>20;B1<40) ) pour limiter les valeurs. Il suffit de modifier les bornes et aussi modifier le message de saisie puis de valider. Idem pour j.
 
Re : VBA Générer une matrice i*j de données

Explications très claires. Je te remercie énormément mapomme, et merci aussi pour ta patience. Merci aussi à pierrejean et Gardien de phare.

J'espère arriver au bout de ce projet :/ VBA.

A très bientôt j'espère.
 
Re : VBA Générer une matrice i*j de données

Bonsoir à tous,

Je voudrai savoir, si je veux que i inclue la valeur 20 et 40 c'est dire 20=<i=<40 et 10=<j=<20 comment puis je faire?

Pour compléter ma réponse précédente, le fichier modifié. J'ai aussi simplifié les mise en forme conditionnelles du tableau des distances (V4).

Nota: Décidément c'est pas mon jour ! Je suis parti sur une matrice des distances entre sites et non pas entre clients et usines. Donc la matrice n'a aucune raison d'être symétrique. Les formules du tableau des distances s'en trouvent donc simplifiées ainsi que la mfc (v5)
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
795
Retour