Macro excel 2007

Fermé
bombadilom - 18 mai 2011 à 11:55
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 18 mai 2011 à 12:27
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 mercredi 11 juin 2008 Statut Membre Dernière intervention 12 février 2014 8
18 mai 2011 à 12:00
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
18 mai 2011 à 12:18
Bonjour,

sur quelle ligne se produit ta 1004?

tu restitues toujours en D5 ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
18 mai 2011 à 12:24
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
ç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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
18 mai 2011 à 12:27
et bing, une bosse!, nos messages se sont croisés
0