mettre un 1 dans une colonne

Kiphrine

XLDnaute Nouveau
Bonjour, forum,
j'aurais besion de votre aide pur un petit problème de code et d'insertion,
voilà mon code
Code:
Sub Nom_FIP_3(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 < 3
        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 If Err = 0 Then Cells(x, 11) = "1"
                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_3()

Dim p As Range, v As Byte, w(9) As String
 
Nom_FIP_3 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_3 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

J'aimerais insérer un code qui dit ceci:
Regarder dans la colonne K, si la cellule est vide alors y inscrire un 1, si elle n'est pas vide alors prendre une vide"
Merci
 

Catrice

XLDnaute Barbatruc
Re : mettre un 1 dans une colonne

Bonjour,

Pas tout compris mais le code suivant met 1 dans les cellules vides de la colonne K :

Sub Test()
Columns("K:K").SpecialCells(xlCellTypeBlanks).Value = 1
End Sub


Pour quoi mets tu "1" au lieu de 1 ?
 

Kiphrine

XLDnaute Nouveau
Re : mettre un 1 dans une colonne

D'accord mais dans mon code les cellules sélectionnées sont ici:
Code:
If Cells(x, 3) = 1 And Cells(x, 3).Interior.ColorIndex <> 3
il n'y a pas de sélection.
Je voulais mettre ceci:
Code:
Then Cells(x, 11) = 1
mais ça ne marche pas et je ne sais pas si c'est ici qu'il faut insérer quelque chose.
Merci à toi de prendre le temps de t'inréresser à mon problème.:)
 

Catrice

XLDnaute Barbatruc
Re : mettre un 1 dans une colonne

Re,

Je ne comprends pas tres bien ce que tu veux faire.
Il serait mieux que tu postes un petit bout de fichier pour mieux comprendre ce que fait ta macro.
On irait plus vite et ce serait plus efficace...
 

Kiphrine

XLDnaute Nouveau
Re : mettre un 1 dans une colonne

Alors voilà, mon code prend des cellules spécifiques ici
Code:
If Cells(x, 3) = 1 And Cells(x, 3).Interior.ColorIndex <> 3 Then

Je voudrais que lorqu'elles sont sélectionnées alors un 1 apparaissent dans la colonne K
au niveau de la ligne de la cellule sélectionnés
Exemple avec une cellule:
on prend une cellule B4 qui correspond au type de cellule que je veux sélectionner(possédant un 1 et étant rouge), je veux que lorqu'elle est sélectionnée alors un 1 apparaisse en K4.

Le problème c'est que je ne sais pas où l'insérer dans mon code pour que ça marche.
Je voudrais insérer ceci
Code:
Cells(x, 11).Value = IIf(Cells(x, 11).Value = "", 1, "")

Si tu n'arrive vraiment pas à m'aider j'enverrais le fichier.
 

Catrice

XLDnaute Barbatruc
Re : mettre un 1 dans une colonne

Re,

Je ne comprends pas ceci (surtout "selectionner") :
on prend une cellule B4 qui correspond au type de cellule que je veux sélectionner(possédant un 1 et étant rouge), je veux que lorqu'elle est sélectionnée alors un 1 apparaisse en K4.

Quand est ce que la macro s'execute ?
Il y a un evenement ? un bouton ?
Peux tu poster un petit exemple ?
 

Kiphrine

XLDnaute Nouveau
Re : mettre un 1 dans une colonne

Voila le fichier, le code est dans le modile roulement.
Je réexplique:
Je voudrais que lorque mes cellules spécifiques sont sélectionnées alors un 1 apparaissent dans la colonne K au niveau de la ligne de la cellule sélectionnés
Exemple avec une cellule dans la feuille"compétence":
on prend une cellule B4 qui correspond au type de cellule que je veux sélectionner(possédant un 1 et étant rouge), je veux que lorqu'elle est sélectionnée alors un 1 apparaisse en K4.
 

Pièces jointes

  • planning.zip
    44.2 KB · Affichages: 40
  • planning.zip
    44.2 KB · Affichages: 44
  • planning.zip
    44.2 KB · Affichages: 38

Kiphrine

XLDnaute Nouveau
Re : mettre un 1 dans une colonne

Dans mon fichier, le code doit prendre les cellules non rouges et possédant un 1 et les mettre dans le planning, sauf que les cellules se répètent d'une activité à l'autre or un agent ne peut faire qu'une seule activité par jour.
Alors je voudrais que lorsque le code prend les cellules pour les mettre dans le planning, un 1 apparaisse dans la colonne K de la ligne de la cellule sélectionnée(ou répondant aux conditions;)) et qu'après on dise dans le code ne prendre que les cellules spécifiques mais qui n'ont pas de 1 dans la colonne K.
Est ce plus clair?
Tout ça pour éviter les doublons dans mon planning.
Vous me seriez d'une grande aide car je commence vraiment à désespérer!!!:(
ps:La macro s'exécute par un bouton.
 
Dernière édition:

Catrice

XLDnaute Barbatruc
Re : mettre un 1 dans une colonne

ReRe,

Désolé mais pas encore assez clair pour moi.
Peux tu donner un step by step, qu'est ce qu'on doit avoir dans la feuille "Mois en cours" ? Des noms, des 1 ?...
Quel bouton pour tester ta macro déjà ecrite ?...
 

Kiphrine

XLDnaute Nouveau
Re : mettre un 1 dans une colonne

Dans la feuille "compétences" le code prend les cellules par activités qui ne sont pas rouge et qui contiennent un 1. Je peux choisir le nombre de personne à affecter dans chaque activité. Ensuite le code place les noms des agents dans le planning, il y en a plussieurs par cellules.
Les mêmes noms restent en place environ 15 jours et changent les 15 autres jours.
Le planning se rempli en cliquant sur le bouton nombre de restes dans la feuille "mois en cours" et en mettant un chiffre <100(j'ai un autre code pour>100 mais je ne l'ai pas mis dans ce fichier).
J'aimerais ne trouver le nom d'un agent que dans une seule activité pour un jour.
Pour cela j'ai pensé à changer le code comme ceci:
quand un agent est placé dans la première activité alors mettre un 1 dans la colonne K, sur sa ligne, de la feuille"compétence" et pour les autres activités prendre les agents où il n'y a pas encore de 1 dans la colonne K, les sélectionner(et les mettre dans le planning)et mettre un1 dans la colonne K car ils ont été pris.

Voilà, mais je ne sais pas arranger mon code pour que la dernière partie marche.

Merci de m'aider.
 

Catrice

XLDnaute Barbatruc
Re : mettre un 1 dans une colonne

Bonsoir,

Désolé, mais je n'arrive pas à comprendre le fontionnement de ton planning et je n'ai pas le temps pour l'instant d'interpreter ton code :(
Je vais devoir passer la main.
Je crois qu'il faudrait d'avantage isoler ton probleme.
 

Discussions similaires

Réponses
17
Affichages
760
Réponses
12
Affichages
508