XL 2013 Dispatching des nombres sous conditions

Galaxy_2019

XLDnaute Junior
Bonjour à tous,

J'ai un tableau avec la plage d9: m100. Je souhaite distribuer aléatoirement (avec un bouton VBA) les nombres de 01 jusqu'à le nombre dans la cellule S9 dans la plage d9: m100 selon les conditions suivantes:

1- Distribution aléatoire dans la plage D9:M100 de 01 au numéro de la cellule S9 et ne répétant pas le même numéro dans la même ligne, et remplacez le nombre répété par un autre numéro
2- Le nombre de colonnes dans lesquelles la répartition est autorisée est égal au nombre de la cellule S10
3 - La répartition s'effectue uniquement dans les cellules vides de la plage D9:M100
4- serait-il possible d'inclus des message d'erreur lors


En attachement un fichier exemple.

Cordialement.
 

Pièces jointes

  • Test.xlsx
    12 KB · Affichages: 3

Galaxy_2019

XLDnaute Junior
Bonjour Sylvanu,

Merci infiniment pour votre réponse et pour le ficher

Effectivement, oui on doit remplir toutes les lignes vides y compris celles qui n'ont pas de lettres

Sur votre fichier le dispatching commence par le zéro (0), alors que:

Le nombre « 0 » n'est pas lié à la distribution, car la distribution est aléatoire, commençant par 01 jusqu'au nombre dans la cellule S9.

Le nombre de colonnes = le nombre dans la cellule (S10) ainsi que le nombre maximum de colonnes pouvant être saisies dans la cellule S10 ne peut pas dépasser le nombre maximum des colonnes dans le tableau, si le contraire un message d'erreur s'affiche comme vous l'avez fait

Merci encore une fois pour votre efforts

Cordialement
 
Dernière édition:

Galaxy_2019

XLDnaute Junior
Oups, rectifié en PJ.

Merci le zéro n'est pas inclus, et pour le besoin ci-dessous, serait-il possible de trouver une solution:

Le nombre de colonnes = le nombre dans la cellule (S10) ainsi que le nombre maximum de colonnes pouvant être saisies dans la cellule S10 ne peut pas dépasser le nombre maximum des colonnes dans le tableau, si le contraire un message d'erreur s'affiche comme vous l'avez fait

Merci beaucoup
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
En fait il y a deux messages d'erreur, le premier si Nmax<nbcol:
20231017_165333.gif

Le second si Ncol>10 :
20231017_165753.gif

Mais si vous avez les 2 erreurs il y a priorité pour le premier, donc vous ne le voyez pas.
 

Galaxy_2019

XLDnaute Junior
Bonjour à tous,

Désolé pour le retard

Effectivement Sylvanu, vous avez raison le nombre de colonnes ne dépasse pas le num Max, merci pour votre réponse c'est formidable

Autres choses:

Pourriez-vous s'il vous plaît m'aider avec d'autres choses concernant ce fichier.

- Nous avons une autre cellule S8 qui comprend le nombre maximum de lignes autorisées pour la saisie de données (c'est-à-dire : si le nombre est 12 dans la cellule S8 alors le nombre de lignes pouvant être distribuées est de 12 lignes)

- Est-il possible qu'un même nombre soit répété seulement deux fois et pas plus dans chaque colonne selon la valeur de S9 (par exemple : si la valeur de S9 est égale à 7, alors tous les nombres doivent être répétés deux fois aléatoirement dans chaque colonne , en tenant compte de la première condition, qui est de ne pas répéter les nombres en lignes)

- Permettre qu'un seul chiffre soit répété deux fois dans deux lignes différentes (par exemple, si le chiffre 3 est répété, par exemple, dans la ligne 10 et répété dans la ligne 15, cela est autorisé, mais si un autre chiffre, comme le chiffre 7, est répété dans ces deux lignes, cela ne peut pas être autorisé).

- Remplacez le nombre de cellules contenant des lettres par des cellules contenant des chiffres en fin de colonne (selon les conditions mentionnées précédemment, à l'exception de la condition du nombre de lignes).

En pièce jointe le fichier.

Cordialement.
 

Pièces jointes

  • Test V3.0.0.0.xlsm
    25.3 KB · Affichages: 2
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Ca, je ne sais pas faire, c'est trop l'usine à gaz. Je laisse à d'autres plus futé de résoudre le problème.
D'autre part il y a trop de contraintes et d'impossibilités.
Par ex des nombres de 1 à 9 et 10 lignes, fatalement il y aura des doublons.
"Remplacez le nombre de cellules contenant des lettres par des cellules contenant des chiffres en fin de colonne", fatalement cela pourrait créer des doublons
...
 

Galaxy_2019

XLDnaute Junior
Bonsoir,
Ca, je ne sais pas faire, c'est trop l'usine à gaz. Je laisse à d'autres plus futé de résoudre le problème.
D'autre part il y a trop de contraintes et d'impossibilités.
Par ex des nombres de 1 à 9 et 10 lignes, fatalement il y aura des doublons.
"Remplacez le nombre de cellules contenant des lettres par des cellules contenant des chiffres en fin de colonne", fatalement cela pourrait créer des doublons
...
Bonjour Sylvanu,

J'ai trouvé ce code qui peut faire la deuxième partie de mon souci, mais j'ai pas pu faire combiner les deux codes (Votre code et celui-là) sur un seul code vba, pouvez-vous m'aider svp

Le code:

Sub Dispatche_Test ()

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False


Dim X&, Y&, i&, R&, cnt&


For Each C In Range("d9:m100")
If C.Value = [s1] Or C.Value = [s2] Or C.Value = [s3] Then GoTo 1
C.ClearContents
1 Next


For i = 4 To [S10] + 3
cnt = Application.CountA(Range(Cells(9, i), Cells(100, i)))
For R = 9 To [s8] + 8 + cnt
If Not (IsEmpty(Cells(R, i))) Then GoTo 2
Randomize
3 X = Int(([S9]) * Rnd + 1)
Cells(R, i) = X
Y = WorksheetFunction.CountIf(Range(Cells(9, i), Cells(R, i)), X)
If Y > 2 Then GoTo 3
TirageAuSort
2 Next R
Next i


Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub


Merci pour votre support
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
315 097
Messages
2 116 187
Membres
112 679
dernier inscrit
Yupanki