simplification

  • Initiateur de la discussion Alex
  • Date de début
A

Alex

Guest
Bonjour,

J'aurais voulu savoir si il été possible de simplifier une de mes macros


Sub Actualiser_les_RTT_05_06()

Application.ScreenUpdating = False
Sheets("jours").Range("b2:iv72").ClearContents
'horaires

Dim j As Variant
Dim nb_rtt As Double
Dim nb_cg As Double
Dim nb_mal As Double
Dim nb_ble As Double
Dim nb_travail As Double
Dim nb_abs As Double
Dim RTTplus As Integer

'Worksheets("avril 2004").Select 'sélectionne la feuille du mois choisi
'Pour le premier employé de la société situé sur la 2eme ligne des deux feuilles

For j = 0 To 70


nb_rtt = 0
nb_cg = 0
nb_mal = 0
nb_ble = 0
nb_abs = 0
nb_travail = 0
RTTplus = 0
I = 0
r = 0
T = 0
Dim feuilles
' For Each feuilles In Worksheets(Array("janvier 2004", "février 2004", "mars 2004", "avril 2004", "mai 2004", "juin 2004", "juillet 2004", "août 2004", "septembre 2004", "octobre 2004", "novembre 2004", "décembre 2004"))
For Each feuilles In Worksheets
If Not (IsDate(feuilles.name)) Then
' MsgBox feuilles.name & " impossible à traiter"
Else
If DateValue(feuilles.name) >= DateValue("01/02/2005") And DateValue(feuilles.name) <= DateValue("31/01/2006") Then




For Each z In feuilles.Range("B2:af2").Offset(j, 0)



If (z.Value = "RTT" Or z.Value = "rtt" Or z.Value = "Rtt") And z.Offset(-j - 1, 0).Interior.ColorIndex <> 15 Then
nb_rtt = nb_rtt + 1
''''''''''''''''''
T = T + 1
If Sheets("jours").Range("bA2").Offset(j, T) = "" Then
''Connaitre les dates des jours de RTT
Sheets("jours").Range("bA2").Offset(j, T) = z.Offset(-j - 1, 0).Value & " " & feuilles.Range("a1")
Else
Sheets("jours").Range("bA2").Offset(j, T + 1) = z.Offset(-j - 1, 0).Value & " " & feuilles.Range("a1")
End If
'''''''''''''''''''
End If

If (z.Value = "Cg" Or z.Value = "CG" Or z.Value = "cg") And z.Offset(-j - 1, 0).Interior.ColorIndex <> 15 Then
nb_cg = nb_cg + 1
''''''''''''''''''''''''
I = I + 1
If Sheets("jours").Range("g2").Offset(j, I) = "" Then
'Connaitre les dates des jours de congés
Sheets("jours").Range("g2").Offset(j, I) = z.Offset(-j - 1, 0).Value & " " & feuilles.Range("a1")
Else
Sheets("jours").Range("g2").Offset(j, I + 1) = z.Offset(-j - 1, 0).Value & " " & feuilles.Range("a1")
End If
End If
''''''''''''''''''''''''''

If (z.Value = "Mal" Or z.Value = "MAL" Or z.Value = "mal") And z.Offset(-j - 1, 0).Interior.ColorIndex <> 15 Then
nb_mal = nb_mal + 1
End If

If (z.Value = "Blé" Or z.Value = "ble" Or z.Value = "BLE" Or z.Value = "blé") And z.Offset(-j - 1, 0).Interior.ColorIndex <> 15 Then
nb_ble = nb_ble + 1
End If

If (z.Value = "ABS" Or z.Value = "abs" Or z.Value = "Abs") And z.Offset(-j - 1, 0).Interior.ColorIndex <> 15 Then
nb_abs = nb_abs + 1
End If

