Bonjour,
Sur ce forum, on m'a aidé à faire une macro qui appelle les données dans tous les tableaux Excel d'un dossier. Quand je la lance sur mon ordinateur elle marche très bien, cependant elle boucle sur toutes les lignes quand je la lance sur d'autres ordinateurs du réseau.(Après recherches, j'ai l'impression que c'est un bug qui vient du fait que je rentre mes données dans un tableau?)J'ai donc rajouté la ligne :
Application.EnableEvents = False
Le code marche maintenant sur tous les ordinateurs mais le temps d'excéution est vraiment très long. Il varie selon les ordinateurs de 54s à 84s et n'a pas forcément une durée constante sur un même ordinateur. Avant cela, le temps d'exécution du programme était d'environ 0,7s.
Voici le programme :
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
| Private Sub CommandButton1_Click()
Dim principal As ThisWorkbook
Dim repertoire As String
Dim fichier As String
Dim i As Integer
Dim start As Single
start = Timer
Range("B2:F2000").ClearContents
repertoire = "Q:\6- Production\17_Alerte qualité\Alertes signalées\"
fichier = Dir(repertoire & "*.xlsm")
i = 1
Application.EnableEvents = False
While Len(fichier) > 0
i = i + 1
Range("B" & i).FormulaR1C1 = "='" & repertoire & "[" & fichier & "]Alerte_qualité_fournisseur'!R4C3"
Range("C" & i).FormulaR1C1 = "='" & repertoire & "[" & fichier & "]Alerte_qualité_fournisseur'!R4C5"
Range("D" & i).FormulaR1C1 = "='" & repertoire & "[" & fichier & "]Alerte_qualité_fournisseur'!R6C3"
Range("E" & i).FormulaR1C1 = "='" & repertoire & "[" & fichier & "]Alerte_qualité_fournisseur'!R3C13"
Range("F" & i).FormulaR1C1 = "='" & repertoire & "[" & fichier & "]Alerte_qualité_fournisseur'!R9C10"
fichier = Dir
Wend
Application.EnableEvents = True
Application.ErrorCheckingOptions.BackgroundChecking = False
MsgBox "durée du traitement: " & Timer - start & " secondes"
End Sub |
J'ai testé en rajoutant : Application.screenupdating = false, cela me fait gagner environ 1s
Est-ce que quelqu'un aurait une idée de ce que je pourrais faire ?
Merci d'avance pour vos réponses
Partager