Simplification d'une VBA qui semble assez lourde

Fermé
DavidDURAN Messages postés 6 Date d'inscription dimanche 8 octobre 2017 Statut Membre Dernière intervention 10 octobre 2017 - Modifié le 9 oct. 2017 à 17:40
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 - 9 oct. 2017 à 19:27
Bonjour,
Suite à plusieurs recherches sur le Net, j'ai réussi à trouver plusieurs VBA qui correspondaient à mes souhaits. Mon objectif est d'ajouter automatiquement une ligne pour inscrire une nouvelle personne. Par la même occasion je souhaite que le processus désactive et réactive le verrouillage afin d'éviter toutes fausses manipulations de mes collègues. Voici le VBA :

Sub Ajout_CDD()
'Déverrouiller toutes les feuilles
    Dim nombre As Integer
    Dim Motdepasse As String
    Motdepasse = "MotdePasse"
    nombre = ActiveWorkbook.Sheets.Count
    Application.ScreenUpdating = False
    For i = 1 To nombre
    Worksheets(i).Unprotect Password:=Motdepasse
    Next i
    
' Ajout CDD Macro
    Sheets("Sept").Select
    Range("A7").Select
    Selection.End(xlDown).Offset(1, 0).Select

' Ajout ligne
    Dim Ligne As Long, F As Integer
    Ligne = ActiveCell.Row
    For F = 1 To Sheets.Count
    If Not (Sheets(F).Name = "Accueil") Then
    Sheets(F).Rows(Ligne).Copy
    Sheets(F).Rows(Ligne).Insert Shift:=xlDown
    End If
    Next F
    Application.CutCopyMode = False
    
' Verrouiller toutes les feuilles
    Motdepasse = "MotdePasse"
    nombre = ActiveWorkbook.Sheets.Count
    Application.ScreenUpdating = False
    For i = 1 To nombre
    Worksheets(i).Protect Password:=Motdepasse
    Next i

End Sub

Ma question : est-il possible de simplifier le VBA qui mouline un peu lors de l'exécution ?

Merci d'avance pour vos réponses.

2 réponses

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
9 oct. 2017 à 17:55
Bonjour,

Sans avoir regardé ton code .... je peux déjà te dire que tu peux mettre
Application.ScreenUpdating = false


au début de ton code puis le remettre à true à la fin.
ça te fera gagner du temps dans l'exécution de ton code.

0
DavidDURAN Messages postés 6 Date d'inscription dimanche 8 octobre 2017 Statut Membre Dernière intervention 10 octobre 2017
9 oct. 2017 à 18:03
Merci Jordane, pour ta réponse.
Novice en VBA, quelle est la fonction de ta ligne ?
Peut-on ajouter cette fonction dans tous les VBA ?

En te remerciant,
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
9 oct. 2017 à 19:27
Sélectionne la fonction dans ton vbe.... puis appuies sur la touche magique..F1
tu verras alors à quoi ça sert :-)
0