If z.Offset(-j - 1, 0).Interior.ColorIndex = 15 And (z.Value = "ABS" Or z.Value = "abs" Or z.Value = "Abs") Then
nb_abs = nb_abs + 2.5
End If
If z.Offset(-j - 1, 0).Interior.ColorIndex = 15 And (z.Value = "Blé" Or z.Value = "ble" Or z.Value = "BLE" Or z.Value = "blé") Then
nb_ble = nb_ble + 2.5
End If
If z.Offset(-j - 1, 0).Interior.ColorIndex = 15 And (z.Value = "Cg" Or z.Value = "CG" Or z.Value = "cg") Then
nb_cg = nb_cg + 2.5
End If
If z.Offset(-j - 1, 0).Interior.ColorIndex = 15 And (z.Value = "Mal" Or z.Value = "MAL" Or z.Value = "mal") Then
nb_mal = nb_mal + 2.5
End If
If (z.Value = "RTT+" Or z.Value = "Rtt+" Or z.Value = "rtt+") Then
RTTplus = RTTplus + 1

r = r + 1
'connaitre les jours ou les RTT + ont été pris
If Sheets("jours").Range("a2").Offset(j, r) <> "" Then
Sheets("jours").Range("a2").Offset(j, r + 1) = z.Offset(-j - 1, 0).Value & " " & feuilles.Range("a1")
Else
Sheets("jours").Range("a2").Offset(j, r) = z.Offset(-j - 1, 0).Value & " " & feuilles.Range("a1")
End If
End If








Next
End If
End If
Next feuilles
'Next


Sheets("RTT 05-06").Range("c2").Offset(j, 0).Value = nb_mal
Sheets("RTT 05-06").Range("d2").Offset(j, 0).Value = nb_ble
Sheets("RTT 05-06").Range("e2").Offset(j, 0).Value = nb_abs
Sheets("RTT 05-06").Range("B2").Offset(j, 0).Value = nb_rtt
Sheets("RTT 05-06").Range("f2").Offset(j, 0).Value = RTTplus



'si aucun employé sur la ligne
If Sheets("RTT 05-06").Range("A2").Offset(j, 0).Value = "" Then
Sheets("RTT 05-06").Range("c2").Offset(j, 0).Value = ""
Sheets("RTT 05-06").Range("d2").Offset(j, 0).Value = ""
Sheets("RTT 05-06").Range("e2").Offset(j, 0).Value = ""
Sheets("RTT 05-06").Range("B2").Offset(j, 0).Value = ""
Sheets("RTT 05-06").Range("f2").Offset(j, 0).Value = ""

End If
Next

