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 :

Fonction random pour planning


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien de Laboratoire
    Inscrit en
    Mai 2019
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien de Laboratoire
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2019
    Messages : 70
    Par défaut Fonction random pour planning
    Bonjour,

    Le principe est que la formule random tire aléatoirement pour la ligne 2, 2A/1B/3C/1D/1E paris 10 employés.

    A partir de l'exemple suivant, pourriez vous m'aider s'il vous plait à trouver une formule afin d'automatiser un roulement équitable ?

    Exemple
    A2 = 2
    A1=A

    Répartition aléatoire de A(A1) en 2 exemplaires(A2) sur L2 à BD2. Soit en L2 et P2 on retrouve A ou en AB2 et AV2 ou en X2 et AN2...ici je choisirai L2 et P2 en aléatoire.

    Une fois réalisée, on ajoute B1=B avec B2=1 et pareil aléatoirement, on comble les cellules vides de L2 à BD2. Si L2 et P2 étaient en A, X2 pourrait être en B.


    Une fois réalisée, on ajoute C1=C avec C2=3 et pareil aléatoirement, on comble les cellules vides de L2 à BD2 sachant que si L2 et P2 étaient en A, X2 en B, AV2 et AZ2 et BD2 pourraient être en C

    Une fois réalisée, on ajoute D1=D avec D2=1 et pareil aléatoirement, on comble les cellules vides de L2 à BD2 sachant que si L2 et P2 étaient en A, X2 en B, AV2 et AZ2 et BD2 en C, T2 pourrait être en D

    Une fois réalisée, on ajoute E1=E avec E2=1 et pareil aléatoirement, on comble les cellules vides de L2 à BD2 sachant que si L2 et P2 étaient en A, X2 en B, AV2 et AZ2 et BD2 en C, T2 en D, AF2 pourrait être en E.

    Alors AB2 et AN2 seraient vides.

    Puis on reproduit cela de façon aléatoire pour mardi, mercredi, jeudi et vendredi.

    Merci beaucoup de votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037

  3. #3
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    -Pour ce qui n'ouvrent pas les fichiers, voici le tableau de VincentCA
    Pièce jointe 476415

    -Pour plus de clarté, création d'un tableau intermédiaire
    Pièce jointe 476418

    Le code associé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub Tirage_aleatoire()
        Dim Valeur As String
        Dim Nb_Tirage As Integer, Nb_Alea As Integer
        Application.ScreenUpdating = False
        Range("G11:P15").ClearContents 'on efface les précédents tirages
        For i = 11 To 15 'tirage pour la semaine
            For j = 2 To 6 'les valeurs à placer
                Valeur = Cells(10, j)
                Nb_Tirage = Cells(i, j)
                For t = 1 To Nb_Tirage
                    Randomize 'Initialise le générateur de nombres aléatoires
    Tirage_aleatoire:
                    Nb_Alea = Int(10 * Rnd) + 1 'Nombre aléatoire entier entre 1 et 10
                    If Cells(i, Nb_Alea + 6) = "" Then 'Si l'employé est libre
                        Cells(i, Nb_Alea + 6) = Valeur 'on y met la valeur
                    Else
                        GoTo Tirage_aleatoire 'sinon on refait un tirage aléatoire
                    End If
                Next t
            Next j
        Next i
     
        'Recupération du résultat dans le tableau
        Col = 7
        For i = 12 To 48 Step 4
            Range(Cells(2, i), Cells(6, i)).Value = Range(Cells(11, Col), Cells(15, Col)).Value
            Col = Col + 1
        Next i
    End Sub
    et le fichier
    Pièce jointe 476422

    Cdlt

  4. #4
    Membre averti
    Homme Profil pro
    Technicien de Laboratoire
    Inscrit en
    Mai 2019
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien de Laboratoire
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2019
    Messages : 70
    Par défaut
    Bonjour Arturo,
    Ton code est une création de ta part ?
    Pourrais tu m’aider stp à finaliser ma demande ?

  5. #5
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Ton code est une création de ta part ? OUI, puisque le but est de répondre à la question posée, mais je n'ai fait qu'utiliser la fonction Random (qui est connue de la plupart des personnes qui répondent sur le forum) et l'ai adapté à la situation.
    Pourrais tu m’aider stp à finaliser ma demande ? , Tout le monde peut vous aider, posez votre question et vous aurez des réponses assez rapidement.

    Cdlt

  6. #6
    Membre averti
    Homme Profil pro
    Technicien de Laboratoire
    Inscrit en
    Mai 2019
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien de Laboratoire
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2019
    Messages : 70
    Par défaut
    Bonjour.

    Ne disposant pas d’office365, je n’ai pour l’instant pas accès au développeur. De ce fait, j’ai fais avec quelques formules.
    Sur un tableau aléatoire avec ALEA() suivi du formule RANG pour trier et rendre unique un nombre (toujours basé sur 11 employés). Ensuite j'ai pu CONCAT, REPT et EQUIV
    Pensez vous qu’il soit possible de faire en sorte que sur les 5 jours d'une semaine, une tache ne revienne pas plus de 2 fois par employé ?
    Exemple, le A qui reviendrait que 2 fois sur employé 1. Au delà de 2, la tâche deviendrait trop répétitive.
    Attention, le fichier est en calcul manuel pour pas que l'aléatoire intervienne a chaque remplissage de cellule.

    Si c’est mieux en BVA, je m’adapterai.

    Merci d'avance pour tout,
    Bonne soirée
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Fonction random pour mélanger des definitions
    Par demandeuse59200 dans le forum C#
    Réponses: 1
    Dernier message: 09/01/2019, 16h32
  2. La fonction Random pour changer le motif d'une fiche
    Par FOCUS77 dans le forum Contribuez
    Réponses: 0
    Dernier message: 17/06/2015, 20h36
  3. fonction random pour une roulette
    Par davidka dans le forum GUI
    Réponses: 3
    Dernier message: 04/01/2014, 19h54
  4. Fonction/méthode pour obtenir l'IP de la machine
    Par sirex007 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 10/04/2003, 14h36
  5. Réponses: 3
    Dernier message: 02/09/2002, 18h49

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