IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Tri et sélection random de distances [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par défaut Tri et sélection random de distances
    Bonjour,

    Alors je ne m'y connais pas du tout en Macros Excel alors je viens poser mon problème auprès d'experts

    J'ai un fichier excel tout simple avec des trajets en col A et les distances en col B, je dois renvoyer un ensemble de trajets aléatoires en fonction d'une distance entrée par l'utilisateur à plus ou moins 10 près.

    C'est à dire en entrant 320 par exemple le fichier pourra me sortir:
    - Trajet 3 : 120
    - Trajet 7 : 70
    - Trajet 8 : 120

    Ou bien
    - Trajet 1 : 280
    - Trajet 6 : 45

    Auriez-vous quelque chose à me proposer, ou au moins des pistes de fonction qui pourraient m'être utiles?

    Merci d'avance

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    C'est plus un problème d'algorithme que de VBA. On pourra bien sûr t'aider un peu pour le VBA, mais pour la partie algorithme, tu as déjà pensé à une solution ?

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par défaut
    J'ai pensé à ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Select distances < donnée
    envoyer cell + valeur dans Array
     
    Tant que (Array.MaxValue + Array.MinValue > donnée + 10)
    Supprimer Array.MaxValue de Array
    Fin Tant que
     
    Array finalCells
     
    Select random valeur in Array = rdm1
    int test = rdm1
     
    finalCells.add(rdm1.cell.line)
     
    Tant que (test < donnée + 10)
    rdm2 = Select random valeur in Array (sans rdm1) where (donnée - rdm1 < rdm2 + 10)
    test += rdm2
    finalCells.add(rdm2.cell.line)
    Fin Tant que
     
    retourner ColonneA.line(finalCells) + test
    Ca me semble correspondre à mon besoin, j'espère que c'est suffisament clair :s

  4. #4
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Je peux me tromper, mais je n'ai pas l'impression que ça fasse ce que tu veux.

    Déjà, oublions pour le moment le coté aléatoire. Une première étape est de trouver l'algorithme qui permet de trouver toutes les combinaisons de trajet qui font valeurCible +- 10 km.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 220
    Par défaut
    oui ok je vois ce que tu veux dire, j'ai pensé à ceci alors:

    Par contre je ne sais pas si c'est faisable comme je ne connais pas du tout VBA et la portée des variables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Fonction MAIN:
     
    int TotalFinal
     
    Array Valeurs = tableau associatif clé=ligne, valeur=valeur (ensemble des distances)
     
    Array Final = tableau associatif clé=ligne, valeur=valeur (vide)
     
    foreach val in Valeurs
    Vider Final
    function(Valeurs, val, donnée)
    ecrire Final et TotalFinal
    fin foreach
     
    fin Main
     
     
    function(Array Vals, int Actual, int donnée)
     
    foreach(valeur in Vals)
    Array temp
     
    si((valeur + Actual < donnée + 10) AND (valeur + Actual > donnée - 10))
    Actual += valeur
    temp.add(valeur)
    TotalFinal = Actual
    Final = temp
     
    sinon si(valeur + Actual < donnée + 10 - Vals.MinValue)
    Actual += valeur
    temp.add(valeur)
    Supprimer valeur dans Vals
    function(Vals, Actual, donnée)
     
    fin si
    fin foreach
    fin function
    Ca pourrait aller pour la recherche des trajets à +ou- la donnée entrée?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 54
    Dernier message: 09/03/2013, 15h27
  2. Réponses: 3
    Dernier message: 20/10/2009, 10h47
  3. Tri par sélection du minimum récursif
    Par thechieuse dans le forum Pascal
    Réponses: 2
    Dernier message: 05/11/2008, 16h03
  4. problème tri par sélection
    Par scary dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 19/05/2008, 11h40
  5. Améliorer tri par sélection
    Par katrena99 dans le forum Pascal
    Réponses: 8
    Dernier message: 05/03/2007, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo