Case ou bouton pour définir le nombre de personne sur un poste

munkycool

XLDnaute Junior
Bonjour,

je reviens vers vous pour mon planning de gestion d'équipe. J'ai de nouvelles demandes de la part des responsables et que je n'ai pu résoudre.

- Le tirage aléatoire mis en place ne leur convient pas. Il leur faut une personne différente a chaque poste tous les jours mais qu'elle ne soit pas reprise le lendemain a ce même poste.
En sachant qu'il y'a une personne par mail tous les jours, 3 personnes aux téléphones du matin, 3 personnes d'après midi et une dernière personne qui fait autre chose. Donc il y'a un total de 8 personnes mais qui pourra s'étendre ensuite à un nombre de 20 personnes maximum.

- Dans ma fonction matricielle, dans l'onglet "Planning_Gest_Septembre", j'ai fait des modifications pour prendre en compte le nombre de 20 employées.Par contre cela ne se répercute pas dans mon onglet Planning Téléphone qui reste à 11 personnes. Je ne vois pas ou modifier cela malheureusement.

- est-il possible dans mon premier onglet "Planning Téléphone" d'insérer un bouton qui gère le nombre total de personne à inclure dans ce planning (par exemple pouvoir passer de 8 à 20 en un seul clic) ?

Merci par avance pour votre aide

Cdt
 

Pièces jointes

  • TEST PLANNING (5).xlsm
    64.4 KB · Affichages: 117
  • TEST PLANNING (5).xlsm
    64.4 KB · Affichages: 124
  • TEST PLANNING (5).xlsm
    64.4 KB · Affichages: 119
Dernière édition:

job75

XLDnaute Barbatruc
Re : Case ou bouton pour définir le nombre de personne sur un poste

Bonjour munkycool, le forum,

Vous voulez donc modifier le nombre de lignes des 4 plages colorées.

Il me semble que cela doit être exceptionnel et donc réservé à l'Administrateur.

Ce n'est pas bien compliqué d'adapter la macro, il faut modifier ce qui est en rouge :

Set MAIL = Cells(lig + 1, 1).Resize(1, i)
Set TELAM = Cells(lig + 2, 1).Resize(3, i)
Set TELPM = Cells(lig + 5, 1).Resize(3, i)
Set AUTRE = Cells(lig + 8, 1).Resize(1, i)
Set TOUT = Cells(lig + 1, 1).Resize(8, i)
For j = 1 To h
Select Case j
Case 1: Cells(lig + j, i) = ChercheNom(tablo, plage, MAIL, TOUT)
Case Is < 5: Cells(lig + j, i) = ChercheNom(tablo, plage, TELAM, TOUT)
Case Is < 8: Cells(lig + j, i) = ChercheNom(tablo, plage, TELPM, TOUT)
Case 8: Cells(lig + j, i) = ChercheNom(tablo, plage, AUTRE, TOUT)
Case Else: Cells(lig + j, i) = ChercheNom(tablo, plage)
End Select
Next

Bien sûr l'Administrateur doit avoir lui-même compris ce qu'il faut faire.

On peut évidemment paramétrer dans 4 cellules le nombre de lignes de chaque plage.

A+
 

munkycool

XLDnaute Junior
Re : Case ou bouton pour définir le nombre de personne sur un poste

Bonjour Job 75 et le forum
je n'avais pas vu votre réponse et j'en suis désolé...

Alors oui pour la modification manuelle ça il n'y a pas de souci : le code est assez explicite. Mais ce n'est pas le but à terme.

=> Bien entendu que la partie VBA ne peut être modifié par un utilisateur : en l’occurrence la personne qui va s'en occupé ne connait pas le VBA et ne veut pas. Par contre ne cas de surcroît de travail dans tel ou tel domaine il faut qu'elle puisse mettre une personne en plus en mail en enlever au TELAM, etc.

Par contre, c'est bien votre dernière phrase qui est intéressante à l'idée de remplir 4 cellules dans le premier onglet pour définir le nombre de lignes colorées.