'''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''


For Each feuilles In Worksheets
If Not (IsDate(feuilles.name)) Then
' MsgBox feuilles.name & " impossible à traiter"
Else
If DateValue(feuilles.name) >= DateValue("01/02/2005") And DateValue(feuilles.name) <= DateValue("31/01/2006") Then





'permet de connaitre le nombre de jour congés et RTT possible à prendre par l'employé
nb_jour_semaine = 0
comptergris = 0
For Each cell In feuilles.Range("b1:af1")
If cell.Interior.ColorIndex = 15 Then '15 correspond a la couleur gris clair
comptergris = comptergris + 1
End If
Next
'MsgBox comptergris

'savoir combien de jour de semaine dans le mois
For Each cell In feuilles.Range("b1:af1")
If cell.Value <> "" And cell.Interior.ColorIndex <> 15 Then
nb_jour_semaine = nb_jour_semaine + 1
End If
Next












Dim nb_jour_travail As Double
For I = 0 To 70

nb_jour_travail = 0

For Each X In feuilles.Range("B2:af2").Offset(I, 0)
If (X.Value = "A" Or X.Value = "a") And X.Offset(-I - 1, 0).Interior.ColorIndex <> 15 Then
nb_jour_travail = nb_jour_travail + 1
Else
If (X.Value = "M" Or X.Value = "m") And X.Offset(-I - 1, 0).Interior.ColorIndex <> 15 Then
nb_jour_travail = nb_jour_travail + 1
Else
If (X.Value = "N" Or X.Value = "n") And X.Offset(-I - 1, 0).Interior.ColorIndex <> 15 Then
nb_jour_travail = nb_jour_travail + 1
Else
If (X.Value = "J" Or X.Value = "j") And X.Offset(-I - 1, 0).Interior.ColorIndex <> 15 Then
nb_jour_travail = nb_jour_travail + 1
Else
If (X.Value = "Blé" Or X.Value = "ble" Or X.Value = "BLE" Or X.Value = "blé") And X.Offset(-I - 1, 0).Interior.ColorIndex <> 15 Then
nb_jour_travail = nb_jour_travail + 1
Else
If IsNumeric(X) Then
nb_jour_travail = nb_jour_travail + (X / 8)
Else
If (X.Value = "RTT" Or X.Value = "Rtt" Or X.Value = "rtt") And X.Offset(-I - 1, 0).Interior.ColorIndex <> 15 Then
nb_jour_travail = nb_jour_travail + 1
End If
End If
End If
End If
End If
End If
End If

Next






nb_rtt_mois = (0.75 / nb_jour_semaine) * nb_jour_travail
'MsgBox nb_rtt_mois
'Impossible de cumuler plus de 0.75 jours de RTT par mois
If nb_rtt_mois > 0.75 Then
nb_rtt_mois = 0.75
End If


Dim nb As Integer
nb = Len(feuilles.name) - 5

For k = 0 To 12 'pour les valeurs des colonnes a savoir les mois


If feuilles.Visible = True And Left(feuilles.name, nb) = Sheets("RTT 05-06").Range("h1").Offset(0, k).Text Then
Range("H1").Offset(0, k).Activate
colonne = Left$(ActiveCell.Address(0, 0), (ActiveCell.Column < 27) + 2) 'connaître la lettre (et non le N°) de la colonne active
Sheets("RTT 05-06").Range(colonne & 2).Offset(I, 0).Value = nb_rtt_mois
End If






'''Lors du premier mois d'embauche, si celui ci n'est pas complet,
'''AQP ne paye que le nombre d'heures et il n'y a pas de capitalisation de RTT
If Day(Sheets("personnel").Range("i2").Offset(I, 0)) <> 1 Then
lemois = Month(Sheets("personnel").Range("i2").Offset(I, 0))
lemois = Format(Sheets("personnel").Range("i2").Offset(I, 0), "mmmm")
If lemois = "janvier" Then
monannee = 2006 'Year(Date) + 1
Else
monannee = 2005 'Year(Date)
End If
If lemois = Sheets("RTT 05-06").Range("h1").Offset(0, k).Text And Year(Sheets("personnel").Range("i2").Offset(I, 0)) = monannee Then
Range("h1").Offset(0, k).Activate
colonne = Left$(ActiveCell.Address(0, 0), (ActiveCell.Column < 27) + 2)
Sheets("RTT 05-06").Range(colonne & 2).Offset(I, 0).Value = "1er mois"

End If
End If


If Sheets("RTT 05-06").Range("A2").Offset(I, 0).Value = "" Then
Sheets("RTT 05-06").Range("G2").Offset(I, 0) = ""
Sheets("RTT 05-06").Range("h2").Offset(I, 0) = ""
Sheets("RTT 05-06").Range("i2").Offset(I, 0) = ""
Sheets("RTT 05-06").Range("j2").Offset(I, 0) = ""
Sheets("RTT 05-06").Range("k2").Offset(I, 0) = ""
Sheets("RTT 05-06").Range("l2").Offset(I, 0) = ""
Sheets("RTT 05-06").Range("m2").Offset(I, 0) = ""
Sheets("RTT 05-06").Range("n2").Offset(I, 0) = ""
Sheets("RTT 05-06").Range("o2").Offset(I, 0) = ""
Sheets("RTT 05-06").Range("p2").Offset(I, 0) = ""
Sheets("RTT 05-06").Range("q2").Offset(I, 0) = ""
Sheets("RTT 05-06").Range("r2").Offset(I, 0) = ""
Sheets("RTT 05-06").Range("s2").Offset(I, 0) = ""
End If
Next
Next
'Next
End If
End If
Next feuilles


For I = 0 To 70
rtt_accumulés = 0
'Range("A1", Range("A1").End(xlToRight)).Select
'Sélectionne la plage de la première cellule de la colonne jusqu'à la dernière cellule non-vide
For Each q In Sheets("RTT 05-06").Range("h2:s2").Offset(I, 0)
If IsNumeric(q) Then
rtt_accumulés = rtt_accumulés + q
End If
Sheets("RTT 05-06").Range("t2").Offset(I, 0).Value = rtt_accumulés
'Total de RTT prévu (rtt accumulé -mal-bles-abs+rtt restant) devient RTT année précedente le 31 janvier
'Range("t2").Offset(i, 0).Value = Range("s2").Offset(i, 0).Value - Range("c2").Offset(i, 0).Value - Range("d2").Offset(i, 0).Value - Range("e2").Offset(i, 0).Value + Range("u2").Offset(i, 0).Value
'Total RTT restant (RTT année précedente-RTT pris) f2 -b2 + RTT+ les RTT qu'il gagne en travail un samedi par exemple
Sheets("RTT 05-06").Range("u2").Offset(I, 0).Value = Sheets("RTT 05-06").Range("g2").Offset(I, 0).Value - Sheets("RTT 05-06").Range("b2").Offset(I, 0).Value + Sheets("RTT 05-06").Range("f2").Offset(I, 0).Value

Next

If Sheets("RTT 05-06").Range("A2").Offset(I, 0).Value = "" Then
Sheets("RTT 05-06").Range("t2").Offset(I, 0) = ""
Sheets("RTT 05-06").Range("u2").Offset(I, 0) = ""

End If
Next
Application.ScreenUpdating = True

End Sub
 
S

Sebb

Guest
Salut !
la réponse est OUI !
a+

Je plaisante ! mais c'est sacrément long ce que tu as là ! zZzZZzzZZz

1) je pense que tu pourrais stocker "mal" "ble" "abs" "ABS" ... dans une même variable, en prenant soin de la modifier si il y a l'accent sur "Blé"
ou alors impose un choix unique de "Blé" ca serait plus simple
lorsque tu fais ceci :
__________________________________________________________
If (z.Value = "Mal" Or z.Value = "MAL" Or z.Value = "mal") And z.Offset(-j - 1, 0).Interior.ColorIndex <> 15 Then
nb_mal = nb_mal + 1
End If
___________________________________________________________
et donc remplacer ton compteur de cette manière
"nb_" & Ta variable = "nb_" & Ta variable + 1

Idem avec la suite quand tu fais
___________________________________________________________
If z.Offset(-j - 1, 0).Interior.ColorIndex = 15 And (z.Value = "ABS" Or z.Value = "abs" Or z.Value = "Abs") Then
nb_abs = nb_abs + 2.5
____________________________________________________________


3)
simplifie :
____________________________________________________________
If Sheets("RTT 05-06").Range("A2").Offset(j, 0).Value = "" Then
Sheets("RTT 05-06").Range("c2").Offset(j, 0).Value = ""
Sheets("RTT 05-06").Range("d2").Offset(j, 0).Value = ""
Sheets("RTT 05-06").Range("e2").Offset(j, 0).Value = ""
Sheets("RTT 05-06").Range("B2").Offset(j, 0).Value = ""
Sheets("RTT 05-06").Range("f2").Offset(j, 0).Value = ""

End If
____________________________________________________________

en

____________________________________________________________
If Sheets("RTT 05-06").Range("A2").Offset(j, 0).Value = "" Then
Sheets("RTT 05-06").Range("a2:f2").Offset(j, 0).Value = ""
end if
____________________________________________________________

fais de même pour la suite quand tu fais
___________________________________________________________
If Sheets("RTT 05-06").Range("A2").Offset(I, 0).Value = "" Then
Sheets("RTT 05-06").Range("G2").Offset(I, 0) = ""
...
____________________________________________________________


à mon avis ca va dégrossir un peu mais il y a encore des modifs à faire
...
bon courage
 
Y

Yeahou

Guest
Re Bonjour Alex

voici un premier jus, n'hésite à bien documenter ton code, à spécifier tes boucles next et à adopter une notation qui facilite la lecture surtout pour tes imbrications de boucles. Pour améliorer encore, il faudrait reprendre le code en profondeur.
plutôt qu'un if var<>1 then end if: if var=1 then end if
fais plutôt if var=1 then else end if
quand tu teste la même valeur selon plusieurs possibilités avec des if successifs, tu peux utiliser à la place un select case qui fait la même chose en évaluant une seule fois la valeur.
Désolé mais je n'ai pas pu tester sans fichier.

Cordialement, A+

Sub Actualiser_les_RTT_05_06()

Application.ScreenUpdating = False
Sheets("jours").Range("b2:iv72").ClearContents
'horaires

Dim j As Variant
Dim nb_rtt As Double
Dim nb_cg As Double
Dim nb_mal As Double
Dim nb_ble As Double
Dim nb_travail As Double
Dim nb_abs As Double
Dim RTTplus As Integer
Dim feuilles
Dim nb_jour_travail As Double
Dim nb As Integer

'Worksheets("avril 2004").Select 'sélectionne la feuille du mois choisi
'Pour le premier employé de la société situé sur la 2eme ligne des deux feuilles

For j = 0 To 70

nb_rtt = 0
nb_cg = 0
nb_mal = 0
nb_ble = 0
nb_abs = 0
nb_travail = 0
RTTplus = 0
i = 0
r = 0
T = 0

' For Each feuilles In Worksheets(Array("janvier 2004", "février 2004", "mars 2004", "avril 2004", "mai 2004", "juin 2004", "juillet 2004", "août 2004", "septembre 2004", "octobre 2004", "novembre 2004", "décembre 2004"))
For Each feuilles In Worksheets
If Not (IsDate(feuilles.Name)) Then
' MsgBox feuilles.name & " impossible à traiter"
Else
If DateValue(feuilles.Name) >= DateValue("01/02/2005") And DateValue(feuilles.Name) <= DateValue("31/01/2006") Then
For Each z In feuilles.Range("B2:af2").Offset(j, 0)
Select Case LCase(z.Value)
Case Is = "rtt"
If z.Offset(-j - 1, 0).Interior.ColorIndex <> 15 Then
nb_rtt = nb_rtt + 1
''''''''''''''''''
T = T + 1
With Sheets("jours").Range("bA2")
If .Offset(j, T) = "" Then
''Connaitre les dates des jours de RTT
.Offset(j, T) = z.Offset(-j - 1, 0).Value & " " & feuilles.Range("a1")
Else
.Offset(j, T + 1) = z.Offset(-j - 1, 0).Value & " " & feuilles.Range("a1")
End If
End With
'''''''''''''''''''
End If
Case Is = "cg"
If z.Offset(-j - 1, 0).Interior.ColorIndex = 15 Then
nb_cg = nb_cg + 2.5
Else
nb_cg = nb_cg + 1
''''''''''''''''''''''''
i = i + 1
With Sheets("jours").Range("g2")
If .Offset(j, i) = "" Then
'Connaitre les dates des jours de congés
.Offset(j, i) = z.Offset(-j - 1, 0).Value & " " & feuilles.Range("a1")
Else
.Offset(j, i + 1) = z.Offset(-j - 1, 0).Value & " " & feuilles.Range("a1")
End If
End With
End If
''''''''''''''''''''''''''
Case Is = "mal"
If z.Offset(-j - 1, 0).Interior.ColorIndex = 15 Then
nb_mal = nb_mal + 2.5
Else
nb_mal = nb_mal + 1
End If
Case Is = "ble" Or "blé"
If z.Offset(-j - 1, 0).Interior.ColorIndex = 15 Then
nb_ble = nb_ble + 2.5
Else
nb_ble = nb_ble + 1
End If
Case Is = "abs"
If z.Offset(-j - 1, 0).Interior.ColorIndex = 15 Then
nb_abs = nb_abs + 2.5
Else
nb_abs = nb_abs + 1
End If
Case Is = "rtt+"
RTTplus = RTTplus + 1
r = r + 1
'connaitre les jours ou les RTT + ont été pris
With Sheets("jours").Range("a2")
If .Offset(j, r) <> "" Then
.Offset(j, r + 1) = z.Offset(-j - 1, 0).Value & " " & feuilles.Range("a1")
Else
.Offset(j, r) = z.Offset(-j - 1, 0).Value & " " & feuilles.Range("a1")
End If
End With
Case Else
End Select
Next z
End If
End If
Next feuilles

With Sheets("RTT 05-06")
.Range("c2").Offset(j, 0).Value = nb_mal
.Range("d2").Offset(j, 0).Value = nb_ble
.Range("e2").Offset(j, 0).Value = nb_abs
.Range("B2").Offset(j, 0).Value = nb_rtt
.Range("f2").Offset(j, 0).Value = RTTplus

'si aucun employé sur la ligne
If .Range("A2").Offset(j, 0).Value = "" Then
.Range("B2").Offset(j, 0).[A1:E1].ClearContents
End If
End With
Next j

'''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''


