bonjour à tous,
pouvez-vous m'indiquer comment diminuer le temps d'exécution de ce macro qui fait:
j'ai un classeur qui contient des feuilles la 1ère s'appelle "donnees. mon objectif est de remplir les autres feuilles à partir à condition que le nom de la feuille se trouve dans la 1ère plage de "donnees" et si la plage n°3 de "donnees" correspond aux plages n° 1 et 4 de la feuille
Sub remplirfeuille()
Dim Lst() As String
Dim j As Integer
Dim I As Integer
Dim N As Variant 'Integer
Dim l As Integer
Dim p As Integer
Dim temp1 As String
ReDim Lst(Sheets.Count - 1)
Dim debut As Date, temps As Date, fin As Date
debut = Time
Application.ScreenUpdating = False
Application.DisplayAlerts = False
N = Sheets("donnees").Range("A1").End(xlDown).Row
For I = 1 To Worksheets.Count
Lst(I) = Worksheets(I).Name
temp1 = Lst(I)
For j = 2 To N
If (Sheets("donnees").Cells(j, 1).Value = temp1) Then
For p = 5 To 306
If (Sheets(I).Cells(p, 1).Value = Sheets("donnees").Cells(j, 4).Value) Then
Sheets(I).Cells(p, 3).Value = -Sheets("donnees").Cells(j, 6).Value
ElseIf (Sheets(I).Cells(p, 6).Value = Sheets("donnees").Cells(j, 4).Value) Then
Sheets(I).Cells(p, 4).Value = Sheets("donnees").Cells(j, 6).Value
End If
Next p
End If
Next j
Next I
fin = Time
temps = fin - debut
MsgBox ("C'est fini !" & Chr(10) & "temps de traitement " & temps)
End Sub
merci!
pouvez-vous m'indiquer comment diminuer le temps d'exécution de ce macro qui fait:
j'ai un classeur qui contient des feuilles la 1ère s'appelle "donnees. mon objectif est de remplir les autres feuilles à partir à condition que le nom de la feuille se trouve dans la 1ère plage de "donnees" et si la plage n°3 de "donnees" correspond aux plages n° 1 et 4 de la feuille
Sub remplirfeuille()
Dim Lst() As String
Dim j As Integer
Dim I As Integer
Dim N As Variant 'Integer
Dim l As Integer
Dim p As Integer
Dim temp1 As String
ReDim Lst(Sheets.Count - 1)
Dim debut As Date, temps As Date, fin As Date
debut = Time
Application.ScreenUpdating = False
Application.DisplayAlerts = False
N = Sheets("donnees").Range("A1").End(xlDown).Row
For I = 1 To Worksheets.Count
Lst(I) = Worksheets(I).Name
temp1 = Lst(I)
For j = 2 To N
If (Sheets("donnees").Cells(j, 1).Value = temp1) Then
For p = 5 To 306
If (Sheets(I).Cells(p, 1).Value = Sheets("donnees").Cells(j, 4).Value) Then
Sheets(I).Cells(p, 3).Value = -Sheets("donnees").Cells(j, 6).Value
ElseIf (Sheets(I).Cells(p, 6).Value = Sheets("donnees").Cells(j, 4).Value) Then
Sheets(I).Cells(p, 4).Value = Sheets("donnees").Cells(j, 6).Value
End If
Next p
End If
Next j
Next I
fin = Time
temps = fin - debut
MsgBox ("C'est fini !" & Chr(10) & "temps de traitement " & temps)
End Sub
merci!