Optimisation d'un code VBA pour évitez au maximum les accès aux feuilles
k
Voici mon code veuillez m'aider à l'optimiser pour évitez au maximum les accès aux feuilles
Select Case mem
Case Is = "Tt"
If Me.NomPrenom = "" Or Me.txtdate = "" Then
MsgBox ("Il manque des informations")
Else
Sheets("GCongés").ListObjects(1).ListRows.Add
dlt = Sheets("GCongés").Range("C99999").End(xlUp).Row
Sheets("GCongés").Range("C" & dlt) = CDate(Me.txtdate)
Sheets("GCongés").Range("D" & dlt) = Me.NomPrenom
Sheets("GCongés").Range("E" & dlt) = mem
Sheets("GCongés").Range("F" & dlt) = Me.txtdebut
Sheets("GCongés").Range("G" & dlt) = Me.txtdpause
Sheets("GCongés").Range("H" & dlt) = Me.txtfpause
Sheets("GCongés").Range("I" & dlt) = Me.txtfin
MsgBox ("Le temps de travail de " & Me.NomPrenom & " a été planifié")
End If
Case Is = "CA"
If Me.NomPrenom = "" Or Me.txtCAne = "" Or Me.txtdebut = "" Or Me.txtNbjrs = "" Then
MsgBox ("Il manque des informations")
Else
x = Me.txtNbjrs
y = Me.txtdebut
Do Until x = 0
Sheets("GCongés").ListObjects(1).ListRows.Add
dlt = Sheets("GCongés").Range("C99999").End(xlUp).Row
Sheets("GCongés").Range("C" & dlt) = y
Sheets("GCongés").Range("D" & dlt) = Me.NomPrenom
Sheets("GCongés").Range("E" & dlt) = mem
Sheets("GCongés").Range("L" & dlt) = Me.txtCAne
x = x - 1
y = DateAdd("d", 1, y)
Loop
MsgBox ("L'absence de " & Me.NomPrenom & " est planifiée")
End If
End SelectBonjour
Ce sont les select et activate mais il n'y en pas dans le code
dlt = Sheets("GCongés").Range("C99999").End(xlUp).Rown'est pas une bonne pratique. Utilise
With Sheets("GCongés").ListObjects(1)
lig = .ListRows.Add.index
.ListColumns("Date").DataBodyRange.Rows(lig) = = CDate(Me.txtdate)
....
End WithEn adaptant les noms des colonnes du tableau. C'est plus lisible et permet de déplacer le tableau ou d'insérer des colonnes sans toucher au code
Il vaut mieux grouper les tests puis avoir un seul groupe de lignes pour le remplissage en ne testant le case que pour les lignes qui ne sont pas remplies dans tous les cas