Programme vba excel - copie valeurs 2 fichier
Résolu
altessie
-
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.
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:
- Programme vba excel - copie valeurs 2 fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
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 ?
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 ?
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est OK cette fois je pense que j'y suis.
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)
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)