Exporter des données en CSV_VBA

Résolu/Fermé
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 - Modifié par irongege le 23/10/2014 à 23:00
 Maurice - 12 nov. 2014 à 12:59
Bonjour,

Je suis en train de mettre en place un outil permettant d'exporter une plage de données de mon classeur en CSV avec comme séparateur (^)

L'idée c'est une fois appuyer sur le bouton, il se crée un répertoire. Ce répertoire contiendra des sous répertoire représentant chacun le répertoire d'enregistrement de mon fichier CSV généré.
Jusqu'ici tout va bien.

Mon problème c'est que, ma macro arrive à créer le répertoire et les sous répertoire, mais dans mon répertoire, les données ne sont pas exportées.
S'il vous plaît, je dois rendre ce travail pour demain soir.

Voici un exemple de mon travail avec les macros: https://www.cjoint.com/c/DJwqtCH1nDt


Au secours !

Partager son savoir est la meilleure façon d'apprendre!
A voir également:

20 réponses

Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
23 oct. 2014 à 15:29
Bonjour,
Vaux-t-il la peine de chercher la solution ou c'est trop tard ... ?

0
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 3
23 oct. 2014 à 22:45
Bonsoir Le Pingou,
Non, je galère toujours je n'arrive pas à trouver la solution.
Si vous pouvez m'aider à résoudre le problème ce sera vraiement gentil!
Merci d'avance,
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
23 oct. 2014 à 22:54
Bonjour,
OK je regarde votre fichier et comment fonctionne votre code..... pour cerner le problème... !

0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
23 oct. 2014 à 23:05
Bonjour,
A première vue, il manque une valeur pour [cMax] dans la ligne d'instruction :
For Index = 1 To cMax

Avez-vous une précision.... ?

0

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

Posez votre question
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 3
23 oct. 2014 à 23:16
Au fait je n'ai pas de précision sur Max, j'ai essayé de d'dapter un code retouvé sur le net.
Mais mon idée, c'est d'arriver à extraire en csv la palge de donnée.
Si vous avez une solution, vous pouvez modifier le code!!
Merci d'avance!
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 23/10/2014 à 23:26
Bonjour,
Merci pour l'information, la solution pour demain.
Toutefois essayer de supprimer la ligne d'instruction

For Index = 1 To cMax

y compris :
Next Index

Bonne nuit.


Salutations.
Le Pingou
0
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 3
24 oct. 2014 à 20:34
Bonsoir Le Pingou,
Avez-vous trouvé la solution?
Merci d'avance!
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
24 oct. 2014 à 21:59
Bonjour,
J'attendais de savoir si vous avez essayé selon mon message précédent !

