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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
Sub colonnes()
Application.ScreenUpdating = False 'arrête le travail en arrière plan
Application.DisplayStatusBar = False 'inhibe la mise a jour de la barre d'état
Application.Calculation = xlCalculationManual 'le mode de calcul devient manuel
ActiveSheet.DisplayPageBreaks = False 'n'affiche plus les sauts de pages
Application.DisplayAlerts = False
Dim ligne1 As Long, ligne2 As Long, c As Long, i As Long, j As Long, fin As Long, l As Long
Dim T1, T2
ligne1 = Sheets(1).Range("A1").End(xlDown).Row
ligne2 = Sheets(2).Range("A1").End(xlDown).Row
'ReDim T1(1 To ligne1, 3)
' Sheets(1).Activate
'c = 1
'For i = 1 To ligne1
'T1(c, 0) = Range("A" & i).Value
'T1(c, 1) = Range("B" & i).Value
'T1(c, 2) = Range("C" & i).Value
'T1(c, 3) = Range("D" & i).Value
'c = c + 1
'Next
'sheets(2).Activate
'l = 1
'For i = 1 To ligne2
'T2(l, 0) = Range("A" & i).Value
'T2(l, 1) = Range("B" & i).Value
'l = l + 1
'Next
'tes tableaux a la base sont issus de range reste en base 1 et prends les directement comme ca (pas besoins de boucle de construction )
'bien qu'il ne soit pas necessaire de créer des variable tableau t1 et t2 car tes 2 plages ne servent qu'en lecture!!!! mais bon si tu veux
T1 = Sheets(1).Range("A1:D" & 500).Value 'remplace 500 par ligne1 j'ai mis 500 pour mes tests
T2 = Sheets(2).Range("A1:B" & 500).Value 'remplace 500 par ligne2 j'ai mis 500 pour mes tests
ReDim resultat(1 To ligne1, 1 To UBound(T1)) 'on reste en base 1 lignes/colonnes
For j = 1 To UBound(T2)
For i = 1 To UBound(T1)
If T1(i, 2) = T2(j, 2) Then
'les indexx de colonne resultat sont les meme que la plage de depart(1,2,3,4) et non (0,1,2,3)
resultat(i, 1) = T1(i, 1)
resultat(i, 2) = T2(j, 1)
resultat(i, 3) = T1(i, 3)
resultat(i, 4) = T1(i, 4)
End If
Next
Next
' encore une fois on reste en base 1
'Sheets(3).Range("A1").Resize(UBound(resultat, 1) + 1, UBound(resultat, 2) + 1) = resultat '???????????????????????????????
'donc
Sheets(3).Range("A1").Resize(ligne1, UBound(resultat, 2)) = resultat
Erase T1
Erase T2
Erase resultat
Application.ScreenUpdating = True ' travail en arrière plan
Application.DisplayStatusBar = True 'la barre d'état est mise a jour
Application.Calculation = xlAutomatic 'le mode de calcul redevient automatique
ActiveSheet.DisplayPageBreaks = True 'affiche les sauts de pages
Application.DisplayAlerts = True
End Sub |
Partager