Toujours s'habituer à la gestion des arrays et des loops. Quelqu'un voudrait-il souligner le problème avec cela?
Pour l'examiner, c'est une simple boucle qui vérifie a1: a100 en feuille un et vérifie contre b1: b100 dans chaque feuille, puis envoie le count dans Sheet1! C1: c100
Merci d'avance
Private Sub TheLoops() Dim SearchArray() Dim SheetArray() Dim ColumArray() Dim ReturnArray() Dim ModCount As Long SearchArray = Sheet1.Range("a1:a100") SheetArray(0) = Sheet1 SheetArray(1) = Sheet2 SheetArray(2) = Sheet3 ColumArray = ActiveSheet.Range("b1:b100") ReturnArray = Sheet1.Range("c1:c100") ModCount = 0 For I = LBound(SearchArray) To UBound(SearchArray) For L = LBound(ReturnArray) To UBound(ReturnArray) For J = LBound(SheetArray) To UBound(SheetArray) For K = LBound(ColumArray) To UBound(ColumArray) If SearchArray(I) = ColumArray(K) Then ModCount = ModCount + 1 End If Next K Next J ReturnArray(L) = ModCount ModCount = 0 Next L Next I End Sub
Est-ce correct?
SearchArray = Sheet1.Range("a1:a100").Value, LBound(SearchArray, 1) For I = SearchArray(I, LBound(SearchArray, 2)) to SearchArray(I, UBound(SearchArray, 2)) etc etc etc
Ce problème est descendu à .Range
ayant une propriété par défaut appelée Value
qui renvoie une Variant
bidimensionnelle. Ceci est incompatible avec le type auquel vous l'affectez.
Utilisez Dim SearchArray as Variant
, SearchArray = Sheet1.Range("a1:a100").Value
, LBound(SearchArray, 1)
suivi d'une indexing bidimensionnelle: SearchArray(I, LBound(SearchArray, 2))
.
Refactorer les autres variables d'une manière similaire.