Bonjour je doit regulierement importer certains données d'un fichier excel vers un autre et ce sur les données un colonne identique des deux fichiers.
Comment faire?
Bonjour je doit regulierement importer certains données d'un fichier excel vers un autre et ce sur les données un colonne identique des deux fichiers.
Comment faire?
Hello,
Peux tu nous expliquer plus précisément ce que tu souhaites réalisé, plus tu seras précis dans tes explications plus on pourra t'apporter une réponse adapté.
De plus as tu déjà fais un peu de programmation sur VBA?
Très Cordialement,
salut tout d'abord de la programmation proprement dit en vba non à moins que faire un site en html y ressemble. Par contre j'ai déja fait de l'objetpal.
D'ailleurs ce que je veux faire ici je le faisait en passant par Paradox jusqu'a présent.Mais c'est trop fastidieux à faire.
Je dois faire une requete pour extraire des données une fichier excel avec comme argument des données d'un autre fichier.
Cas concret j'ai un fichier "liste de prix" que je recois d'un fournisseur qui contient +-8000 articles avec comme
enregistrement ref. art et prix, et j'ai un autre fichier qui contient +-1000 articles avec entre autre comme enregistrement ref. art et prix et je dois extraire les données correspondant de la première au deuxieme.
Et je dois faire cette opération un dizaine fois par an.
Je ne sais pas si je suis sur le bon forum pour ce probleme si c'est le cas désole de vous avoir dérangés
merci d'avance
Bonjour heyntje,
Tout d'abord 3 questions :
1) le fichier que vous importez est un fichier .xls ou un fichier texte (.txt ou .csv par exemple) ?
2) que doit-on faire si le fichier importé comporte des articles non présents dans votre fichier .xls : les ajouter ?
3) inversement si votre fichier .xls comporte des articles non présents dans le fichier importé doit-on les conserver ou les supprimer ?
Salut Jean-Jaques
Les 2 fichiers sont en excel et je ne dois pas ajouter les articles non present dans le deuxieme ni supprimer les articles de trop.
J'explique j'ai un fichier articles qui proviennent de plusieurs fournisseurs et quand je recoit d'un fournisseur une nouvelle liste de prix de ces articles a lui je dois mettre ces articles à jour dans mon fichier articles.
Re heyntje,
Et bien pour ne pas perdre de temps, aussi bien pour vous que pour celui qui vous répondra (que soit soit moi ou non), encore une question :
vous avez posé la question sur "Excel" et non sur "VBA Excel" donc voulez-vous une solution à travers une formule Excel ou du code Vba ous indifféremment l'un ou l'autre ?
Peu importe du moment que je peux aisement refaire l'operation dans le future.
Bonjour Heyntje,
Ci-dessous les lignes de code que vous pouvez sélectionner puis clic droit et "Copier".
Ensuite vous pouvez ouvrir une copie de votre fichier ARTFOUR (pour faire des essais) et Outils, Macro, Visual Basic Editor.
Vous cliquez sur "Insertion" puis sur "Module".
Dans la fenêtre de gauche "Module1" apparaît. Vous double-cliquez dessus puis vous cliquez dans la fenêtre de droite puis clic droit et "Coller" (vous connaissez peut-être cette procédure mais comme je n'en suis pas certain).
Regardez les 1ères lignes qui comportent des commentaires, elles vous permettent de modifier la valeur affecter aux variables si besoin est.
Vous n'ouvrez pas le fichier du fournisseur il sera ouvert par le code.
Tenez-moi au courant et n'hésitez pas s'il y a des modifications ou si vous avez des questions.
Si cela semble vous convenir on pourra ensuite utiliser ce code dans un classeur qui servira, à travers un formulaire, de choisir les fichiers à traiter et qui permettra de ne pas avoir à copier le code ni à le modifier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 Option Explicit Public mpath$, nf$, fact$, art1$, art2$ Public dl1&, dl2&, pl1&, pl2&, i& Public cr1 As Byte, cr2 As Byte Public mfl1, mfl2, prix, nfich2, nf1, nf2 Sub Maj_prix() 'indiquez ici le chemin ou se trouve le fichier du fournisseur mpath = "C:\Divers\" 'indiquez ici le nom du fichier envoyé par le fournisseur nfich2 = "Prixfour" 'indiquez ici le nom de la feuille contenant le tarif dans votre fichier nf1 = "Feuil1" 'indiquez ici le nom de la feuille pour le fichier fournisseur nf2 = "Feuil1" 'première ligne de données du fichier fournisseur (vous pouvez modifier si nécessaire) pl1 = 2 'première ligne de données de votre fichier (vous pouvez modifier si nécessaire) pl2 = 2 'colonne contenant la référence article dans votre fichier (vous pouvez modifier si nécessaire) cr1 = 2 'colonne contenant la référence article dans votre fichier (vous pouvez modifier si nécessaire) cr2 = 1 fact = ThisWorkbook.Name nf = Dir(mpath & nfich2 & ".xls") If nf = "" Then MsgBox "Le fichier du fournisseur n'a pas été trouvé." & Chr(10) & Chr(13) & _ "Vérifiez le nom indiqué dans les variables : 'mpath' & 'nfich2'" Exit Sub End If Application.ScreenUpdating = False Workbooks.Open mpath & nfich2 & ".xls" Sheets(nf2).Select dl2 = Range("A65536").End(xlUp).Row Range(Cells(pl2, cr2), Cells(dl2, cr2 + 1)).Select Selection.Sort Key1:=Range(Cells(pl2, cr2), Cells(dl2, cr2)), Order1:=xlAscending, _ Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Set mfl2 = Workbooks(nfich2 & ".xls").Sheets(nf2) Windows(fact).Activate Sheets(nf1).Select dl1 = Range("A65536").End(xlUp).Row Range(Cells(pl1, cr1 - 1), Cells(dl1, cr1 + 1)).Select Selection.Sort Key1:=Range(Cells(pl1, cr1), Cells(dl1, cr1)), Order1:=xlAscending, _ Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Range(Cells(pl1, cr1 + 1), Cells(dl1, cr1 + 1)).Select Selection.NumberFormat = "0.00" For i = pl1 To dl1 art1 = UCase(Cells(i, cr1)) art2 = UCase(mfl2.Cells(pl2, cr2)) If art2 < art1 Then pl2 = pl2 + 1 i = i - 1 End If If art2 = art1 Then prix = mfl2.Cells(pl2, cr2 + 1) Cells(i, cr1 + 1) = prix pl2 = pl2 + 1 End If Next i Application.DisplayAlerts = True Application.ScreenUpdating = True Workbooks(nfich2 & ".xls").Close SaveChanges:=False Range("A1").Select MsgBox "Ce fichier n'a pas été enregistré" & Chr(10) & Chr(13) & _ "Vous choisissez de l'enregistrer ou non avant de fermer" & Chr(10) & Chr(13) & _ "Vous pouvez de toutes façons relancer le traitement quand vous le voulez" Set mfl1 = Nothing Set mfl2 = Nothing End Sub
Et dieu créa l'entraide via ce forum.
Ca marche
Merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager