Я подозреваю, что ваша проблема может быть связана с количеством записей, которые вы обрабатываете. i - целое число, ограничивающее его до 32000 макс Ваш цикл для i = 1 К nblignetampon + 1 добавляет i = i + 1 всякий раз, когда ссылка не найдена, плюс снова на Next i . Так что я бы вырос в два раза быстрее, чем вы ожидаете, и, возможно, превысил бы максимально допустимое для целого числа. Вот почему строки и столбцы всегда должны быть объявлены как Long. В вашем коде есть дополнительная ошибка, потому что он проверяет только все остальные строки.
Кстати, tableauref , кажется, дал вам проблему.
tableauref = Worksheets("BD QE").Range(Worksheets("BD QE").Cells(1, 4), Worksheets("BD QE").Cells(nbligneBD, 4)).Value
даст вам 2-мерный массив (на основе 1), то есть он имеет nbligneBD строк и 1 столбец. Поэтому значение ячейки D1 будет в tableauref (1,1), D2 = tableauref (2,1), D [nbligneBD] = tableauref (Ubound (tableauref), 1)
Другая вещь, которая меня поразила, заключается в том, что вам не нужно определять полный диапазон Destination в функции Copy . Достаточно определить первую ячейку. Конечно, первая ячейка - Worksheets("BD QE").Cells(Worksheets("BD QE").Rows.Count, "A").End(XlUp)
Итак, ваш подсчет nbligneBD кажется излишним.
Надеюсь, я правильно определил проблему. Это предположение.