Bonjour le forum,
Je viens solliciter votre aide.
Mon classeur Excel est organisé de la manière suivante:
- Colonne 1: Nom des tâches
- Colonne 2: Date de début
- Colonne 3: Date de fin
- Colonne 4 : Code permettant de différencier les différentes tâches.
Mon but c'est d'ajouter des valeurs aux colonnes 2 et 3 de mes tâches en fonction du code qu'elles contiennent (colonne 4).
Je suis donc parti sur un Userform dans lequel je définis dans un Textbox la valeur que je souhaite ajouter à mes colonnes. Ci-dessous mon code
Le principe est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 Private Sub CommandButton3_Click() 'Bouton Valider Dim S As Integer, derLig As Integer, i As Integer, f As Worksheet, a As Integer, b As Integer 'modif_duree If TextBox1 = "" Then Exit Sub End If Set f = Sheets("Feuil1") With f DerniereLigne = Feuil1.Range("A300").End(xlUp).Address L = Range(DerniereLigne).Row 'Compte le nombre total de tâches avec le code Super For i = 2 To L S = WorksheetFunction.CountIf(.Range(.Cells(2, 4), .Cells(i, 4)), "Super") Next i 'Ajout des valeurs For i = 2 To L 'Condition uniquement pour la première ligne de Super If S = 1 Then .Cells(i, 3) = .Cells(i, 3) + ((1 / (S * 3)) * Val(TextBox1)) 'Condition sur toutes les autres ligne de Super (de la 2èeme à la dernière) ElseIf S > 1 Then .Cells(i, 2) = .Cells(i, 2) + ((a - 1 / (S * 3)) * Val(TextBox1)) .Cells(i, 3) = .Cells(i, 3) + ((a / (S * 3)) * Val(TextBox1)) End If Next i End With Set f = Nothing TextBox1 = "" repartition.Hide End Sub
1 - Compter le nombre total de tâches (ou lignes) portant le code Super dans la colonne 4
2 - Appliquer une première condition Uniquement sur la première tâche avec le code Super
2 - Appliquer une deuxième condition sur toutes les autres lignes (de la 2 ème à la dernière) portant le code Super.
La partie du code suivante me permet de déterminer à l'aide de la fonction CountIf le nombre total de lignes avec le code Super:
Mon problème vient dans la suite du code. Je n'arrive pas à trouver la bonne syntaxe pour définir ma variable a ni à appliquer les conditions Uniquement sur la première ligne de Super dans un premier temps puis sur toutes les autres lignes de Super dans un deuxième temps dans la partie suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 'Compte le nombre total de tâches avec le code Super For i = 2 To L S = WorksheetFunction.CountIf(.Range(.Cells(2, 4), .Cells(i, 4)), "Super") Next i
Je voudrais ajouter dans la colonne 3 de la première ligne portant le code "Super" la valeur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 For i = 2 To L 'Condition uniquement pour la première ligne de Super If S = 1 Then .Cells(i, 3) = .Cells(i, 3) + ((1 / (S * 3)) * Val(TextBox1)) 'Condition sur toutes les autres ligne de Super (de la 2èeme à la dernière) ElseIf S > 1 Then .Cells(i, 2) = .Cells(i, 2) + ((a - 1 / (S * 3)) * Val(TextBox1)) .Cells(i, 3) = .Cells(i, 3) + ((a / (S * 3)) * Val(TextBox1)) End If Next i
Avec S = le nombre total de ligne portant le code Super
Code : Sélectionner tout - Visualiser dans une fenêtre à part + ((1 / (S * 3)) * Val(TextBox1))
Puis sur toutes les autres lignes toujours avec le code Super en colonne 4 (de la 2 ème à la dernière ligne), ajouter la valeur suivante:
-Dans la colonne 2 :avec a -1 = le numéro de ligne Super précédent. Si on est à la troisième ligne de Super, a-1 = 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part + ((a - 1 / (S * 3)) * Val(TextBox1))
-Dans la colonne 3 :avec a = le numéro de ligne Super actuel Si on est à la troisième ligne de Super, a =3
Code : Sélectionner tout - Visualiser dans une fenêtre à part + ((a / (S * 3)) * Val(TextBox1))
Toujours avec S = le nombre total de lignes de Super.
Pouvez-vous m'orienter dans ma démarche?
Je vous remercie d'avance pour votre aide!
Ci-joint mon classeur Excel.
Partager