Merci par avance pour votre réponse
 
Dernière édition:

munkycool

XLDnaute Junior
Re : Case ou bouton pour définir le nombre de personne sur un poste

Re-Bonjour :

J'ai fait des tests de modifications manuelles. Mais j'ai l'impression quand augmentant le nombre de ligne de couleur le tirage ne fonctionne plus correctement : les personnes reviennent trop fréquemment.
Voici les données que j'ai renseigné :

Set plage = Cells(lig + 1, i).Resize(h)
Set MAIL = Cells(lig + 1, 1).Resize(2, i)
Set TELAM = Cells(lig + 3, 1).Resize(5, i)
Set TELPM = Cells(lig + 8, 1).Resize(5, i)
Set AUTRE = Cells(lig + 13, 1).Resize(1, i)
Set TOUT = Cells(lig + 1, 1).Resize(13, i)
For j = 1 To h
Select Case j
Case Is < 3: Cells(lig + j, i) = ChercheNom(tablo, plage, MAIL, TOUT)
Case Is < 8: Cells(lig + j, i) = ChercheNom(tablo, plage, TELAM, TOUT)
Case Is < 13: Cells(lig + j, i) = ChercheNom(tablo, plage, TELPM, TOUT)
Case 13: Cells(lig + j, i) = ChercheNom(tablo, plage, AUTRE, TOUT)
Case Else: Cells(lig + j, i) = ChercheNom(tablo, plage)
End Select
Next
 

munkycool

XLDnaute Junior
Re : Case ou bouton pour définir le nombre de personne sur un poste

Ou alors si j'ai bien compris le principe de ton tirage : il faudrait créér une ligne pour chaque personne sur un poste pour être sur qu'elle revienne moins fréquemment (si on prend tel AM ou PM par exemple) ?
 

job75

XLDnaute Barbatruc
Re : Case ou bouton pour définir le nombre de personne sur un poste

Bonjour munkycool,

Pour paramétrer le nombre de lignes des 4 zones dans 4 cellules adaptez ce code :

Code:
Dim n1 As Byte, n2 As Byte, n3 As Byte, n4 As Byte
n1 = [WW]: n2 = [XX]: n3 = [YY]: n4 = [ZZ] '4 cellules à adapter
'------
Set MAIL = Cells(lig + 1, 1).Resize(n1, i)
Set TELAM = Cells(lig + 1 + n1, 1).Resize(n2, i)
Set TELPM = Cells(lig + 1 + n1 + n2, 1).Resize(n3, i)
Set AUTRE = Cells(lig + 1 + n1 + n2 + n3, 1).Resize(n4, i)
Set TOUT = Cells(lig + 1, 1).Resize(n1 + n2 + n3 + n4, i)
For j = 1 To h
Select Case j
Case Is <= n1: Cells(lig + j, i) = ChercheNom(tablo, plage, MAIL, TOUT)
Case Is <= n1 + n2: Cells(lig + j, i) = ChercheNom(tablo, plage, TELAM, TOUT)
Case Is <= n1 + n2 + n3: Cells(lig + j, i) = ChercheNom(tablo, plage, TELPM, TOUT)
Case Is <= n1 + n2 + n3 + n4: Cells(lig + j, i) = ChercheNom(tablo, plage, AUTRE, TOUT)
Case Else: Cells(lig + j, i) = ChercheNom(tablo, plage)
End Select
Next
A+
 

job75

XLDnaute Barbatruc
Re : Case ou bouton pour définir le nombre de personne sur un poste

Bonjour munkycool, le forum,

Dans cette version (4) le paramétrage se fait par les 4 cellules MAIL TELAM TELPM AUTRE de chaque mois.

Nota 1 : attention, j'ai découvert une erreur dans les versions (2) et (3) précédentes.

Au lieu de :

Code:
ncol = Cells(lig + 1, 1).End(xlToRight).Column
il fallait bien sûr écrire, comme dans cette version :

