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 :

Choix aléatoire dans liste avec critères entre variables


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    INGENIEUR
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : INGENIEUR

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Choix aléatoire dans liste avec critères entre variables
    Bonjour à tous, je m'appelle Maxime. C'est mon premier poste sur ce forum.
    Malgré mes recherches je n'ai pas réussi à trouver une réponse à mon problème.

    Explication :

    J'ai une liste de 12 valeurs
    Je doit trouver aléatoirement 2 valeurs (X et Y) dans cette liste pour chaque ligne d'un tableau (150 lignes - 3 colonnes X et Y et Z=MOYENNE(X;Y))

    Mais le choix aléatoire doit respecter plusieurs conditions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (X+Y)/2>30
    ABS(X-Y)<2
    MOYENNE(Z1;Z150)>32
    ECARTYPE.STANDARD(Z1:Z150)>1,5
    Donc à chaque fois, Excel doit choisir les 2 valeurs qui respectent aux mieux les 2 conditions (Doublons ok mais si c'est contrôlable il faudrait éviter que les mêmes valeurs pour X et Y reviennent en permanence sur la même ligne)

    Je pense qu'il faudrait peut être créer un choix aléatoire dans la colonne X et après que Excel choisisse l'autre variable Y suivant les 2 conditions.

    Je vous remercie d'avance pour votre aide

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    For i = 1 To 100
    rec:
    x = Round((Rnd * 100))
    y = Round((Rnd * 100))
    If (x + y) / 2 < 30 Then GoTo rec
    If Abs(x - y) > 2 Then GoTo rec
    Debug.Print "x =" & x & " y  = " & y
    Debug.Print "abs " & Abs(x - y)
    Next
    End Sub
    pour les doublons tu peut utiliser une collection
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour


    Autant il est toujours envisageable de procéder à un tirage aléatoire respectant des conditions n'intervenant qu'à anteriori (tel et le cas de tes deux premières conditions ( somme > 60 et écart différence < 2) , autant il est déraisonnable d'envisager la prise en compte de conditions intervenant à posterioiri (la moyenne, par exemple) et qui concernent non un tirage, mais un ensemble de tirages.
    Il parait en effet clair que cette moyenne, non "acceptable" lors du tirage de rang n, variera forcément lors des prochains tirages et pourra le devenir lors du tirage n + x
    Il parait également clair qu'une moyenne non "acceptable" lors du tirage de rang n peut le devenir en supprimant un ou plusieurs tirages antérieurs (et de différentes manières possibles)
    Voilà de quoi te conduire à mieux cerner les choses
    Bonne journée
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Salut.

    12 valeurs à prendre par paires permet 144 combinaisons différentes.

    Si tu élimines celles qui ne rentrent pas dans tes conditions, tu en auras forcément moins.

    La question est donc: Comment pouvoir remplir 150 lignes avec un nombre inférieur de possibilités?

    Ma question est donc: A quoi sert ce que tu es en train de tenter de réaliser?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Pierre
    66 combinaisons seulement de deux éléments parmi 12.
    Il est aisé d'en dresser la collection épurée de celles qui ne répondent pas aux deux conditions de base (somme > 60 et différence < 2)
    Mais :
    - je "vois" mal ce qu'il entend par "choix aléatoire" sur ses 150 lignes. Veut-il dire qu'il tire aléatoirement 150 fois l'une des n combinaisons "acceptables" (celles demeurées dans la collection) ? (ce qui expliquerait le mot "doublons" qu'il utilise)
    - je "vois" encore plus mal l'application de la condition "moyenne" qui, elle impliquerait d'autres interventions à posteriori, interventions tendant :
    - soit à supprimer certains résultats pour respecter cette moyenne
    - soit, s'il veut avoir toujours 150 résultats, à entreprendre d'autres tirages aléatoires - eux alors adroitement ciblés - jusqu'à satisfaction totale ...

    Cet exercice m'aurait assez intéressé et je regrette beaucoup que des circonstances indépendantes de ma volonté ne me permettent pas d'y consacrer du temps
    Amitiés

    EDIT : à moins, bien évidemment, qu'aient mal été exprimées ces conditions :
    150 lignes - 3 colonnes X et Y et Z=MOYENNE(X;Y))
    (qui pour moi veut dire (X + Y)/2 sur chaque ligne)
    ......
    MOYENNE(Z1;Z150)>32
    (qui pour moi veut dire la moyenne du total des lignes de la colonne Z, donc des moyennes figurant en colonne Z)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

Discussions similaires

  1. Choix aléatoire dans une liste
    Par Julien Bodin dans le forum Général Java
    Réponses: 2
    Dernier message: 28/09/2009, 15h25
  2. Réponses: 3
    Dernier message: 18/10/2008, 00h58
  3. Suppression et Création table avec critère de variable
    Par stephanies_1977 dans le forum VBA Access
    Réponses: 4
    Dernier message: 12/03/2008, 14h53
  4. Choix aléatoire dans un tableau
    Par jacko2 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 04/03/2008, 11h37
  5. Requête avec critère entre deux valeurs
    Par adrien.gendre dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/08/2007, 13h21

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