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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  mettre des valeurs booléennes vba excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

mettre des valeurs booléennes vba excel

n°1886366
mgrizzly
Posté le 20-05-2009 à 10:16:47  profilanswer
 

Bonjour,
Je fais un planning sous excel avec une feuille "compétences" ou le nom des agents sont indiqués ainsi que leurs compétences par activité( notés 1 ou 0 selon si l'agent est compétent ou non dans l'activuté), les agents en congés sont colorés en rouge. J'ai aussi une feuille "mois en cours" avec un calendrier.
Mon code prend les agents dans la feuille "compétences" qui ont un 1 et qui ne sont pas en rouge et les met dans la feuille "mois en cours" sauf dans les cellules jaunes(jours fériés et weekend).
Je peux choisir le nombre d'agent à effecter(il peut y en avoir 9 ou 6 ou 3)dans chaque cellule du planning.
Les agents changent toutes les 15 jours à peut près.
En ligne on a les jours et en colonne les activités prévues.
Tout marche bien jusque là sauf que mon code remet les agents déjà affecter dans la première activité(donc première colonne) dans les autres colonnes.
Mais un agent ne peut pas faire plusieurs activités en même temps.
 
Je voudrais donc si c'est possible mettre des booleens aux agents
et de dire agents au début=false
si agents pris pour mettre dans case alors=true
dans les autres colonne ne prendre que les agents restants qui sont=false
 
Voici mon code pour la première colonne. Dites-moi si vous voulez la suite.
Merci de m'aider.
 
Code:

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[fixed][/cpp]


Message édité par mgrizzly le 20-05-2009 à 10:19:10
mood
Publicité
Posté le 20-05-2009 à 10:16:47  profilanswer
 

n°1892448
produvba
Posté le 08-06-2009 à 11:38:58  profilanswer
 

Il me semble que le plus simple est de créer un tableau correspondant au nombre d'agents (avec une instruction redim agents(N)) où agents est un tableau de booleans. Vous l'initialisez à False et passez à True dès que l'agent est affecté...
 
Cela dit je ne suis pas sûr que votre algorithme soit optimum, car vous allez affecter l'agent en priorité sur la première activité où il a la compétence. Mais peut-être que ce n'est pas le bon choix,
Il vaudrait mieux à mon avis procéder en plusieurs temps, notamment en regardant d'abord la liste des agents qui savent faire une activité puis de regarder quelle est la meilleure solution

n°1892459
Ctplm
Posté le 08-06-2009 à 11:54:55  profilanswer
 


http://forum.hardware.fr/hfr/Progr [...] 3354_1.htm  [:spamafote]


---------------
"That kind of information doesn't just grow on trees."

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

  mettre des valeurs booléennes vba excel

 

Sujets relatifs
Regrouper des fichiers excel en un seul par bouton vba[Mysql] Ajout d'un caractere "0" sur toutes les valeurs d'un champs
Sauvegarder un seul onglet (VBA) ExcelAquerir dans Excel des données venant de fichiers txt
Jasper Reporting ExcelCopier / Coller ligne entre fichiers excel
[VBAExcel Résolu] Copier coller de excel dans wordMettre une variable Javascript dans un cookie
Mettre une variable Javascript dans un cookieComparaison de deux colonnes dans 2 classeurs Excel
Plus de sujets relatifs à : mettre des valeurs booléennes vba excel


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