Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1043 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  répétition de noms dans un planning

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

répétition de noms dans un planning

n°1888837
mgrizzly
Posté le 28-05-2009 à 09:44:22  profilanswer
 

Bonjour forum,
Je réalise un planning sous excel et j'ai un petit soucis:
Les agents sélectionnés selon mes critères et inscrits dans mon planning se répètent d'une activité à l'autre. Or un agent ne peux faire qu'une activité par jour.
Voilà mon code réalisé pour la première activité. J'ai 7 activités en tout mais le code est le même.  
 
Quelqu'un peut m'aider?

Sub Nom_FIP_1(w() As String)
 
Dim v As Byte, c As New Collection, x As Integer, y() As Variant, z() As Variant, i As Byte
 
Randomize
y = Array(16, 17, 18)
z = Array(9, 25, 42)
For i = 0 To 2
    Do While c.Count < 4
        cpt% = cpt% + 1
        If cpt% > MAX_ITER Then
          cpt% = 0
          Exit Do
        End If
        x = Int(y(i) * Rnd + z(i))
        If Cells(x, 3) = 1 And Cells(x, 3).Interior.ColorIndex <> 3 Then
            On Error Resume Next
            c.Add Cells(x, 3).Address, CStr(Cells(x, 3).Address)
            If Err = 0 Then
                On Error GoTo 0
                w(v) = Cells(x, 2).Value
                v = v + 1
            End If
            On Error GoTo 0
        End If
    Loop
    Set c = Nothing
Next i
 
End Sub
 
Sub FIP_AIP_MUSC_1()
 
Dim p As Range, v As Byte, w(12) As String
 
Nom_FIP_1 w
 
For Each p In Sheets("Mois en cours" ).Range("F4:F18" )
    If p.Interior.ColorIndex <> 6 And IsEmpty(p.Value) Then
       p.Value = w(0)
       For v = 1 To UBound(w)
           p.Value = p.Value & "/" & w(v)
       Next v
    End If
Next p
 
Nom_FIP_1 w
 
For Each p In Sheets("Mois en cours" ).Range("F19:F34" )
    If p.Interior.ColorIndex <> 6 And IsEmpty(p.Value) Then
       p.Value = w(0)
       For v = 1 To UBound(w)
           p.Value = p.Value & "/" & w(v)
       Next v
    End If
Next p
 
End Sub


Message édité par mgrizzly le 29-05-2009 à 16:25:44
mood
Publicité
Posté le 28-05-2009 à 09:44:22  profilanswer
 

n°1888849
jagstang
Pa Capona ಠ_ಠ
Posté le 28-05-2009 à 10:10:20  profilanswer
 

tu veux dire que ton code est répliqué 7 fois ? Je crois qu'un petit dessin nous aiderait plus qu'un bout de code


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1888862
mgrizzly
Posté le 28-05-2009 à 10:24:56  profilanswer
 

Salut jagstang, merci de me répondre.
Je veux dire que le structure est la même 7 fois mais de dans je change ceci

Do While c.Count < 4

,
 
je peux mettre 3 ou 1 à la place car dans mon code je peux choisir le nombre de personnes à affecter dans chaque activité.
 
Le problème c'est que le code, bien qu'il mette une personne dans la première activité ( colonne F) il remet aussi ce nom dans les autres activités (colonne G à L).
 
 Et ceci car mes agents sont sélectionnés ainsi :
ils sont pris si dans le tableau des compétences ils ont un 1 dans l'activité ( 1=compétence, 0=pas de compétences) sauf qu'un agent peut être compétent dans plusieurs activités, c'est pour cela que dans le planning il est remis plusieurs fois.
 
Je voudrais mettre dans le code: si agent déjà sélectionné dans une activité alors passé au suivant jusqu'à en trouvé un qui n'a pas encore été sélectionné.
 
Est-ce plus clair?
 

n°1889177
Ctplm
Posté le 28-05-2009 à 21:13:46  profilanswer
 

Ajoute une colonne "Déjà sélectionné" dans ton onglet de base de données, par exemple dans la colonne G, lorsque l'agent est affecté à une activité place par exemple la valeur 1 dans la colonne.
Afin d'effectuer ta sélection, rajoute une condition (Sheetx.Range("G" & lignex)) <> 1 dans ton if.

 

N'oublie pas un ClearContents sur la colonne G lorsque tu remets ton planning à jour.


Message édité par Ctplm le 28-05-2009 à 21:14:19

---------------
"That kind of information doesn't just grow on trees."
n°1889307
mgrizzly
Posté le 29-05-2009 à 10:30:02  profilanswer
 

Merci,Ctplm c'est ce que je cherche à faire, tu ne vois pas comment l'insérer dans mon code précédent?

n°1889524
mgrizzly
Posté le 29-05-2009 à 15:25:22  profilanswer
 

J'aimerais ajouter ce code mais je ne vois pas où.

Cells(x, 11).Value = IIf(Cells(x, 11).Value = "", 1, "" )

n°1890091
mgrizzly
Posté le 01-06-2009 à 13:50:17  profilanswer
 

Il me faudrais une solution pour que les agents ne se répètent pas d'une activité à l'autre.

n°1890259
Ctplm
Posté le 02-06-2009 à 09:18:07  profilanswer
 


Tu as écrit le code ci-dessus et tu ne vois pas où mettre ta ligne  :??:  
Il faut la mettre quand un agent est sélectionné, tu dois savoir où c'est dans ton code...


---------------
"That kind of information doesn't just grow on trees."
n°1890396
mgrizzly
Posté le 02-06-2009 à 14:00:59  profilanswer
 

Je viens de m'apercevoir que ça ne serait pas possible de cette manière mais une autre idée m'est venue:
utiliser les booleens: ne prendre que les agents qui sont TRUE, quand un agent est sélectionné, il devient FALSE et le programme continu à ne prendre que les agents qui sont TRUE, je n'aurais ainsi plus de problème de répétition.
Par contre je ne sais pas transcrire cela en VBA.
Quelqu'un peut m'aider?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  répétition de noms dans un planning

 

Sujets relatifs
Répétition fond + méthodologiemethode qui retourne toutes les id et les noms
Autoriser espaces ds un formulaire seulement dans noms à particulesRegexp : répétition
Problème de répétition d'imagepb affichage planning absences
utiliser des accents dans les noms de variables ?VB noms des dossiers
recherche planningProblème excel / vba excel - répétition de titres en haut de page
Plus de sujets relatifs à : répétition de noms dans un planning


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR