Programme vba excel - copie valeurs 2 fichier

Résolu/Fermé
altessie - 30 sept. 2010 à 17:52
 altessie - 1 oct. 2010 à 10:22
Bonjour,


Je suis en train d'effectuer un programme en visual basic sur Excel. Ce dernier compare les valeurs de deux colonnes de deux fichiers excel et vient prendre les valeurs de la colonne d'à côté du fichier 2 et vient la coller dans le fichier 1 à la bonne ligne article.
Par exemple :
fichier 1 : fichier 2:
colonne A : colonne A : Colonne B
1 3 A
2 15 B
3 8 C
4 1 D

Je souhaite que la colonne B du fichier 1 affiche donc :
D
0
A
0

La difficultée se trouve dans les deux fichiers excel. Il faut savoir que j'en ait créé l'un et que le deuxième est réceptionné. Je ne sais pas quelle options et comment il a été créé.

Mon code actuel est :


Set sh2 = Workbooks("Classeur2.xls").Sheets("Feuil1").Range("A1:A500")
Set sh1 = Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A1:A500")



For Each c In sh2
temp = c.Value
If temp <> "" Then
Set plage = sh1.Columns("A").Cells.Find(temp)

line = plage.Row
Workbooks("Classeur1.xls").Sheets("Feuil1").Cells(line, 3).Value = c(1, 3).Value

End If

Next


Le script plante à la ligne line = plage.row
Quand je copie le fichier reçu dans un nouveau classeur excel, il bugge aussi mais les valeurs sont bien collés dans mon premier classeur.

Est ce que quelqu'un a une idée de ce qui se passe et de comment je peut y remédier ?

Merci par avance pour toute aide que vous pourrez m'apporter.
A voir également:

6 réponses

Je vais essayer d'etre plus clair.
Fichier excel 1, j'ai des références dans la colonne A.
fichier excel 2, j'ai des références dans la colonne A et des valeurs associées dans les colonnes qui suivent.
je souhaite pour chaque référence du fichier 2, copier les valeurs dans le fichier 1 mais a la référence associée.
par exemple pour la ref : 123 du fichier 2 je veux copier les nombres associées dans le fichier 1 sur la ligne de la ref 123. c plus clair ?
1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
30 sept. 2010 à 19:51
Bonjour,
Explique un peu mieux ce que tu veux faire... j'ai rien compris !
A+
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
30 sept. 2010 à 22:00
Oui, je crois avoir compris,
Les références dans les colonnes A sont aux mêmes endroits sur les deux classeurs ou à des emplacements différents.
0
Des emplacements différents. Mon programme prend donc les cellules 1 a 1 du fichier 2 et cherche son emplacement dans le fichier avant de pouvoir coller les valeurs sur le reste de la ligne correspondante. Dit moi si c pas clair. Comme je suis dedans depuis un certain temps ca me parait limpide mais je suis pas vraiment objective.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 30/09/2010 à 23:43
C'est OK cette fois je pense que j'y suis.
Sub RECOPIER() 
Dim WkSource As Worksheet 
Dim Wkcopie As Worksheet 
Dim LigSource As Long 
Dim LigCopie As Long, Temp As Variant, DerLig As Long 
'Adapter les Wk aux deux classeurs 
    Set WkSource = Workbooks("Classeur2.xls").Sheets("Feuil1") 
    Set Wkcopie = Workbooks("Classeur1.xls").Sheets("Feuil1") 
    DerLig = Wkcopie.Range("A65536").End(xlUp).Row 
    For LigSource = 1 To WkSource.Range("A65536").End(xlUp).Row 
        Temp = WkSource.Cells(LigSource, 1) 
        For LigCopie = 1 To DerLig 
            If Wkcopie.Cells(LigCopie, 1) = Temp Then 
                Wkcopie.Cells(LigCopie, 2) = WkSource.Cells(LigSource, 2) 
                Exit For 
            End If 
        Next LigCopie 
    Next LigSource 
End Sub


Tu dis,
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
0
Super merci, ca marche !!!!!

J'étais partie sur le même principe au début mais j'avais pas réussit à le mettre en oeuvre d'où le programme que j'ai posté.

Merci beaucoup pour ton aide :-)
0