Bonjour a tous,
Je cherche à apprendre comment fonctionne les array, pour ce faire je tente de modifier un bout de code dont je me serre très souvent qui me permet de supprimer des lignes en doublons:
'Détermination du nombre de lignes a traiter
B1 = 0
For I = 2 To Range("A1").End(xlDown).Row + 1
B1 = B1 + 1
Next I
'------------------------------------------
'Lancement de la suppression des lignes
ligne_Fin = B1
I = 1
While I < ligne_Fin - 1 ' I représente la ligne de référence
J = I + 1
While J < ligne_Fin + 1 'J reprensete la ligne que j etudis en comparaison de I
If Cells(I, 1).Value = Cells(J, 1).Value Then 'En cas d égalité je supprime la ligne J
Rows(J).Select
Selection.Delete
J = J - 1 'la suppression de la ligne J m obliger a décrémenter la valeur J de 1 (fonction while)
ligne_Fin = ligne_Fin - 1 'la colonne a traiter a une ligne de moins en fin de traitement cela _
' Améliore les perfos pour les grands fichiers
End If
J = J + 1
Wend
I = I + 1
Wend
Donc si je cherche à mettre en place des array cela pourrait devenir :
B1 = 0
For I = 2 To Range("A1").End(xlDown).Row + 1
B1 = B1 + 1
Next I
'------------------------------------------
' Creation de mon vecteur avec mise en valeure
ReDim ArrayTest(B1)
For I = 1 To B1
ArrayTest(I) = Cells(I, 1).Value
Next I
'-----------------------------------------
'lancement de la supression des lignes
ligne_Fin = B1
I = 1
While I < ligne_Fin - 1 'I represente la ligne de reference
J = I + 1
While J < ligne_Fin + 1 'J reprensete la ligne que j etudis en comparaison de I
If ArrayTest(I) = ArrayTest(J) Then 'En cas d egalite je supprime la ligne J
Rows(J).Select
Selection.Delete
'C est ici que je dois supprimer une ligne de mon vecteru mais je ne sais pas commant faire?
ligne_Fin = ligne_Fin - 1 ' je dois ici redimensionner mon vecteur
End If
J = J + 1
Wend
I = I + 1
Mon problème se situ au milieu du code ou je cherche a supprimer une ligne dans mon array et à le redimensionner.
Comment est ce que je peux faire cela ?
Cordialement
Alexandre BESSY
PS : en pièce jointe un exemple tout bête avec trois boutons (un pour créer une liste à nettoyer, un pour la nettoyer avec mon ancienne méthode et un dernier qui ne marche pas avec mon array).
Je cherche à apprendre comment fonctionne les array, pour ce faire je tente de modifier un bout de code dont je me serre très souvent qui me permet de supprimer des lignes en doublons:
'Détermination du nombre de lignes a traiter
B1 = 0
For I = 2 To Range("A1").End(xlDown).Row + 1
B1 = B1 + 1
Next I
'------------------------------------------
'Lancement de la suppression des lignes
ligne_Fin = B1
I = 1
While I < ligne_Fin - 1 ' I représente la ligne de référence
J = I + 1
While J < ligne_Fin + 1 'J reprensete la ligne que j etudis en comparaison de I
If Cells(I, 1).Value = Cells(J, 1).Value Then 'En cas d égalité je supprime la ligne J
Rows(J).Select
Selection.Delete
J = J - 1 'la suppression de la ligne J m obliger a décrémenter la valeur J de 1 (fonction while)
ligne_Fin = ligne_Fin - 1 'la colonne a traiter a une ligne de moins en fin de traitement cela _
' Améliore les perfos pour les grands fichiers
End If
J = J + 1
Wend
I = I + 1
Wend
Donc si je cherche à mettre en place des array cela pourrait devenir :
B1 = 0
For I = 2 To Range("A1").End(xlDown).Row + 1
B1 = B1 + 1
Next I
'------------------------------------------
' Creation de mon vecteur avec mise en valeure
ReDim ArrayTest(B1)
For I = 1 To B1
ArrayTest(I) = Cells(I, 1).Value
Next I
'-----------------------------------------
'lancement de la supression des lignes
ligne_Fin = B1
I = 1
While I < ligne_Fin - 1 'I represente la ligne de reference
J = I + 1
While J < ligne_Fin + 1 'J reprensete la ligne que j etudis en comparaison de I
If ArrayTest(I) = ArrayTest(J) Then 'En cas d egalite je supprime la ligne J
Rows(J).Select
Selection.Delete
'C est ici que je dois supprimer une ligne de mon vecteru mais je ne sais pas commant faire?
ligne_Fin = ligne_Fin - 1 ' je dois ici redimensionner mon vecteur
End If
J = J + 1
Wend
I = I + 1
Mon problème se situ au milieu du code ou je cherche a supprimer une ligne dans mon array et à le redimensionner.
Comment est ce que je peux faire cela ?
Cordialement
Alexandre BESSY
PS : en pièce jointe un exemple tout bête avec trois boutons (un pour créer une liste à nettoyer, un pour la nettoyer avec mon ancienne méthode et un dernier qui ne marche pas avec mon array).