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

Code VBA ou autres ...

  • Initiateur de la discussion Initiateur de la discussion Lycaethos
  • 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 !

L

Lycaethos

Guest
Bonjour à tous,
Après plusieurs jours de recherches infructueuses, je me tourne vers vous ...
A partir d'un planning, je souhaite récupérer une personne en poste par jour, une autre de nuit, pour accomplir une tache bi quotidienne, et ce durant le mois complet.
Les fonction si, recherche et aléa me posent problème. Un code VBA serait plus judicieux, mais je suis novice dans ce domaine.
Je joins une copie pour essayer d'être plus clair.
Par avance, Merci à tous.
 

Pièces jointes

Re : Code VBA ou autres ...

Bonjour,

Une piste avec une fonction personnalisée.

1) copiez le code suivant dans un module standard

Code:
Function ALEA_POSTE(Liste As Range, PlageDuJour As Range, T_ou_N As String) As String
Dim var1
Dim var2
Dim A$
Dim i&
Dim cpt&
Dim T()
If Liste.Rows.Count <> PlageDuJour.Rows.Count Then Exit Function
If Liste.Columns.Count > 1 Or PlageDuJour.Columns.Count > 1 Then Exit Function
A$ = UCase(T_ou_N)
If A$ <> "T" And A$ <> "N" Then Exit Function
var1 = Liste
var2 = PlageDuJour
For i& = 1 To UBound(var2, 1)
  If Trim(var2(i&, 1)) = A$ Then
    cpt& = cpt& + 1
    ReDim Preserve T(1 To cpt&)
    T(cpt&) = var1(i&, 1)
  End If
Next i&
If cpt& > 0 Then
  Randomize Timer
  ALEA_POSTE = A$ & " : " & T(Int((UBound(T) * Rnd) + 1))
End If
End Function


2) UTILISATION (on prend votre feuil1 comme base exemple)
En cellule B16 on entre la formule =ALEA_POSTE($A2:$A14;B2:B14;"T") qui contient 3 paramètres
a) paramètre 1 : $A2:$A14 qui indique la plage des personnes
b) paramètre 2 : B2:B14 qui est la plage du jour concerné
(ces 2 plages doivent comporter une seule colonne et posséder le même nombre de lignes sinon la fonction échoue)
c) paramètre 3 : "T" contient la lettre T ou N pour distinguer la recherche sur jour ou nuit

En cellule B17 on entre la formule =ALEA_POSTE($A2:$A14;B2:B14;"N")
elle se distingue de la formule précédente que par le 3ème paramètre

On sélectionne B16 : B17 et on tire la sélection à droite jusqu'en AF16

Comme à chaque recalcul les résultats risquent de changer par le fait de l'effet aléatoire il faudrait copier la plage B16 : AF17 et faire un collage spécial Valeurs pour que tout soit intangible.

Cordialement.

PMO
Patrick Morange
 
Re : Code VBA ou autres ...

Je vous remercie beaucoup, c'est exactement ce que je recherchais.
Un petit détail me tracasse ... Serait t-il possible que le nom d'une personne soit différent d'un jour à l'autre ???
Que, par exemple, Emile ne soit pas sélectionné le 1, 2 et 3 ???
Une solution consiste à réactualiser chaque cellule. Un autre module VBA pourrait-il répondre à ma demande ???
Merci de vous pencher encore un peu sur mon problème de planning.
 
Re : Code VBA ou autres ...

Bonjour,

Serait t-il possible que le nom d'une personne soit différent d'un jour à l'autre ???
Que, par exemple, Emile ne soit pas sélectionné le 1, 2 et 3 ???

Une piste en suivant la démarche suivante :

1) entrez les formules sous la forme (plage B16 : AF17)
=ALEA_POSTE($A$2:$A$14;B$2:B$14;"N")
=ALEA_POSTE($A$2:$A$14;B$2:B$14;"T")
2) copiez la plage B16 : AF17 et collez en B19 puis B22 puis B25 etc
3) vous avez ainsi plusieurs résultats différents et pouvez copier ceux qui vous intéressent et les coller spécial Valeurs

Cordialement.

PMO
Patrick Morange
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
411
M
Réponses
2
Affichages
462
M
S
  • Question Question
Microsoft 365 Mise à Jour dates
Réponses
0
Affichages
650
Stephane Mex
S
T
  • Question Question
XL 2019 VBA
Réponses
1
Affichages
857
P
Réponses
8
Affichages
1 K
R
Réponses
8
Affichages
1 K
R
B
Réponses
2
Affichages
1 K
Benito07170
B
Réponses
7
Affichages
1 K
L
Réponses
1
Affichages
1 K
Lucien31
L
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…