Exporter des données en CSV_VBA
Résolu
senecartour
Messages postés
391
Statut
Membre
-
Maurice -
Maurice -
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!
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!
20 réponses
-
Bonjour,
Vaux-t-il la peine de chercher la solution ou c'est trop tard ... ?
-
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,
-
Bonjour,
OK je regarde votre fichier et comment fonctionne votre code..... pour cerner le problème... !
-
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.... ?
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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!
-
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 -
Bonsoir Le Pingou,
Avez-vous trouvé la solution?
Merci d'avance!
-
Bonjour,
J'attendais de savoir si vous avez essayé selon mon message précédent !
-
Bonjour,
Ou voulez-vous insérer la plage de donnée à exporter (la position dans le classeur CSV.... ?
-
Bonjour,
Pour finaliser la solution j'ai besoin de la réponse aux 2 messages précédents !
-
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 -
Bonjour,
Merci pour l'information.
Concernant la suppression deFor 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... ?
-
Bonjour,
Dans l'attente de votre bon vouloir, voici ma proposition basé sur votre fichier : https://www.cjoint.com/?3JAo7MMnNpw
-
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
-
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.
-
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 -
-
-
-
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-
-
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.
-
-
-
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 -
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!
-