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 (41,4 Ko)

Bonjour

Pas très simple à comprendre

Je tente cette proposition en espérant qu’elle réponde à tes attentes
Pas certain
A toi de me dire
Répartition aléatoire forum.xlsm (43,4 Ko)

Bonjour,

Merci beaucoup pour ta réponse puisque j’ai vraiment beaucoup de mal à avancer…

Ta proposition est très intéressante puisqu’elle respecte les paliers de 90 comme je le souhaitais. Cependant, elle ne respecte pas la taille des groupes, ils apparaissent dans le désordre dans le tableau. De plus, comme sur la version que je t’ai envoyé, j’aimerai pouvoir répéter plusieurs fois la macro pour avoir plusieurs répartitions différentes.
Pour que tu comprennes un petit peu mieux, j’ai eu quelques échanges sur un autre forum avec une personne essayant de m’aider, voici le lien :

https://www.developpez.net/forums/d2128825/logiciels/microsoft-office/excel/macros-vba-excel/vba-repartition-aleatoire-groupes-cellules-sous-conditions/#post11825532

Dans l’attente de ta réponse,
Cdlt,
Aurélien.

Qu apelles tu des groupes ?
Dans ton echange que tu me proposes de consulter il est question de groupes que je ne trouve nul part dans ton fichier
Il serait plus simple pour moi que tu me fournisses des explications les concernant que de décoder tous les echanges de ce lien

Dans l attente de tes éclaircissements sur ce point

Bonjour,
Merci pour ta réponse.
Les groupes sont les gr1, gr2, gr3, gr4, gr5, gr6, gr7 présents dans les colonnes à partir de O2.
Ils ne sont pas tous de la même taille et j’aimerai pouvoir les répartir dans mon tableau en respectant :

  • la taille de chacun des groupes,
  • les paliers de 90 (comme tu l’as fait),
  • la possibilité de pouvoir répéter la macro avec des pls répartitions (comme dans la version envoyée),
  • la possibilité d’entrer dans une cellule le nombre de groupes à répartir.

Dans l’attente de ta réponse,
Bonne journée,
Aurélien.

Bonjour merci pour ta réponse
Dans ta demande initiale tu ne parles que du traitement des 4 colonnes « B » à « E » pour lesquelles chaque ligne doit respecter cette condition :

« 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 »

Il faut savoir que le traitement du bouton traite chaque colonne « B » à « E » dans leur intégralité une par une
Donc pas d’autre moyen que d’intervenir en fin de celui-ci pour déterminer les lignes qui répondent ou non au critère et de ne garder que celles qui sont en phase

Que faut il réaliser de plus en rapport avec tes groupes colonne « O » à « U »

Merci d’être précis sur ce point

Bonjour,

Merci pour le temps que tu accordes à mon projet.
Je comprends qu’il faut intervenir en fin de traitement pour déterminer ou non si les lignes répondent au critère. Si nous allons dans cette optique, il faudrait que lorsqu’une ligne ne répond pas au critère, il serait nécessaire de supprimer un groupe dans son entièreté pour respecter la condition.
Pour te donner une idée et être plus clair, voici une proposition aussi intéressante que j’ai reçu (avec deux versions, l’une dans chaque feuille). La feuille 1 fonctionne, il manque juste la possibilité d’entrer dans une cellule le nombre approximatif de groupes à répartir. La feuille 2 plus intéressante puisque nous avons une répartition plus homogène, plus aléatoire sur l’ensemble de mon tableau mais les paliers de 90 ne sont pas respectés et il manque la possibilité d’entrer dans une cellule le nombre approximatif de groupes à répartir.
Répartition aléatoire forum 1b.xlsm (74,4 Ko)

En espérant être plus clair,
Aurélien.

« il serait nécessaire de supprimer un groupe dans son entièreté pour respecter la condition. »
Concrètement cela consiste à quoi ?

Je ne peux me baser sur des fichiers proposés pour comprendre ton attente en rapport à ce que moi je t ai proposé qui ne semble pas répondre à toutes tes attentes
Je préférerais que tu me dise concrètement ce qui manque car pour l instant je n ai toujours pas compris le manque
Sur un exemple precis de ma proposition merci de me montrer le resultat manquant

Ok, je comprends. Ta proposition est très intéressante puisqu’elle respecte les paliers 90 comme je le souhaite. Cependant, elle ne respecte pas la taille des groupes qui eux doivent être fixes. Les groupes sont représentés sur cette image :

J’aimerais pouvoir répartir les groupes ci-dessus dans ma plage horaire (6:00 - 20:00). Quand j’exécute ta macro (voir ci-dessous), on peut voir que les 3 premiers groupes sont représentés en entier mais pas les suivants. De plus, la répartition s’arrête à la ligne 102 au lieu de la ligne 170.

Il me faudrait juste cela en plus.
J’aimerais aussi pouvoir entrer le nombre de groupes total à répartir dans une cellule (ce qui correspond à la cellule X8).

Cdlt,
Aurélien

Désolé mais dans ces colonnes comment vois tu les groupes ?
Pour moi c est incompréhensible suite de chiffres et de couleurs mais sans plus de compréhension quant aux groupes
Peut être pour toi c est parlant mais pas pour moi (groupe taille etc …)
Désolé il m en faut plus