Code:
ncol = Cells(lig, 1).End(xlToRight).Column
Nota 2 : le paramétrage doit être fait pour le mois entier (clic sur le bouton).

Si on le modifie au cours du mois (puis double-clic sur une date) le résultat n'est pas correct.

A+
 

Pièces jointes

  • Rotations avec tri aléatoire(4).xlsm
    96.6 KB · Affichages: 37
  • Rotations avec tri aléatoire(4).xls
    233 KB · Affichages: 47

job75

XLDnaute Barbatruc
Re : Case ou bouton pour définir le nombre de personne sur un poste

Re,

L'effacement du tableau quand les valeurs des 4 cellules sont incorrectes m'a permis de voir que la macro Masquer n'allait pas bien.

La voici corrigée :

Code:
Sub Masquer()
'---pour masquer/afficher les lignes non colorées---
Dim s As Shape, flag As Boolean, masque As Boolean, cel As Range, deb&, fin&
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each s In ActiveSheet.Shapes
  With s.TextFrame.Characters
    If .Text = "Masquer" Or .Text = "Afficher" Then
      If Not flag Then masque = .Text = "Masquer": flag = True
      .Text = IIf(masque, "Afficher", "Masquer")
    End If
  End With
Next
Rows.Hidden = False 'affiche toutes les lignes
For Each cel In Intersect([A:A], Me.UsedRange.EntireRow)
  If cel.Interior.Color = [L3].Interior.Color Then deb = cel.Row + 1
  If cel.Interior.ColorIndex = xlNone And _
    cel.Borders(xlEdgeBottom).LineStyle <> xlNone Then fin = cel.Row
  If deb And fin >= deb Then
    Rows(deb & ":" & fin).Hidden = masque
    deb = 0
  End If
Next
Application.Calculation = xlCalculationAutomatic
End Sub
Tout se fait à partir du texte des boutons.

Ci-joint la version (5).

A+
 

Pièces jointes

  • Rotations avec tri aléatoire(5).xls
    213 KB · Affichages: 53
  • Rotations avec tri aléatoire(5).xlsm
    104 KB · Affichages: 47

munkycool

XLDnaute Junior
Re : Case ou bouton pour définir le nombre de personne sur un poste

Bonjour Job75 et le forum.

Je viens de tester votre derniers fichiers qu'il soit en xlsm et xls = il y'a une erreur à une ligne mais je ne sais plus laquelle.
Je vous fait un retour plus complet dans la matinée.

Cdt
 

job75

XLDnaute Barbatruc
Re : Case ou bouton pour définir le nombre de personne sur un poste

Bonjour munkycool,

Il est possible que sur Excel 2007 il faille définir la propriété LineStyle des bordures avant Weight :

Code:
.Resize(n1 + n2 + n3 + n4).Borders(xlEdgeBottom).LineStyle = xlContinuous
Veuillez tester ces fichiers (5 bis) svp.

A+
 

Pièces jointes

  • Rotations avec tri aléatoire(5 bis).xlsm
    104.1 KB · Affichages: 40
  • Rotations avec tri aléatoire(5 bis).xls
    213 KB · Affichages: 44

munkycool

XLDnaute Junior
Re : Case ou bouton pour définir le nombre de personne sur un poste

Alors voici les messages qui apparaissent
- Dès que l'on clique sous "Rotation Septembre 2012", ce message apparaît : "Valeures Incorrect en Ligne 3" Pour Novembre c'est la ligne 29
- Le souci est le même avec vos fichiers 5 bis

cdt
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Case ou bouton pour définir le nombre de personne sur un poste

Re,

Ce message c'est celui que j'ai mis dans la macro...

Sur les fichiers que j'ai joints il n'apparaît pas chez moi.

Vous utilisez sans doute un fichier incorrect.

Les 4 cellules doivent être 2 lignes au-dessus de la ligne des dates, en colonnes F H J L.

La ligne des dates étant elle-même 3 lignes en-dessous du mois inscrit en colonne A.

