Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Besoin aide pour formule ALEA ? ou autre ? Je ne sais pas

  • Initiateur de la discussion Initiateur de la discussion Todre
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Todre

XLDnaute Occasionnel
Hello,

Je suis en train d'essayer de mettre en place un tableau qui parait simple mais en fait difficile (pour moi...)

Sur le fichier joint il y a une liste de noms ou je souhaiterai leur attribuer un métier selon un besoin sachant que j'ai un choix de 3 métiers.

Sur le fichier de besoin je mets mon nombre de personnes sachant que chaques fois que je modifie le besoin ou caque fois que je le rempli le choix ne pas etre le meme pour effectuer de la polyvalence.

J'espere etre à peut pret clair sinon ne pas hésiter à me demander.

Merci d'avance à tous. 😛
 

Pièces jointes

Re : Besoin aide pour formule ALEA ? ou autre ? Je ne sais pas

Bonjour à tous,

Un tirage par VBA.

J'ai rajouté une ligne contrôle au-dessous du besoin de chaque métier qui fait la synthèse des métiers tirés.
Un message avant nouveau tirage permet de vérifier la décision de l'opérateur.

Le principe de fonctionnement de la macro :

1- Tirage aléatoire d'une cellule à donner un métier et contrôle que cette cellule est vide.
2- Tirage aléatoire d'un métier et contrôle que ce tirage est acceptable si le nombre de tirage déjà effectués de ce métier est inférieur au nombre souhaité.
3- Inscription du métier dans la cellule.
 

Pièces jointes

Dernière édition:
Re : Besoin aide pour formule ALEA ? ou autre ? Je ne sais pas

Bonjour à tous,

Un essai vite fait:
VB:
Sub melange()
Dim i, j, k, xcell As Range, S
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
  Range("b7:b" & Rows.Count).ClearContents
  For Each xcell In Range("h14:j14")
    S = S + xcell
    For j = 1 To xcell.Value
      Range("b7").Offset(k) = xcell.Offset(-1)
      k = k + 1
    Next j
  Next xcell
  Columns("B:B").Insert Shift:=xlToRight
  Range("b7").Resize(S).FormulaLocal = "=alea()"
  Range("b7").Resize(S, 2).Sort key1:=Range("b7"), Header:=xlNo
  Columns("B:B").Delete
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
 

Pièces jointes

Dernière édition:
Re : Besoin aide pour formule ALEA ? ou autre ? Je ne sais pas

Bonjour à tous,

Une version avec quelques vérif. en plus (une au sein du code, les autres en MFC - voir fichier pour description).
VB:
Sub melange()
Dim i, j, k, xcell As Range, S
If Application.WorksheetFunction.Sum(Range("h14:j14")) < 1 Then
    MsgBox "Erreur : aucun métier à ventiler !"
    Exit Sub
  End If
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
  Range("b7:b" & Rows.Count).ClearContents
  For Each xcell In Range("h14:j14")
    S = S + xcell
    For j = 1 To xcell.Value
      Range("b7").Offset(k) = xcell.Offset(-1)
      k = k + 1
    Next j
  Next xcell
  Columns("B:B").Insert Shift:=xlToRight
  Range("b7").Resize(S).FormulaLocal = "=alea()"
  Range("b7").Resize(S, 2).Sort key1:=Range("b7"), Header:=xlNo
  Columns("B:B").Delete
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "C'est fini !"
End Sub
 

Pièces jointes

Re : Besoin aide pour formule ALEA ? ou autre ? Je ne sais pas

Merci a tous pour vos messages

J'ai regardé un peu, pour moi le fichier le plus exploitable (plus simple pour moi) es celui de Bernard mais ne maitrisant pas le VBA, j'espère de récup le code pour adapter à mon fichier de base mais j'ai une erreur sur une ligne:

Loop Until Application.CountIf(Liste, Metier) < TabMetier(2, Tirage2)

merci pour votre aide sur le sujet😛
 
Re : Besoin aide pour formule ALEA ? ou autre ? Je ne sais pas

Bonjour Todre et le forum,

Si tu n'arrives pas à reformuler la ligne de code :

Loop Until Application.CountIf(Liste, Metier) < TabMetier(2, Tirage2)

Essayons les explications :

- Application.CountIf est la traduction VBA de la formule NB.SI().
Liste est la zone où sont inscrit les métiers en face des noms.
Metier est une variable qui contient le tirage au sort de l'un des trois métiers.
- Si le nombre de fois de "metier" est inférieur au besoin alors "Metier" est transcrit dans la cellule de la zone tirée au sort et vide.


si ces explications te sont insuffisantes et pouvoir avoir réponse adaptée à ton fichier, il est nécessaire que tu nous montres un extrait de ce fichier.
 
Re : Besoin aide pour formule ALEA ? ou autre ? Je ne sais pas

Bonjour Bernard

Est il possible de se contacter en privé car je ne peux mettre mon fichier a la vu de tout le monde je ne sais pas si sur le forum on peut envoyer en message privé ou une adresse mail ou je peux vous le joindre

Merci pour tout
 
Re : Besoin aide pour formule ALEA ? ou autre ? Je ne sais pas

Bonjour Todre et le forum,


En déplacement jusqu'au 22 avril, si, d'ici là, le problème VBA demeure, tu peux me laisser un message privé sur la messagerie du forum avec ton adresse email.

Bonne journée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

V
Réponses
8
Affichages
1 K
V
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…