Base de donnée client CSV extraire vers fiche client individuel

Fermé
benjilebest Messages postés 15 Date d'inscription lundi 21 janvier 2013 Statut Membre Dernière intervention 24 janvier 2013 - 21 janv. 2013 à 12:11
benjilebest Messages postés 15 Date d'inscription lundi 21 janvier 2013 Statut Membre Dernière intervention 24 janvier 2013 - 24 janv. 2013 à 10:38
Bonjour à toutes et à tous,

Petit Nouveau je m'en remets à vous car je cale sur l'utilisation de macro sur excel.
Voici mon problème :
Je reçois un fichier type CSV qui contient sur chaque ligne des infos relatives à un client.
Le but est de copier chaque donnée du client de cette base de donnée vers un fichier client unique.

Concrètement j'ai réussi a enregistré une macro qui fait
activer la page Base de donnée (BDD)
copier case A2 (correspondant au nom par exemple)
ouvrir le document vierge pour un client
coller les données

ainsi de suite pour toutes les données d'un client (c'est à dire toute les données d'une ligne)et enfin enregistré le fichier client unique le nom du fichier = numéro de client

Ma question est que je souhaiterais faire une boucle for ou while qui me permettrait de créer autant de fichier client unique qu'il y en a dans la BDD.

voila si vous avez besoin d'avantage d'informations n'hésitez pas à me le faire savoir

Bonne journée à toutes et à tous.

Ben



7 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
22 janv. 2013 à 13:12
Bonjour,
Pour comprendre ce que tu veux il faudrait un exemple de ton fichier CSV que tu pourais déposer sur Cjoint.Com (ou autre)
0
benjilebest Messages postés 15 Date d'inscription lundi 21 janvier 2013 Statut Membre Dernière intervention 24 janvier 2013
22 janv. 2013 à 14:19
https://www.cjoint.com/c/CAwoqZqPa85

Voici le fichier CSV et a partir de ça je dois copier les cellules dans le documents ci-dessous
https://www.cjoint.com/c/CAwor02Fvhg
Voila j'ai commencé à écrire quelques chose en fouinant sur le forum :

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 22/01/2013 par ben
'
Dim FichierSource As Workbook
Dim FichierDestination As Workbook

Set FichierSource = ThisWorkbook
Set FichierDestination = Workbooks.Open(Filename:="C:\Documents and Settings\Admin\Mes documents\Téléchargements\FICHECLIENTV2.xls")


For i = 2 To 100
If Not IsEmpty(Cells(i, 2)) Then
Workbooks("FichierSource").Worksheets("simulations-1").Cells(i, 2).Copy _
Workbooks("FichierDestination").Worksheets("Feuil1").Cells(2, 4)

End If
Next
End Sub

Je l'ai fait pour une case dans l'idée si ça marche la suite sera la même.
A la fin je voudrais enregistré le fichier destination dans un nouveau fichier ayant pour nom le code client.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
22 janv. 2013 à 14:51
Le but est de copier chaque donnée du client de cette base de donnée vers un fichier client unique.
Nouvelle feuille ou nouveau classeur
0
benjilebest Messages postés 15 Date d'inscription lundi 21 janvier 2013 Statut Membre Dernière intervention 24 janvier 2013
22 janv. 2013 à 15:52
bah en fait sur les deux fichiers que j'ai joint : le premier est ma base de donnée ou une ligne = 1 client.
et je dois remplir dans un nouveau classeur (le 2eme fichier) les données d'un client et enregistre ainsi un classeur par client.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
22 janv. 2013 à 16:32
Pourquoi Bah ?? ça t'ennuie que je pose des questions ?
Bref, bon pour cette fois..a voir
0
benjilebest Messages postés 15 Date d'inscription lundi 21 janvier 2013 Statut Membre Dernière intervention 24 janvier 2013
22 janv. 2013 à 16:37
je vais regarder ça c'est un tique que j'ai de mettre bah dans mes phrases n'y voit pas de la nonchalance ;) au contraire ça fait plaisir que tu prennes le temps de me filer un coup de main ;)
merci
0
benjilebest Messages postés 15 Date d'inscription lundi 21 janvier 2013 Statut Membre Dernière intervention 24 janvier 2013
22 janv. 2013 à 16:50
Alors c'est presque ça sauf que je peux pas faire ça ligne par ligne.
je suis obligé de prendre cellule par cellule car le fichier base de donnée (CSV) sert à alimenter le 2ème fichier (FicheclientV2.xls que tu n'as pas du voir dans mon post plus haut)

c'est celui ci https://www.cjoint.com/c/CAwor02Fvhg

Je vais essayer de me débrouiller avec ce que tu m'as donner normalement je devrais m'en sortir je te tiens au courant ;)
Merci
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
22 janv. 2013 à 17:21
OK : Si t'en sort pas tu dis.
0
benjilebest Messages postés 15 Date d'inscription lundi 21 janvier 2013 Statut Membre Dernière intervention 24 janvier 2013
23 janv. 2013 à 17:01
Bonjour,

