Recuperer des donnees via des criteres
Bonjour tout le monde
J'ai un problème
le code ci-joint marche très bien ,je demande s'il y a possibilité de le modifier et de l'adapter avec la methode sur les filtres ou autre chose pour que ca se charge tres rapidement.Actuellement ya pas bcp de donnees mais si je mets un fichier de 6000lignes ca prend plusieurs minutes pour se charger
Je veux juste une autre methode pour charger rapidement les feuilles DIS_Laval et DIS_Quebec
Merci
Bonjour
Le souci vient de l'utilisation des boucles. Là il faudrait utiliser les tableaux VBA.
On peut faire mieux mais essaie en changeant déjà ceci :
Au début du code :
.Cells(1, 1) = "Intervention": .Cells(1, 2) = "Conclusion": .Cells(1, 3) = "Code": .Cells(1, 4) = "Genre_Intervention": .Cells(1, 5) = "Statut": .Cells(1, 6) = "Date_début": .Cells(1, 7) = "Date_fin": .Cells(1, 8) = "Code_Inspecteur": .Cells(1, 9) = "Anomalie": .Cells(1, 10) = "Numero_demande": .Cells(1, 11) = "Date_Creation_Demande": .Cells(1, 12) = "Nom_Inspecteur": .Cells(1, 13) = "Prenom_Inspecteur": .Cells(1, 14) = "Domaine_Intervention"
par :
Feuil1.Range("A1:N1").Copy .Range("A")
Plus bas une ligne identique à changer dans le même esprit :
.Cells(lig, 1) = Feuil1.Cells(i, 1): .Cells(lig, 2) = Feuil1.Cells(i, 2): .Cells(lig, 3) = Feuil1.Cells(i, 3): .Cells(lig, 4) = Feuil1.Cells(i, 4): .Cells(lig, 5) = Feuil1.Cells(i, 5): .Cells(lig, 6) = Feuil1.Cells(i, 6): .Cells(lig, 7) = Feuil1.Cells(i, 7): .Cells(lig, 8) = Feuil1.Cells(i, 8): .Cells(lig, 9) = Feuil1.Cells(i, 9): .Cells(lig, 10) = Feuil1.Cells(i, 10): .Cells(lig, 11) = Feuil1.Cells(i, 11): .Cells(lig, 12) = Feuil1.Cells(i, 12): .Cells(lig, 13) = Feuil1.Cells(i, 13): .Cells(lig, 14) = Feuil1.Cells(i, 14)
par :
Feuil1.Range("A" & i & ":N" & i).Copy .Range("A" & lig)
Dis moi si cela améliore et si tu travailles sous excel Windows ou Excel MAC
Cordialement
Merci Dan
je travaille avec excel windows .j'ai utilisé tes deux codes ça marche mais je veux utiliser les tableaux pour que ca soit beaucoup plus rapide
Merci encore
Salut Dan
J'ai utilisé un tableau et j'ai la solution ca marche
Merci
Private Sub Worksheet_Activate()
Dim MonTab1 As Variant, Compt11 As Long, Plg1 As Range, Plg2 As Range
Dim j As Long
With Feuil1
.Range("A1:N1").Copy Feuil4.Range("A1")
Set Plg1 = .Range("A2:N" & .Range("A" & .Rows.Count).End(xlUp).Row)
MonTab1 = Plg1.Value
j = 2
For Compt11 = LBound(MonTab1, 1) To UBound(MonTab1, 1)
Z = .Cells(Compt11, 13) & Chr(32) & .Cells(Compt11, 12)
'Z = MonTab1(Compt11, 13) & Chr(32) & MonTab1(Compt11, 12)
Set trouve = Feuil2.Columns(4).Find(Z, lookat:=xlWhole)
If Not trouve Is Nothing Then
MonTab1 = Feuil1.Range("A" & Compt11 & ":N" & Compt11)
With Feuil4
Set Plg2 = .Range("A" & j & ":N" & j)
'Set Plg2 = .Range("A1:N1")
Plg2.Value = MonTab1
End With
j = j + 1
End If
Next Compt11
End With
End Sub