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 :

VBA - Répartition aléatoire de groupes de cellules sous conditions [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Points : 7
    Points
    7
    Par défaut VBA - Répartition aléatoire de groupes de cellules sous conditions
    Bonjour,

    J'ai repris un projet d'un ancien étudiant sur Excel... étant novice en langage VBA j'essaye tant bien que mal de comprendre le code pour pouvoir le modifier à ma façon, mais je n'y arrive pas du tout... Dans mon excel, j'ai 7 groupes de valeurs que je parviens à répartir de manière aléatoire grâce au code VBA dans 4 colonnes. Seulement voilà, à présent, j'aimerais que cette répartition respecte certaines conditions. Mes groupes de valeurs vont de 0 à 227 et n'excèdent pas 7 lignes. J'aimerais qu'ils se répartissent dans mes 4 colonnes tout en sachant que la somme de chaque ligne ne dépasse pas 4x90. Par exemple lorsque j'ai mon groupe de valeur commençant par 227, j'utilise trois paliers de 90 donc il me reste une fois 90. Par exemple ma ligne peut accepter 1x90 et 2x0. J'aimerai que ces groupes se répartissent en respectant des paliers de 90. J'espère être le plus clair possible, j'ai ajouté des explications dans mon excel... j'ai vraiment besoin de votre aide!

    Répartition aléatoire forum.xlsm

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Faut-il vraiment que cela soit "aléatoire"? Je vois qu'il faut inscrire les groupes gr4, gr5 et gr6 chacun à concurrence de 3,75%. Ne pourrait on pas remplir le plan en s'occupant d'abord des plus difficiles à placer et ensuite progressivement s'occuper des moins en moins difficiles? Après cela on pourrait ajouter une touche d'aléatoire en faisant tout glisser d'un certain nombre de positions.

    Autre question: quand un groupe est entamé, faut-il inscrire obligatoirement tout le groupe? Dans l'exemple donné en fin de journée certains groupes ne sont pas entièrement traités => à continuer le jour suivant?

    Cordialement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci beaucoup pour votre réponse. Oui, si possible il est important de garder l'aspect aléatoire. Les groupes gr4, gr5 et gr6 sont à concurrence de 4% mais ce n'est qu'un exemple, l'idée est d'avoir la possibilité de varier ces proportions (depuis les cellules O16, P16, Q16, R16, S16, T16, U16).
    Cependant, je trouve votre idée intéressante, dans un premier temps nous pourrions placer les groupes plus difficiles (en respectant les pourcentages entrés) puis ajouter une touche d'aléatoire tout en respectant les paliers de 90.
    Il faut obligatoirement tout le groupe tant que nous sommes sur la plage 6:00-20:00, en revanche, un fois arrivé à 20:00 tout s'arrête, pas besoin de reporter le groupe sur le jour suivant.

    Bien cordialement,

    Aurélien.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Faut-il vraiment que cela soit "aléatoire"? Je vois qu'il faut inscrire les groupes gr4, gr5 et gr6 chacun à concurrence de 3,75%. Ne pourrait on pas remplir le plan en s'occupant d'abord des plus difficiles à placer et ensuite progressivement s'occuper des moins en moins difficiles? Après cela on pourrait ajouter une touche d'aléatoire en faisant tout glisser d'un certain nombre de positions.

    Autre question: quand un groupe est entamé, faut-il inscrire obligatoirement tout le groupe? Dans l'exemple donné en fin de journée certains groupes ne sont pas entièrement traités => à continuer le jour suivant?

    Cordialement.
    Bonjour,
    Je me permets de vous répondre une nouvelle fois puisque j'aimerai modifier mes requêtes (probablement plus facile à réaliser). D'une part, j'aimerai pouvoir choisir le nombre de groupes à répartir dans mon tableau, c'est-à-dire entrer dans une cellule le nombre de groupes souhaité au lieu de remplir le tableau dans son entièreté.
    D'autre part, je souhaite conserver la possibilité de choisir les proportions des différents gr, et les 4x90 à respecter (comme expliqué précédemment).
    J'espère être compréhensible.. Bonne journée

  5. #5
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Oui avant de chercher une solution, il faut bien poser le problème!

    Pour les groupes, il y a 4 paramètres:
    - leur nombre (1 à 7)
    - leurs "longueurs" (0 à 10)
    - leurs "poids" (1 à 4), un groupe étant toujours constitué d'éléments de même poids
    - les pourcentages demandés
    A mon avis il reste préférable de remplir le tableau dans son entièreté. Il facilitera le contrôle visuel.

    Pour ce qui est de la production qui va de 06:00 à 20:00 par période de 5 minutes, il faut être attentif que lorsque l'on indique 06:00, 06:05, .... c'est implicitement: 06:00-06:05, 06:05-06:10 et que la dernière période est donc 19:55-20:00 (et qu'il n'y a donc pas à inscrire 20:00 car cela signifie implicitement 20:00-20:05).

    Pour ce qui est des pourcentages, il y a aussi un point à éclaircir. Dans l'exemple donné 40% est fixé au groupe gr7, lequel est vide. A quoi correspondent exactement ces %, pourcentages qu'il n'est pas possible de réaliser tout à fait exactement vu que 1 période sur 672 = 0,1488% de la journée.

    Enfin dans la macro les groupes sont positionnés aléatoirement, mais ensuite on ne conserve que le meilleur résultat sur 50 essais. Pourquoi ne pas rechercher directement, par une méthode logique, le meilleur résultat possible?

    Cordialement.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Points : 7
    Points
    7
    Par défaut
    Merci pou votre réponse.
    Concernant les paramètres, qu'entendez vous par le poids ? S'agit-il des paliers ?
    Ok pour la plage horaire, c'est une erreur.
    L'intérêt des pourcentages est de pouvoir faire apparaître en plus grande proportion certains groupes sur la journée. Le groupe 7 (qui est vide) a été crée pour représenter les temps de pauses entre l'enchainement des groupes 1 à 6. Si tu as une meilleure solution, il est possible de supprimer le groupe 7 mais j'ai besoin qu'il y ai du vide entre mes groupes 1 à 6.
    Si je comprends bien le code réalisé, l'idée de réaliser 50 essais était de pouvoir trouver la meilleure répartition possible puisqu'il est impossible de respecter exactement les pourcentages.
    J'aimerai ajouter à cela une la possibilité d'entrer dans une cellule le nombre de groupes à répartir.

    Si je récapitule :
    1-j'entre les pourcentages des groupes
    2-j'entre le nombre de groupes que je souhaite voir apparaitre dans mon tableau de la journée (seuls les groupes de 1 à 6 m'intéressent)
    3-Répartition des groupes sur la plage de donnée de manière aléatoire en respectant les paliers de 90 et bien évidemment les proportions et le nombre de groupes.

    Bien cordialement,

    Aurélien.

  7. #7
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Dans l'exemple joint au premier message, en colonne B, entre 7:00 et 8:00 il y a 2 fois le groupe gr3 sans interruption entre les 2. Admis ou non admis?
    On pourrait dire qu'un groupe c'est ce groupe + 1 cellule vide. Ce serait même mieux d'étendre le groupe en y plaçant un 0, juste pour bien marquer que c'est la pause post-groupe.
    Cdt

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Points : 7
    Points
    7
    Par défaut
    Oui c'est admis, des groupes peuvent s'enchainer mais cela sous-entend qu'il y aura plus de temps de pauses ensuite...

    Je suis tout à fait d'accord que ce serait mieux d'étendre le groupe si c'est réalisable.

    Petite précision sur mon message précédent, les pourcentages ne sont qu'un approximation à tenter de respecter puisque si je souhaite entrer dans une cellule que je veux 9 groupes, il va être compliqué de respecter parfaitement les pourcentages ... Tout comme si je mets 90 groupes d'ailleurs.

  9. #9
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Ok, ce que j'ai nommé poids, ce sont ce que tu nommes palier. Ces paliers vont toujours en descendant dans un groupe.

    Reste la question de l'aléatoire. Pourquoi ne pas planifier aussi logiquement que possible? Pourquoi est-ce important qu'il y ait quelque chose d'aléatoire?

    Si on met 90 groupes d'une longueur 1 + pause de 1 = 180 périodes occupées (sur 672 dans 1 journée).

    Cdt

  10. #10
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Dans le groupe gr6, le premier palier est 227 (=> 3x90) mais le 4e est 169. Dans ce cas, à partir de 169, cela compte pour 2x90 ou toujours 3x90 ?
    Cdt

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Points : 7
    Points
    7
    Par défaut
    Ces paliers vont toujours en descendant ?
    L'intérêt de l'aléatoire est de pouvoir simuler plusieurs fois cette répartition et d'avoir donc plusieurs cas.

    Dans ce cas on passe à 2x90 (pour le groupe 6).

    Bien cordialement,

    Aurélien.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Points : 7
    Points
    7
    Par défaut
    Petite précision, pour le groupe 6, on passe dès la troisième valeur à 2x90 puisqu'on a 180.

    Bien cordialement,

    Aurélien.

  13. #13
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Ok, cela ne va pas simplifier les choses!

    L'intérêt de l'aléatoire est de pouvoir simuler plusieurs fois cette répartition et d'avoir donc plusieurs cas.
    et pourquoi est-il nécessaire d'avoir plusieurs cas (vu qu'on sélectionne déjà chaque fois le meilleur des 50 cas réalisés aléatoirement - on aurait pu tout de suite faire 100 ou 200 essais)?

    Cordialement.

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par EricDgn Voir le message

    et pourquoi est-il nécessaire d'avoir plusieurs cas (vu qu'on sélectionne déjà chaque fois le meilleur des 50 cas réalisés aléatoirement - on aurait pu tout de suite faire 100 ou 200 essais)?

    Cordialement.
    L'intérêt est de pouvoir comparer ces cas, on pourrait définir cela comme différents scénarios d'occupation des groupes durant la journée. C'est pourquoi le code VBA existant correspondait pas mal à mes attentes mais il ne prend pas en compte les paliers de 90 ni la possibilité de choisir le nombre de groupe.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Points : 7
    Points
    7
    Par défaut
    Vous pensez que c'est trop difficile ?

  16. #16
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    En attaché, une solution qui marche et une autre, que je trouve mieux ... mais qui ne marche pas !

    Cordialement.
    Fichiers attachés Fichiers attachés

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci pour le temps que vous accordez à mon projet.
    La première fonctionne bien, il manque juste le fait de pouvoir choisir le nombre de groupes que je souhaite répartir? Il faudrait que je puisse entrer le nombre dans une cellule ou alors que j'ai la possibilité de le diminuer ou de l'augmenter d'une autre manière.. Une idée ? et ça correspondrait à mes attentes.

    La deuxième est mieux aussi de mon point de vue, la répartition dans le tableau est plus homogène mais elle ne fonctionne pas parfaitement... Ce serait vraiment super de réussir à le faire fonctionner avec la possibilité de choisir approximativement le nombre de groupes à répartir, ce serait parfait.

    Que ce soit dans la feuille 1 ou 2, j'aurai besoin de pouvoir entrer la valeur en X8.

    Cdlt,
    Aurélien.

  18. #18
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    A mon avis cela devrait être possible, le plus simple étant sans doute de travailler avec des tableaux structurés. Cela devrait permettre d'ajouter/supprimer des lignes et ou des colonnes sans devoir changer le code. Evidemment cela prendra un peu de temps pour mettre cela en place. L'instruction ReDim permet d'ajuster les dimensions des variables tableaux (array). Un début en attaché.

    Cordialement.
    Fichiers attachés Fichiers attachés

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Points : 7
    Points
    7
    Par défaut
    Ok mais je ne comprends pas trop comment je pourrais faire pour entrer le nombre total de groupes à répartir...Ce qui correpond à la cellule K13 dans la dernière version que vous venez de m'envoyer.

    Cdlt,

    Aurélien.

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2022
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2022
    Messages : 34
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Je me permets de revenir vers vous puisque le fichier 1b que vous m'avez envoyé se rapproche fortement de ce que je veux, seulement j'essaye tant bien que mal de le modifier et je n'y arrive pas...
    J'aimerais juste pouvoir ajouter à votre code VBA la possibilité d'entrer dans une cellule le nombre total de groupes à répartir (ce qui actuellement correspond à la cellule X8, cellule complétée par lors de l'exécution de la macro).

    En espérant ne pas vous déranger avec mon projet,

    Bien à vous,

    Aurélien.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2010] copiage, de cellules sous conditions, dans un planning, de manière aléatoire
    Par profdesvt.ril dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 27/01/2016, 21h03
  2. [XL-2010] Répartition données dans plusieurs cellules sous conditions
    Par shipuden64 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 03/04/2015, 11h04
  3. [XL-2003] faire Clignoter une cellule sous condition
    Par LaPanic dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 21/06/2009, 18h49
  4. macro vba identifier cellule sous condition
    Par yanacrux dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/03/2009, 14h00
  5. colorer des cellules sous conditions
    Par coenonympha dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/07/2008, 13h54

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