Exporter des données en CSV_VBA
Résolu
senecartour
Messages postés
324
Date d'inscription
Statut
Membre
Dernière intervention
-
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!
A voir également:
- Exporter des données en CSV_VBA
- Fuite données maif - Guide
- Exporter favoris chrome - Guide
- Trier des données excel - Guide
- Exporter conversation sms android - Guide
- Exporter favoris firefox - Guide
20 réponses
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,
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... !
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 :
Avez-vous une précision.... ?
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!
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
y compris :
Bonne nuit.
Salutations.
Le Pingou
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
Bonjour,
Ou voulez-vous insérer la plage de donnée à exporter (la position dans le classeur CSV.... ?
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 !
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
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 de
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... ?
Merci pour l'information.
Concernant la suppression de
For Index = 1 To cMaxy 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
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
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.
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
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
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.
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
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