0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
24 oct. 2014 à 22:08
Bonjour,
Ou voulez-vous insérer la plage de donnée à exporter (la position dans le classeur CSV.... ?

0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
24 oct. 2014 à 22:26
Bonjour,
Pour finaliser la solution j'ai besoin de la réponse aux 2 messages précédents !

0
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 3
25 oct. 2014 à 17:52
Bonjour Le Pingou,
Les classeurs exportés doiventent être placés dans des sous repertoires. C'est à dire le même repertoire que l'outil maios cahque classeur exporté sera dans un sous repertoire qui porte le nom du classeur.
Merci id'avance!
0
Bonjour

le principe des csv le separateure est ";"

Voila une macro avec le test du repertoire

Sub CreatRepertoire()
Chemin = ActiveWorkbook.Path & "\"
MonRep = Chemin & "Export"
If Dir(MonRep, vbDirectory) = "" Then
MkDir (MonRep)
End If
Export MonRep
End Sub

Sub Export(Chemin)
Non = ActiveSheet.Name
Ext = ".csv"
Fichier = Non & Ext
CheminFiche = Chemin & "\" & Fichier
Sep = ";"
Nlig = Cells(Rows.Count, 2).End(xlUp).Row
Set Plage = Range("B6:E6,B8:E" & Nlig)
Open CheminFiche For Output As #1
For Each Lig In Plage.Rows
Tmp = ""
For Each Cel In Lig.Cells
Tmp = Tmp & CStr(Cel.Text) & Sep
Next
Print #1, Tmp
Next
Close
Set Plage = Nothing
MsgBox "Votre fichier CSV a été créé avec succès!"
End Sub

A+
Maurice
0
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 3
26 oct. 2014 à 15:44
Maurice!
Merci pour ta proposition qui fonctionne aussi!
J'ai finalement opté pour la méthode de pingou qui correspond plus à ma méthode!
En tout cas c'est vraiment gentil de votre part!
Bonne journée
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
25 oct. 2014 à 18:03
Bonjour,
Merci pour l'information.
Concernant la suppression de
For Index = 1 To cMax
y compris :
Next Index

Le fichier [csv] est bien créer mais il est vide.

Entre temps Maurice vous a fournis une solution, ne voulant pas faire les choses à double, est-ce que cela vous suffit pour adapter votre code... ?

0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
26 oct. 2014 à 14:55
Bonjour,
Dans l'attente de votre bon vouloir, voici ma proposition basé sur votre fichier : https://www.cjoint.com/?3JAo7MMnNpw

0
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 3
26 oct. 2014 à 15:43
Merci beaucoup Le Pingou!
Ce que vous avez fait est super!!
ca me vent vraiement!
J'ai cependant soulevé un autre point sur le même sujet.
Voir message ci-dessous
0
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 3
26 oct. 2014 à 15:41
Le Pingou,
Vous ne savez même pas à quel point vous m'avez sauvé!
C'est excellet! c'est exactement ce que je voulais
Merci infiniement.

En parallèle, Je souhaiterais rajouter une module dans mon outil qui permet de masquer certains onglets en fonction de la valeur dans un autre onglet.
J'ai commencé à coder mais je suis bloqué. Voici mon code:


Sub masquer_onglet()

Dim ws As Worksheet
Dim ilinecourante As String
Dim iderligne As String
Dim icolonnecourante As String
Dim idernierecolonne As String

iLigneCourante = 3
ipremierecolonne = 1
idernierecolonne = 2
iDerniereLigne = Sheets("Validation_Onglets").Range("A" & Rows.Count).End(xlUp).Row


With ActiveWorkbook
For iLigneCourante = 3 To iDerniereLigne
If Worksheet.Name = Worksheets("Validation_Onglets").Cells(iLigneCourante, 1).Value
And Worksheets("Validation_Onglets").Cells(iLigneCourante, 2) = "OUI"
Then
Worksheet.Visible = xlSheetVeryHidden
iLigneCourante = iLigneCourante + 1
End If
Next
End With

Je vous remets le fichier: https://www.cjoint.com/?DJApSw3YDti


Si vous m'aidez à résoudre ce dernier point, vous me sauvez vraiment

End Sub


0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
26 oct. 2014 à 17:20
Bonjour,
Merci pour l'information.
J'ai donné un oeil à votre fichier et je suis surpris que l'export ne fonctionne pas et dans ce cas je ne vais pas aller plus loin sans une explication.

0
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 3
26 oct. 2014 à 17:56
Désolé Le Pingou,
Ayant plusieurs version du fichier, je me suis trompé sur la dernière version.
Voici la bonne version: https://www.cjoint.com/c/DJAsaNK3FFi
Merci d'avance
0
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 3
26 oct. 2014 à 18:19
Le Pingou,
Merci c'est OK pour masquer les onglets.
La solution de Maurice fonctionne bien.
Merci en tout cas.
Je clôtue le sujet!
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
26 oct. 2014 à 21:32
Merci.
0
Bonjour

tien voila ta macro modifier

Sub Masquer_Onglet()
Nlig = Cells(Rows.Count, 1).End(xlUp).Row
For L = 4 To Nlig
If Cells(L, 2).Value = "Oui" Then
Sheets(Cells(L, 1).Value).Visible = 2
Else
Sheets(Cells(L, 1).Value).Visible = -1
End If
Next
End Sub

A+
Maurice
0
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 3
26 oct. 2014 à 18:18
Bonsoir Maurice,
C'est super!!
ça fonctionne.
Je clôture le sujet!
0
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 3
2 nov. 2014 à 22:12
Bonsoir Maurice,
Je me permets de vous solliciter car je souhaiterais modifier une partie de mon outil avec la macro que vous m'avez faite.
En effet, avec mon responsable on souhaiterais que l'extraction du fichier csv soit comme suite.
En effet, on a découpé notre fichier en trois plages
plageentete = ligne 7
plagetitre = 8
plagedonnee = de la ligne 18 jusqu'à la fin de la plage de données
plagetotale = plageentete + plagetitre + plagedonnéee

Et ce que je souhaiterais, c'est d'avoir la plagetotale qui sera exportée en csv (toutes les plages en couleur orange dans mon fichier).

En parallèle je souhaiterais obtenir ceci:
-La concatenation des colonnes B et D dans le fichier csv qui sera généré
-Lorsqu'on a le mot "MAJUSCULE" dans une cellule de la ligne 17 les données dans le fichier csv seront en majuscule

Si vous pouvez m'aider à y arriver ce seraiit top! Car, c'est la dernière étape de mon outil que je dois présenter à mon responsable pour la fin de mon stage.

Je vous joins le fihcier. J'ai déjà fait 89% du travail en s'appuyant sur la macro qui vous m'avez donnée la dernière fois: https://www.cjoint.com/c/DKcwrs9chAY

Merci infimenet Maurice.
0
re

voila ton modele avec les Boutons

http://cjoint.com/?3JAsZu3PWut

A+

Maurice
0
Bonjour
je voie que 2 plage

voila une dernier macro

Sub CreatRepCsv()
Chemin = ActiveWorkbook.Path & "\"
MonRep = Chemin & "Dossier"
If Dir(MonRep, vbDirectory) = "" Then
MkDir (MonRep)
End If
ExportCsv MonRep
End Sub

Sub ExportCsv(Chemin)
Non = ActiveSheet.Name
Ext = ".csv"
Fichier = Non & Ext
CheminFiche = Chemin & "\" & Fichier
Sep = ";"
Nlig = Cells(Rows.Count, 2).End(xlUp).Row
Set A = Range(Cells(7, 2), Cells(8, 6))
Set B = Range(Cells(18, 2), Cells(Nlig, 6))
Set plage = Union(A, B)
Open CheminFiche For Output As #1
For Each Lig In plage.Rows
Tmp = ""
For Each Cel In Lig.Cells
Tmp = Tmp & CStr(Cel.Text) & Sep
Next
Print #1, Tmp
Next
Close
Set A = Nothing
Set B = Nothing
Set plage = Nothing
MsgBox "Votre fichier CSV a été créé avec succès!"
End Sub

A+
Maurice
0
senecartour Messages postés 325 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 29 octobre 2020 3
11 nov. 2014 à 22:54
Bonsoir Maurice,
Merci beaucoup! c'est super!
Désolé pour le retard, j'étais en vacance!

Avec tes astuces, je me suis bien amélioré en VBA! Je continue à apprendre!
Encore Merci!
0
Bonjour
Voila une nouvelle version
http://cjoint.com/?0KmncrSatyS

A+
Maurice
0