Votre question
Résolu

Récupération de donnée entre deux classeurs Excel avec condition

Tags :
  • Microsoft Excel
  • Programmation
Dernière réponse : dans Programmation
20 Septembre 2016 16:50:56

Bonjour,

Je débute actuellement en VBA et l'on m'a demandé de créer une macro permettant de récupérer des informations sur un classeur excel et de le copier dans un autre mais avec certaines condition.

Je m'explique : Dans le tableau ou je dois copier les informations j'ai deux colonnes qui servent de référence "Nom" et "Prénom" et donc si ces cellules sont remplis et identique dans les deux tableaux je dois faire remonter les info du fichier 2 dans le fichier 1.

J'ai essayé plusieurs méthode mais aucune n'a été concluante c'est pour cela que je me tourne vers des personnes plus expérimentés

Merci d'avance pour vos réponse.

Autres pages sur : recuperation donnee classeurs excel condition

a b L Programmation
21 Septembre 2016 11:06:51

Salut, rien de bien sorcier en effet, post ce que tu as essayé et qui te semblait le plus pertinent ... et on verra pour faire fonctionner tout ça ;) 
Par contre j'ai pas tout fait compris ce que tu désires copier ...
Si j'ai bien compris tu as les colonnes "Nom" et "Prénom" dans les 2 fichiers (disons A et B)
ton code doit être qqch du genre:
  1. si (A.Prénom = B.Prénom) ET (A.Nom = B.Nom) alors je copie certaines données de A vers B

C'est bien ça ? (précises quelles sont les données à copier, et ou tu veux les copier ...
m
0
l
26 Septembre 2016 08:29:38

Bonjour drul

Désolé pour l'attente de ma réponse.
tout d'abord j'ai essayer la méthode ADO, puis la méthode avec ouverture et fermeture du deuxième fichier.
Et concernant les données à copié c'est exactement ce que tu as compris.
m
0
l
Contenus similaires
a b L Programmation
26 Septembre 2016 09:11:32

Ben non justement, j'ai pas compris ce qui devait être copié, ni ou ... les conditions c'est bon ,mais les données non ...
C'est quoi la méthode ADO ?
m
0
l
26 Septembre 2016 09:26:53

Dans le fichier2 j'ai trois informations qu'il faut que je copie si le "Nom" et le "Prénom" sont les mêmes dans les deux fichiers
m
0
l
a b L Programmation
26 Septembre 2016 09:40:48

c'est pas gagné ...
Dis m'en plus !
m
0
l
26 Septembre 2016 09:46:39

y a t il un moyen pour que je te donne les docs pour que ce soit plus explicite

m
0
l
a b L Programmation
26 Septembre 2016 10:02:14

Non, mais tu peux mettre des prints screens sur un site partage d'image (casimage, hostingpics par exemple)
m
0
l
26 Septembre 2016 10:14:44

les voilà
m
0
l
26 Septembre 2016 10:15:49

d'accord les screen ne s'affiche pas
m
0
l
a b L Programmation
26 Septembre 2016 13:32:06

Faut les uploader via un site comme www.casimages.com et copier le lien forum ici.
m
0
l
26 Septembre 2016 16:03:49




voila
m
0
l
a b L Programmation
26 Septembre 2016 16:19:12

Donc,
Si 1.nom = 2.nom ET 1.prénom = 2.prénom alors on copie info0, info1 et info2 de fichier 2 vers fichier 1
c'est bien ça ?

Fichier1 et Fichier2 sont déjà "ouvert" ou faut les ouvrir via le code? Le code est situé dans quel fichier ?

P.S. le contenu de chrome n'intéresse personne ici, la prochaine fois ne copie que la fenêtre active (Alt + PrintScreen)
m
0
l
26 Septembre 2016 16:29:50

Désolé pour la page internet je n'avais pas vu que mon deuxième écran avait été pris dans le screen.

Effectivement la condition est celle la et de préférence que le fichier 2 ne soit pas ouvert ou qu'il l'ouvre et le referme
m
0
l
a b L Programmation
26 Septembre 2016 16:33:45

Ok,
Dernière question tu comptes la lancé comment ta macro ?
m
0
l
26 Septembre 2016 16:39:08

Avec un bouton nommé "importation"

mais pour le bouton je n'ai pas de problèmes
m
0
l
a b L Programmation
26 Septembre 2016 17:05:53

Une idée:
  1. Option Explicit
  2. Sub test()
  3. Dim shFichier1 As Worksheet
  4. Dim wbFichier2 As Workbook
  5. Dim shFichier2 As Worksheet
  6. Dim derLigne1 As Long
  7. Dim derLigne2 As Long
  8. Dim i As Long
  9. Dim j As Long
  10. 'initialisation
  11. Set shFichier1 = ThisWorkbook.Sheets("feuil1")
  12. 'on cherche la dernière société présente dans le fichier 1
  13. derLigne1 = shFichier1.Cells(Rows.Count, "A").End(xlUp).Row
  14.  
  15. Set wbFichier2 = Workbooks.Open(ThisWorkbook.Path & "\fichier2.xlsx")
  16. Set shFichier2 = wbFichier2.Sheets("feuil1")
  17. derLigne2 = shFichier2.Cells(Rows.Count, "A").End(xlUp).Row
  18.  
  19. For i = 2 To derLigne1 'En ligne 1 ya les entêtes
  20. For j = 2 To derLigne2
  21. If (shFichier1.Cells(i, 1).Value = shFichier2.Cells(j, 1).Value) _
  22. And (shFichier1.Cells(i, 2).Value = shFichier2.Cells(j, 2).Value) Then
  23.  
  24. shFichier2.Range(shFichier2.Cells(j, 3), shFichier2.Cells(j, 5)).Copy shFichier1.Range(shFichier1.Cells(i, 3), shFichier1.Cells(i, 5))
  25. End If
  26.  
  27. Next
  28. Next
  29. wbFichier2.Saved = True
  30. wbFichier2.Close
  31. End Sub
m
0
l
26 Septembre 2016 17:38:40

Merci infiniment drul cela marche parfaitement

m
0
l
a b L Programmation
26 Septembre 2016 19:57:50

Je devrais vous faire plus bosser ... :non: 
m
0
l
27 Septembre 2016 08:01:38

bah étant donné que j'avais déjà pas mal bosser dans mon coin dans mon cas tu n'avais pas besoin ^^
m
0
l

Meilleure solution

a b L Programmation
27 Septembre 2016 08:05:39

Tu peux clore stp (sélectionner meilleur solution).
La prochaine toutefois, l'idéal serait de partir de ton code et de le faire évoluer, le but ici n'est pas que je fasse vos macro, mais que je vous aide à maîtriser le vba (cette remarque vaut plus pour moi que pour toi :pt1cable: ).
partage
27 Septembre 2016 09:03:05

bah enfaite j'ai j'ai un peux modifié ton code


m
0
l