Si vous n'y arrivez pas joignez votre fichier.

A+
 

munkycool

XLDnaute Junior
Re : Case ou bouton pour définir le nombre de personne sur un poste

Re,

Ce message c'est celui que j'ai mis dans la macro...

Sur les fichiers que j'ai joints il n'apparaît pas chez moi.

Vous utilisez sans doute un fichier incorrect.

Les 4 cellules doivent être 2 lignes au-dessus de la ligne des dates, en colonnes F H J L.

La ligne des dates étant elle-même 3 lignes en-dessous du mois inscrit en colonne A.

Si vous n'y arrivez pas joignez votre fichier.

A+

Le hic c'est que j'utilise vos fichiers pour le moment pour faire des tests ! Et le message d'erreur survient à l'utilisation de ces fichiers.
Si je comprend il n'est pas possible de refaire un tirage déjà effectué par exemple pour Septembre ou Novembre (sans parler de refaire pour juste pour un jour) car c'est là que le message apparaît (sans avoir modifié le moindre élément).

Par contre si je modifie un chiffre dans la case Mail tel ou autre, dois-je la valider ou juste faire entrer ?

Merci
 

job75

XLDnaute Barbatruc
Re : Case ou bouton pour définir le nombre de personne sur un poste

Le hic c'est que j'utilise vos fichiers pour le moment pour faire des tests ! Et le message d'erreur survient à l'utilisation de ces fichiers.

Vous ne devez pas entrer n'importe quoi dans les 4 cellules car elles sont contrôlées par :

Code:
If Err Or n1 * n2 * n3 * n4 = 0 Or n1 + n2 + n3 + n4 > .Rows.Count Then

- les données doivent être de type Byte (entiers de 0 à 255)

- mais non nulles (pas de cellule vide)

- et leur somme inférieure ou égale à la hauteur du tableau.

A+
 

job75

XLDnaute Barbatruc
Re : Case ou bouton pour définir le nombre de personne sur un poste

Re,

J'ai corrigé et complété la macro sur 2 points.

1) Le problème que vous avez eu venait sûrement du fait qu'après le message contrôlant les 4 cellules le calcul n'était pas remis en "automatique".

2) Le double-clic est maintenant contrôlé : la macro est stoppée si les hauteurs des zones colorées sont modifiées et si le double-clic a lieu au-delà de la 1ère colonne :

Code:
If Not flag Then 'contrôle des couleurs après double-clic
  If coldeb > 1 Then 'au-delà de la 1ère colonne
    If Cells(lig + j, i).Interior.Color <> Cells(lig + j, i - 1).Interior.Color Then
      Application.ScreenUpdating = True
      MsgBox "Les hauteurs des zones colorées sont modifiées, double-clic inutilisable !", 48
      GoTo 1
    End If
  End If
End If
Fichiers (6).

A+
 

Pièces jointes

  • Rotations avec tri aléatoire(6).xlsm
    104.8 KB · Affichages: 47
  • Rotations avec tri aléatoire(6).xls
    231.5 KB · Affichages: 42
  • Rotations avec tri aléatoire(6).xlsm
    104.8 KB · Affichages: 50
  • Rotations avec tri aléatoire(6).xlsm
    104.8 KB · Affichages: 50
Dernière édition:

munkycool

XLDnaute Junior
Re : Case ou bouton pour définir le nombre de personne sur un poste

Bonjour,

Donc avant de modifier les chiffres dans les cases, il faut avant tout mettre ne forme le tableau ?

Car je rentrais bien des nombres entier (par exemple 2 - 5 - 5- 1 pour Septembre) et j'avais ce message d'erreur. Même si je laissais le fichier tel quel et que je refaisais le tirage, le message apparaissait (Valeurs incorrect en ligne **)

C'est les seules modifications que je faisais.
 

Discussions similaires

Statistiques des forums

Discussions
312 189
Messages
2 086 033
Membres
103 102
dernier inscrit
nath34490