Probleme de Range erreur 1004 !!! VB Excel

Résolu/Fermé
kamoul - 28 juil. 2010 à 10:24
 kamoul - 28 juil. 2010 à 17:14
Bonjour,
J'ai un code qui bloque, maisje ne sais pas pourquoi
C'est juste une recopie d'une plage vers une autre



'Déclaration des variable
Destination = 2
FinBas = Worksheets("Parts").Range("A65536").End(xlUp).Row

'Recopiage des résultats dans la feuille de résultats
For i = 1 To FinBas
If Worksheets("Parts").Range(Cells(i, FinDroite + 2), Cells(i, FinDroite + 2)).Value = "Doublon" Then
Worksheets("ResultatTri").Range(Cells(Destination, 1), Cells(Destination, FinDroite)) = Worksheets("Parts").Range(Cells(i, 1), Cells(i, FinDroite))
If Worksheets("Parts").Range("AH" & i).Value = Worksheets("Parts").Range("AH" & i + 1).Value Then
Destination = Destination + 1
Else
Destination = Destination + 2
End If
End If

Next i


Je comprend pas parce que la propriété range fonctionne avec des lettres dedans
Je remercie par avance quiconque m'aide

Cordialement Kamoul

5 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
28 juil. 2010 à 14:06
Bonjour,

ton souci vient de la feuille active: comme tu en utilises 2...

maquette "vite fait":
Sub nnnn()
Destination = 2
Findroite = 4
i = 1
With Sheets(1)
     tablo = .Range(.Cells(Destination, 1), .Cells(Destination, Findroite)).Value
End With
With Sheets(2)
    .Range(.Cells(i, 1), .Cells(i, Findroite)) = tablo
End With
End Sub


comme tu boucles sur n lignes

écris cette ligne en début de macro
Application.ScreenUpdating = False

qui fige le défilement de l'écran et te fait gagner un temps

Enfin, les select-selection, copy-paste sont à éviter au maximum dans une procédure: ocupation mémoire, temps de procédure très longue
2