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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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