Bon j'ai commencé à faire ça je vais devoir avoir mon classeur FICHIECLIENTV2 dans le même répertoire que la base de donnée :

Sub TransfertClient()
Dim Lig As Integer
Dim Wks As Worksheet
Dim Chemin As String
Dim Wkb As Workbooks

Chemin = ThisWorkbook.Path & "\"
Set Wks = Sheets(1)
Set Wkb = Workbooks.Open Filename:="Chemin & FICHECLIENTV2.xls"
'Le fichier CSV doit déjà être présent avec FICHECLIENTV2.

For Lig = 2 To Cells(Rows.Count, "C").End(xlUp).Row
With ActiveWorkbook
Wks.Cells(2, 1).Copy Wkb.Sheets("Feuil1").Cells(2, 4)
Wks.Cells(2, 2).Copy Wkb.Sheets("Feuil1").Cells(4, 4)
'etc...
.SaveAs Chemin & Replace([D2].Value, ".", " ")
.Close
End With
Next Lig
End Sub

Et ainsi de suite pour chaque case.
A priori ça coince au niveau de sheets("Feuil1") et l'ouverture de l'autre classeur
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
23 janv. 2013 à 17:22
Bon j'ai commencé à faire ça je vais devoir avoir mon classeur FICHIECLIENTV2 dans le même répertoire que la base de donnée :
Mais non, suffit de remplacer..
Chemin = "C:\Répertoire\sousrépertoire\"

A priori ça coince au niveau de sheets("Feuil1") et l'ouverture de l'autre classeur
Si tu a un Excel Anglais faut remplacer par Sheet1
J'ai modifié Feuil1 pour que ce soit compatible en Anglais..
Voir avec ce code..
Sub TransfertClient()
Dim Lig As Integer
Dim Wks As Worksheet
Dim Chemin As String
    Chemin = ThisWorkbook.Path & "\"
    Set Wks = Sheets(1)
    'Le fichier CSV doit déjà être présent.
    For Lig = 2 To Cells(Rows.Count, "C").End(xlUp).Row
        Workbooks.Add
        With ActiveWorkbook
            Wks.Cells(Lig, 1).Copy .Sheets(1).Cells(2, 4)
            Wks.Cells(Lig, 2).Copy .Sheets(1).Cells(4, 4)
            .SaveAs Chemin & Replace([D2].Value, ".", " ")
            .Close
        End With
    Next Lig
End Sub
A+
0
benjilebest Messages postés 15 Date d'inscription lundi 21 janvier 2013 Statut Membre Dernière intervention 24 janvier 2013
23 janv. 2013 à 18:31
Nice pour la copie des cellules ça fonctionne mais je dois pas ouvrir n'importe quel workbook :
je dois ouvrir le deuxième fichier que je t'ai mis et copier les données de la base de donnée dans ce fichier et le save suivant le nom du client
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
23 janv. 2013 à 19:42
Bon, dernière intervention..
.SaveAs Chemin & Replace(Cells(Lig,4).Value, ".", " ")
0