[Macro Création Planning] - Attribuer un prénom à un chiffre

Bonjour / Bonsoir à tous,

Je me permets de poster sur ce forum après de longues recherches infructueuses...

Voilà mon "problème": On m'a chargée de créer un planning, afin que les différentes tâches soient réparties entre les membres d'une équipe de 9 personnes.

A la base, j'ai un tableau avec en haut les jours (Lundi, mardi, mercredi, jeudi et vendredi), et sur le côté, les différentes tâches.

Jusque là, tout va bien.

Pour que le planning se fasse aléatoirement, j'ai utilisé la formule "aléa entre bornes", de 1 à 9, que j'ai dupliqué à toutes les cellules du tableau. J'ai utilisé une macro et créé un bouton "nouveau planning", afin qu'il se remplisse aléatoirement.

--> Maintenant, mon soucis est que je ne sais pas comment créer un code VBA, qui me permettrait, pour chaque cellule du tableau affichant le chiffre 1, d'afficher le prénom "Elodie" par exemple. Dans toutes les cases où la première macro afficherait 2, j'aimerais voir "Martine"... J'espère être claire ^^'

J'ai essayé un code qu'un membre avait proposé sur le forum dans un sujet similaire, pour remplacer 1 par Elodie. Mais le code ne prenait pas en compte les 1 généré par la macro, seulement les 1 que j'écrivais moi-même dans d'autres cellules...

--> Est-ce qu'il est possible que le code ne s'applique qu'aux cellules E4 à I 70?

Je me tourne vers la programmation VBA car j'ai lu dans d'autres sujets qu'une fonction ne pouvait pas produire ce miracle d'affecter un nom à un chiffre, et d'afficher ce nom dans la cellule (qui contient le chiffre)...

Si vous êtes encore là et que je ne vous ai pas (encore) perdus en route, alors je vous invite à regarder le fichier joint.

Merci d'avance pour votre aide!

Luna

Bonjour,

A tester et me redire.

Cdlt.

Sub NouveauPlanning()
Dim rng As Range, c As Range
    '
    ' NouveauPlanning Macro
    '
    Application.ScreenUpdating = False
    Range("O3:S61").Copy
    Range("E4:I62").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Set rng = Union(Range("O3:S61"), Range("E4:I62"))
    For Each c In rng
        If c = 1 Then c.NumberFormat = "[=1]""Elodie"""
        If c = 2 Then c.NumberFormat = "[=2]""Luc"""
        If c = 3 Then c.NumberFormat = "[=3]""Martine"""
        '
        ' etc...
        '
        If c = 9 Then c.NumberFormat = "[=9]""Christelle"""
    Next

    Range("L1").Select

End Sub

Bonjour,

Merci pour votre réponse

J'ai essayé le code mais cela ne fonctionne pas... J'ai peut être oublié quelque chose en le testant?

Je vous joint le fichier avec le code.

Merci encore pour votre aide!

Bonjour,

Puisque tu as mis toutes les cellules en aléatoire tu peux récupérer aléatoirement les noms dans la liste avec :

=INDEX($D$74:$D$82;ENT(ALEA()*9+1))

Chaque appui sur F9 crée une nouvelle liste.

Et tu fais ton copié-collage spécial valeur directement sur les prénoms. Bien sûr travailler sur une copie de la feuille pour conserver les formules.

Pour un autre type de paramétrage je t'ai mis par formule une liste aléatoire des prénoms en $E$74:$E$82.

Les tâches E64 et F65 seront attribuées au 4ème de cette liste.La tâche F64 au 3ème, etc

eric

9classeur1.xlsm (32.87 Ko)

Bonjour,

Il te suffisait de modifier le nom de la macro associé à ton bouton.

Cdlt.

Génial, vos deux solutions fonctionnent! Merci beaucoup!

Je vais essayer de m'occuper de la macro pour la deuxième partie du planning, je vous tiens au courant ^^

Merci encore pour votre aide!

J'ai encore une question... Mais c'est juste pour savoir si c'est faisable. Peut-on ajouter une condition?

Par exemple, si un collaborateur est présent tous les jours sauf le mercredi, peut-on faire en sorte que son nom n'apparaisse jamais dans la colonne mercredi?

Y a t-il une formule qui permette cela?

Merci

Bonjour,

Voir fichier modifié avec un exemple.

Christelle n'apparaît plus les mercredis.

Cdlt.

Rechercher des sujets similaires à "macro creation planning attribuer prenom chiffre"