Optimisation d'un code VBA pour évitez au maximum les accès aux feuilles

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 Select

Bonjour

Ce sont les select et activate mais il n'y en pas dans le code

dlt = Sheets("GCongés").Range("C99999").End(xlUp).Row

n'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 With

En 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

Rechercher des sujets similaires à "optimisation code vba evitez maximum acces feuilles"