Programme vba excel - copie valeurs 2 fichier

Résolu/Fermé
Signaler
-
 altessie -
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.

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Bonjour,
Explique un peu mieux ce que tu veux faire... j'ai rien compris !
A+
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
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.
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.
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
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)
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 :-)