Macro excel 2007

bombadilom -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je dois comparer deux tableaux.
Je fais donc une boucle qui parcours le premier tableau ligne par ligne, et une boucle imbriqué qui parcours le deuxième tableau.
Quand les valeurs sont identiques, il y a copie de la ligne entière dans le premier tableau.

Sub test()
Dim numlign As Integer
Dim SAPAccount As Integer
Dim Paye As String
Dim i As Integer
Dim LignSAP As Integer

numlign = Feuil2.UsedRange.Rows.Count
numSAP = Feuil1.UsedRange.Rows.Count
SAP = Feuil2.Cells(numlign, 1).Value
For i = 1 To numlign
LignSAP = 1
For LignSAP = 1 To numSAP
If Cells(i, 1).Value = Cells(LignSAP, 1) Then
With Sheets("Feuil2")
.Range(Cells(i, 1), .Cells(ligne, 5)).Copy _
Sheets("Feuil1").Range("D5")
End With

End If
Next
Next
End Sub

Et là, patatra c'est le drame, erreur d'execution 1004.
J'ai tourné et retourné le problème mais mon cerveau a du perdre trop de neurones, je ne trouve pas ou je me suis planté.
¨Pourriez vous m'aider ?

A voir également:

2 réponses

sirefalas Messages postés 219 Date d'inscription   Statut Membre Dernière intervention   8
 
avec un peu de recherche sur le forum (5 secondes):

https://forums.commentcamarche.net/forum/affich-1740681-vba-erreur-1004
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
Bonjour,

sur quelle ligne se produit ta 1004?

tu restitues toujours en D5 ?
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
en regardant de plus près il te manque un point devant cells(i,1); piège classique avec les with en with (je me sens moins seul, merci) :-)

.Range(.Cells(i, 1), .Cells(ligne, 5)).Copy _
Sheets("Feuil1").Range("D5") 


mais il ya peut-^tre autre chose...

d'autre part, avant tes boucles insère cette instruction
Application.screenupdating=false
qui fige le défilement de l'écran.
0
bombadilom
 
ça se situe ici

With Sheets("Feuil2")
.Range(Cells(i, 1), .Cells(ligne, 5)).Copy _
Sheets("Feuil1").Range("D5")

et oui pour le test je restitue toujours en D5, Une fois que j'aurai ce copier / coller, ce sera incrémenté ligne par ligne.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
et bing, une bosse!, nos messages se sont croisés
0