Je souhaite améliorer le code d'une macro pour résoudre deux problèmes :
- dans le code ci-dessous : je souhaiterais remplacer "ReDim Preserve mytab2(65000, 6) par quelque chose du genre ReDim Preserve mytab2(a, 6) avec a le nombre de ligne qui varie. Cependant, il semblerait que redim preserve ne modifie que la dernière dimension du tableau, donc si quelqu'un a une idée, peut-être avec (ReDim Preserve mytab2(6,a) puis un transpose mais je bloque?
-lorque je supprime tous les "OUI" (colonnes "G" et "H" de l'Onglet 1), le code provoque une erreur, à cause de la taille du tableau.
Je joins le fichier avec les explications.
- Code: Tout sélectionner
Option Base 1
Sub macrotest()
'BY Ketamacanna 15/02/11
Dim mytab1() As Variant, mytab2() As Variant, last_ligne1 As Long, last_ligne2 As Long, ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Onglet 1")
Set ws2 = Worksheets("Onglet 2")
last_ligne1 = ws1.Cells(65000, 1).End(xlUp).Row
last_ligne2 = ws2.Cells(65000, 1).End(xlUp).Row
If last_ligne1 = 1 Then Exit Sub
mytab1() = ws1.Range("A2:H" & last_ligne1)
borne_dim1 = UBound(mytab1, 1)
borne_dim2 = UBound(mytab1, 2)
For i = 1 To borne_dim1
If mytab1(i, 7) = "OUI" Or mytab1(i, 8) = "OUI" Then
a = a + 1
For j = 1 To 6
ReDim Preserve mytab2(65000, 6)
mytab2(a, j) = mytab1(i, j)
Next j
Else
End If
Next i
Range("J2:O30") = mytab2
Erase mytab1, mytab2
End Sub
Merci à ceux qui pourront se pencher sur ce problème.
Bonne journée