Je te joins une image ou j’ai entouré ce que j’appelle mes groupes de valeurs. J’ai seulement entouré les premiers.

Il s’agit bien des groupes présents dans les colonnes allant de O à T.
Quand je parle de la taille des groupes je veux mentionner le nombre de lignes qu’ils constituent. Certains en font plus que d’autres, le groupe 1 fait 10 lignes et le groupe 5 en fait seulement 4.

Est-ce plus clair ?

Ok mais tu attends quoi en remplacement ?
Mon traitement n a fais que reprendre ce que la macro de base a produit et de supprimer les lignes qui ne répondaient à la condition ni plus ni moins

"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 »

Que faut il de plus ?

J’aimerais avoir quelque chose de cette forme. C’est-à-dire que je voudrais à la fois respecter les paliers de 4x90 et la taille de mes groupes (voir ci-dessous un exemple que j’ai réalisé manuellement, sans macro).
Image4
Sur cette image, on observe bien les groupes entièrement, les lignes ne sont pas supprimées. Lors du remplissage du tableau si un groupe ne peut pas s’insérer car on ne respecterait pas les paliers 4x90 alors on met des « 0 ».

C’est un peut plus claire
Le pb c’est que mon traitement au lieu de faire ceci lorsque une ligne ne répond pas aux conditions :

« car on ne respecterait pas les paliers 4x90 alors on met des « 0 » jusqu’à que ce soit de nouveau possible. »

il supprime ni plus ni moins celle-ci

Donc il faudrait que j’applique cette consigne en lieu et place
C’est à dire si une ligne est hors condition de faire en sorte qu’elle y rentre en mettant une ou plusieurs cellules de celle-ci à 0 mais lesquelles ?
Ais je l’embarras du choix ou il y a t’il dans cette opération de correction une démarche à respecter par exemple :
1° cellule puis si nécessité 2° cellule puis si nécessité 3° cellule puis si nécessité 4° cellule

A toi de me dire

Je te joins une nouvelle version où j’effectue la mise à 0 d’une ligne de sa dernière cellule à sa deuxième cellule en fonction de la nécessité

Donnes moi ton avis

Répartition aléatoire forum 2.xlsm (42,5 Ko)

J’ai apporté une petite correction à ma dernière adaptation
Peux tu en lieu et place du dernier fichier transmis prendre celui-ci à tester

Merci

Répartition aléatoire forum 2.xlsm (45,2 Ko)

Tes versions sont bien mais il y encore quelques erreurs au niveau des groupes, parfois on on voit qu’une seule partie, il manque des valeurs.
Pour répondre à ta question, il n’y a pas de démarches à réaliser si ce n’est de respecter un nombre de groupe. Je m’explique, je voudrais pouvoir choisir le nombre de groupes à répartir dans mon tableau.
Si je récapitule:
1- J’entre dans une cellule X le nombre de groupes que je veux voir apparaitre dans le tableau.
2- J’entre dans les cellules O16, P16, Q16, R16, S16,T16 les proportions de chaque groupe à respecter (approximativement bien sûr)
3- J’exécute la macro qui répartie mes X groupes respectant les proportions entrées et les paliers de 90.

Donc de cette manière il s’agirait de faire la répartition en fonction des X groupes et de mettre des 0 aux endroits restants …
J’espère ne pas t’avoir embrouillé

Dans la dernière version transmise je laisse se réaliser le traitement de base qui alimente toutes les colonnes de « B » à « E » puis mon traitement intervient pour faire en sorte que toutes les lignes de ces colonnes répondent à ta condition (4×90)
Si il y a erreur au niveau des groupes des valeurs manquantes si ce n est pas les corrections que ma procédure effectue pour respecter ta condition c est au niveau du fonctionnement de base que doit se situer son origine
Je ne l ai pas décortiqué
As tu constatė le phénomène avant mes adaptations ?
As tu réalisé les tests sur ma toute dernière version transmise que j ai réalisé en remplacement de la précédente car j ai apporté une petite correction

Ci-joint en image le résultat obtenu avec ta dernière version. Il y a des erreurs dans D et E. A la ligne 4 des « 0 » sont ajoutés en D4 et E4 probablement puisqu’il y a déjà 2x90 en B4 et en C4. Dans cette situation, aucuns groupes ne devraient commencer avant la ligne 5 car avant (ligne 2,3,4) il y a déjà 4x90 dans les colonnes B et C.
Image5

Et penses tu qu’il est possible de choisir le nombre de groupe souhaité comme je te le disais dans mon message précédent ?

Merci encore une fois pour ton aide,
Cdlt,
Aurélien.

« Il y a des erreurs dans D et E. A la ligne 4 des « 0 » sont ajoutés en D4 et E4 probablement puisqu’il y a déjà 2x90 en B4 et en C4 »

Pourquoi des erreurs puisque les 0 intégrés en colonne « D » et « E » répondent à ta conditions ?
Il faut savoir si la condition (4X90) est de mise ou pas
Si c’est le cas il n y a pas d’erreur mais la juste application de la clause

« Et penses tu qu’il est possible de choisir le nombre de groupe souhaité comme je te le disais dans mon message précédent ? »

Choisir le nombre sur les 7 groupes déjà en place ?
En rajouter ?

Un exemple ci-joint avec 6 groupes

Testes et dis moi

Répartition aléatoire forum 3.xlsm (45,2 Ko)