Programme vba excel - copie valeurs 2 fichier

Résolu
altessie -  
 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

  1. altessie
     
    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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Explique un peu mieux ce que tu veux faire... j'ai rien compris !
    A+
    0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  4. altessie
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  7. altessie
     
    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