Coupler différents fichiers .csv ?
Bonjour à tous, voila, suite à de grosses lacunes sur excel, je me tourne vers la communauté afin de peut être trouver un chemin vers la lumière!
Je vous explique mon problème, je fais un site ecommerce qui contient énormément de produits, donc nous recevons des fichiers .csv des fournisseurs mais pour le mettre sur le site, il me faudrait un seul .csv reprenant ce que les fournisseurs nous donnent comme infos.
Par exemple:
J'ai un fichier .csv contenant les marques et modèles
Je reçois un second fichier .csv avec des accessoires qui ne sont disponibles que pour certains modèles.
Ne pouvant me permettre de faire ça à la main, je cherche un moyen de fusionner ces deux fichiers pour que les marques et modèles apparaissent dans les lignes où les accessoires sont compatibles.
Voili voulou, j'espère avec été le plus clair possible!
Merci d'avance
bonjour
ouvre tes 2 csv dans Excel
ensuite insère des RECHERCHEV
joins tes csv qu'on regarde
Bonjour, cela étant des fichiers fournisseurs il m'est interdit de les publier,
Cela dit je peux le décrire facilement après quelques jours de recherches intenses
Imaginons que je m'occupe d'un site fournissant du matériel informatique,
J'ai 2 fichiers csv donc, le premier reprenant les marques et modèles de boitier
le second joignant les pièces (imaginons que ce n'est que des cartes mères)
Le premier tableau de marques/modèles contient 28334 lignes pour 32 colonnes
Le second tableau des pièces contient 18272 lignes pour 37 colonnes
dans ces deux fichiers il y a 5 colonnes communes, disons la taille (pour marques et modèles ce serait la taille supportée, pas celle du boitier), le format, la compatibilité de l'alim, le nombre de vis ou pas-de-vis..
Ce que je veux :
1) Faire un filtre, prenant comme champ de recherche TOUTES les marques et modèles
2) Prendre une plage de critère sur la deuxième feuille
3) Comme je n'ai pas réussi à copier le résultat où je le souhaite avec le filtre avancé, je le fais sur place ce qui m'arrange aussi car :
Il faut que je copie les marques compatibles (et donc 3 colonnes: marque, modèle, année + parfois quelques milliers de lignes) dans la dernière cellule de la ligne reprenant les critères
Ce que je souhaite également, ce serait de boucler cette recherche avec le même champ de recherche mais passer à la ligne suivante sur la feuille 2 pour les critères
Je ne sais pas vraiment comment prendre la chose, n'ayant jamais réellement programmer, j'ai eu plusieurs pistes à force d'éponger internet mais il me reste un problème de syntaxe et des lacunes immenses pour faire ce que je veux (malgré que ce soit, je le pense relativement simple)
En gros, filtrer, déplacer les résultats, passer à la ligne suivante
J'ai remarqué également que le filtre avancé n'avait pas l'air content lorsque je saute une ligne entre les titres et les valeurs (genre je prends les titres (l1), les valeurs de la ligne 3 mais pas celle de la ligne 2)
Et sélectionner le tout revient à faire un "OU" ce qui ne m'arrange pas pour trier convenablement
Si je comprends bien, je déclare i, que j'utiliserai plus tard en variable pour les lignes
je fais une boucle for pour i = x to y
filtre
if valeur <> "" then
sheet1. cell (i,..) & sheet1.cell (i,..) &... &.... = sheet2.cell (i,..)
end if
next i
Je ne souhaite pas pomper un code tout fait que je ne comprends pas, j'aimerai beaucoup des cléfs pour utiliser VBA et en saisir les subtilité telle que les cellules (sheet1. cell (i,..) & sheet1.cell (i,..) &... &.... = sheet2.cell (i,..) ) Surtout au niveau de l'organisation et de l'écriture
Un lien peut m'être utile également
Est-ce vraiment d'utile d'utiliser une recherchev ? plutot une rechercheh alors non ?
Bonjour
J'ai finalement fait un fichier exemple, cela dit après quelque jours de torture je touche au but
Certe, le code doit vous sembler dégueulasse et je m'en excuse mais c'est fonctionnel ! (enfin, a 90%)..
Sub Macro1()
'
' Macro1 Macro
'
'
Dim ligne As Long
Dim c As Long
For ligne = 7 To 28334
Sheets("Modèles").Range("A1:I100").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sheets("Accessoires").Range("D1:I2"), Unique:=False
Sheets("Jantes").Select
Rows("2:2").Select
Selection.Delete Shift:=xlUp
For Each cell In Sheets("Modèles").Range("A2:C100").SpecialCells(xlCellTypeVisible)
If cell.Value <> "" Then
Sheets("Modèles").Range("A2:C100").SpecialCells(xlCellTypeVisible).Copy
Sheets("Transit").Paste
End If
Next cell
c = 1
While Sheets("Transit").Cells(c, 1).Value <> ""
Sheets("Final").Cells(ligne, 10) = Sheets("Final").Cells(ligne, 10) & "," & Sheets("Transit").Cells(c, 1) & " " & Sheets("Transit").Cells(c, 2) & " " & Sheets("Transit").Cells(c, 3)
c = c + 1
Wend
Sheets("Modèles").Select
Range("A1").Select
If Sheets("Modèles").FilterMode Then
Sheets("Modèles").ShowAllData
End If
Sheets("Transit").Range("A1:C10000").ClearContents
ligne = ligne + 1
Next ligne
End Sub
Voila où j'en suis pour le moment!
Malheureusement lorsque le filtre ne donne pas de résultat, la boucle for each plante et la macro s'arrête ...
J'ai l'impression que le SpecialCell est un coquin qui n'a pas fini de m'ennuyer !
Si vous avez des conseils pour alléger ce pavé je suis preneur aussi !
Je m'en remet à vous pour un coup de pouce, je vais dormir donc je ne répondrai pas de suite si réponses il y a
re
joins tes fichiers source, au besoin en ne mettant que 10 lignes et en maquillant les données
(VBA n'est pas la solution, c'est la source de problèmes)