For Each feuilles In Worksheets
If Not (IsDate(feuilles.Name)) Then
' MsgBox feuilles.name & " impossible à traiter"
Else
If DateValue(feuilles.Name) >= DateValue("01/02/2005") And DateValue(feuilles.Name) <= DateValue("31/01/2006") Then
'permet de connaitre le nombre de jour congés et RTT possible à prendre par l'employé
nb_jour_semaine = 0
comptergris = 0
For Each cell In feuilles.Range("b1:af1")
If cell.Interior.ColorIndex = 15 Then '15 correspond a la couleur gris clair
comptergris = comptergris + 1
End If
Next cell
'MsgBox comptergris
'savoir combien de jour de semaine dans le mois
For Each cell In feuilles.Range("b1:af1")
If cell.Value <> "" And cell.Interior.ColorIndex <> 15 Then
nb_jour_semaine = nb_jour_semaine + 1
End If
Next cell
For i = 0 To 70
nb_jour_travail = 0
For Each X In feuilles.Range("B2:af2").Offset(i, 0)
If (X.Value = "A" Or X.Value = "a") And X.Offset(-i - 1, 0).Interior.ColorIndex <> 15 Then
nb_jour_travail = nb_jour_travail + 1
Else
If (X.Value = "M" Or X.Value = "m") And X.Offset(-i - 1, 0).Interior.ColorIndex <> 15 Then
nb_jour_travail = nb_jour_travail + 1
Else
If (X.Value = "N" Or X.Value = "n") And X.Offset(-i - 1, 0).Interior.ColorIndex <> 15 Then
nb_jour_travail = nb_jour_travail + 1
Else
If (X.Value = "J" Or X.Value = "j") And X.Offset(-i - 1, 0).Interior.ColorIndex <> 15 Then
nb_jour_travail = nb_jour_travail + 1
Else
If (X.Value = "Blé" Or X.Value = "ble" Or X.Value = "BLE" Or X.Value = "blé") And X.Offset(-i - 1, 0).Interior.ColorIndex <> 15 Then
nb_jour_travail = nb_jour_travail + 1
Else
If IsNumeric(X) Then
nb_jour_travail = nb_jour_travail + (X / 8)
Else
If (X.Value = "RTT" Or X.Value = "Rtt" Or X.Value = "rtt") And X.Offset(-i - 1, 0).Interior.ColorIndex <> 15 Then
nb_jour_travail = nb_jour_travail + 1
End If
End If
End If
End If
End If
End If
End If
Next X
nb_rtt_mois = (0.75 / nb_jour_semaine) * nb_jour_travail
'MsgBox nb_rtt_mois
'Impossible de cumuler plus de 0.75 jours de RTT par mois
If nb_rtt_mois > 0.75 Then
nb_rtt_mois = 0.75
End If
nb = Len(feuilles.Name) - 5
For k = 0 To 12 'pour les valeurs des colonnes a savoir les mois
If feuilles.Visible = True And Left(feuilles.Name, nb) = Sheets("RTT 05-06").Range("h1").Offset(0, k).Text Then
Range("H1").Offset(0, k).Activate
colonne = Left$(ActiveCell.Address(0, 0), (ActiveCell.Column < 27) + 2) 'connaître la lettre (et non le N°) de la colonne active
Sheets("RTT 05-06").Range(colonne & 2).Offset(i, 0).Value = nb_rtt_mois
End If
'''Lors du premier mois d'embauche, si celui ci n'est pas complet,
'''AQP ne paye que le nombre d'heures et il n'y a pas de capitalisation de RTT
If Day(Sheets("personnel").Range("i2").Offset(i, 0)) <> 1 Then
lemois = Month(Sheets("personnel").Range("i2").Offset(i, 0))
lemois = Format(Sheets("personnel").Range("i2").Offset(i, 0), "mmmm")
If lemois = "janvier" Then
monannee = 2006 'Year(Date) + 1
Else
monannee = 2005 'Year(Date)
End If
If lemois = Sheets("RTT 05-06").Range("h1").Offset(0, k).Text And Year(Sheets("personnel").Range("i2").Offset(i, 0)) = monannee Then
Range("h1").Offset(0, k).Activate
colonne = Left$(ActiveCell.Address(0, 0), (ActiveCell.Column < 27) + 2)
Sheets("RTT 05-06").Range(colonne & 2).Offset(i, 0).Value = "1er mois"
End If
End If
With Sheets("RTT 05-06")
If .Range("A2").Offset(i, 0).Value = "" Then
.Range("G2").Offset(i, 0).[A1:M1].ClearContents
End If
End With
Next k
Next i
End If
End If
Next feuilles
With Sheets("RTT 05-06")
For i = 0 To 70
rtt_accumulés = 0
'Range("A1", Range("A1").End(xlToRight)).Select
'Sélectionne la plage de la première cellule de la colonne jusqu'à la dernière cellule non-vide
For Each q In .Range("h2:s2").Offset(i, 0)
If IsNumeric(q) Then
rtt_accumulés = rtt_accumulés + q
End If
.Range("t2").Offset(i, 0).Value = rtt_accumulés
'Total de RTT prévu (rtt accumulé -mal-bles-abs+rtt restant) devient RTT année précedente le 31 janvier
'Range("t2").Offset(i, 0).Value = Range("s2").Offset(i, 0).Value - Range("c2").Offset(i, 0).Value - Range("d2").Offset(i, 0).Value - Range("e2").Offset(i, 0).Value + Range("u2").Offset(i, 0).Value
'Total RTT restant (RTT année précedente-RTT pris) f2 -b2 + RTT+ les RTT qu'il gagne en travail un samedi par exemple
.Range("u2").Offset(i, 0).Value = .Range("g2").Offset(i, 0).Value - .Range("b2").Offset(i, 0).Value + .Range("f2").Offset(i, 0).Value
Next q
If .Range("A2").Offset(i, 0).Value = "" Then
.Range("t2").Offset(i, 0) = ""
.Range("u2").Offset(i, 0) = ""
End If
Next i
End With
'n'est utile que si une autre macro continue et que l'on désire voir les modifs s'effectuer
Application.ScreenUpdating = True
End Sub
 
A

Alex

Guest
merci c super l'amélioration
et j'aurais voulu savoir si il était possible que qqn m'oriente sur comment faire pour mettre ca de facon a ne plus que ca corresponde o ligne mais o nom de personne car en fait pour le moment les calcul son fait par ligne car sur chaque ligne il y a toujours le meme nom mais dans le cas ou le nom différen de ligne la macro n'en tien pas compte
vous voyez ce que je veux dire?

Merci d'avance car c'est trés important pour moi
 

Discussions similaires

Réponses
2
Affichages
123

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali