Exporter en .CSV, mais compliqué ... HELP !

PatLac

XLDnaute Occasionnel
Bonjour à tous !
J´ai consulter le forum pour mon soucis ( ou plutot les 4 premiers onglets), mais n´ais rien trouvé, meme approchant.
Donc je me permet de soliciter votre bienveillance.
Voici donc ma requete :
  1. Je désire exporter une feuille, et que celle-ci soit enregistrée au format ".csv", sur un lecteur nommé "K:\" On va dire que ce fichier s´appelera "TEST"... donc a terme "test.csv"... K:\test.csv
  2. C´est là que ca devient chaud : cette feuille il y en a une tous les jours, et il faudrait que cette 2 eme feuille, puis la 3 eme, etc ... vienne compléter le fichier creé au début, donc ouvrir le fichier "test.csv", complèter à la suite le fichier "test.csv", puis le refermer, et cela tous les jours ...
Est-ce que ca peut se faire ?
Merci d´avance pour votre aide et n´hésitez pas, toutes les aides sont les bienvenus.

Cordiales Salutations

PS: Je verse 2 fichiers ...
 

Pièces jointes

  • Mappe1.xlsx
    9.4 KB · Affichages: 43
  • Mappe2.xlsx
    9.6 KB · Affichages: 28

cp4

XLDnaute Barbatruc
Eriiiic;), Patlac:),

J'ai repris le code d'Eriiiic et lui ai rajouté un petit truc.
Il semble répondre à ta demande.
VB:
Sub test()
    Dim numfich As Integer, lig As Long, col As Long, ch As String
    Dim x As Integer
    x = IIf(Dir("i:\Test.csv") <> "", 2, 1) 'condition sur début de ligne
    numfich = FreeFile
    Open "I:\test.csv" For Append As #numfich
    dlig = Range("a" & Rows.Count).End(xlUp).Row
    For lig = x To dlig
        ch = ""
        For col = 1 To 5
            ' fabriquer ta ligne de données
            ch = ch & ";" & Cells(lig, col)
        Next col
        Print #numfich, Mid(ch, 2)
    Next lig
    Close #numfich
End Sub
Bon week-end
 

PatLac

XLDnaute Occasionnel
@cp4 Bonjour et Merci, et bonjour à tous !
J'imagine qu'il est possible de choisir une plage dans votre code ... niveau colone j'ai compris, c'est simple donc ca va, mais niveau ligne, comment faire ?
Dans le code d'eriiiic j'ai "compris", mais dans votre code si je veux exporter de G2 à L19 par exemple,
"For col = 7 To 12", mais "For lig = x To dlig" ...je fais quoi ?

Merci pour votre aide.
 

cp4

XLDnaute Barbatruc
Quand les questions sont imprécises, les solutions ne être qu'imprécises.
Explique-nous, stp ton process le plus clairement possible.
Dés le départ tu voulais créer et par la suite compléter ton fichier.
Tes feuilles commençaient bien en A1, et là tu nous sors une autre plage.

@+
 

cp4

XLDnaute Barbatruc
Dans le code d'eriiiic j'ai "compris", mais dans votre code si je veux exporter de G2 à L19 par exemple,
"For col = 7 To 12", mais "For lig = x To dlig" ...je fais quoi ?
Normalement, tu ne fais rien pour les lignes (lig=x)
cette ligne de code détermine le numéro de ligne à mettre dans la plage à exporter.
VB:
x = IIf(Dir("i:\Test.csv") <> "", 2, 1) 'condition sur début de ligne
cette ligne de code vérifie si le fichier test existe, s'il n'existe pas alors la plage à exporter commence en ligne1, pour prendre la ligne des entêtes. Si le fichier existe,cela signifie qu'il a déjà la ligne des entêtes à ne pas exporter une 2ème fois, d'où le 2 pour prendre la plage à partir de la seconde ligne.
@+
 

PatLac

XLDnaute Occasionnel
Re-Bonjour à tous !
Je reviens vers vous ...
Le code ci-dessous est celui qui convient le mieux, et je remercie par la meme tous les intervenants.

Ce que je voudrais faire c´est intégrer le premier et le second pour que tout se fasse en meme temps, par le biais d´un seul clic sur un bouton macro, pour que ca exporte en csv, et qu´ensuite la feuille se ferme.

D´avance merci.;)


Sub test()
Dim numfich As Integer, lig As Long, col As Long, ch As String
numfich = FreeFile
Open "K:\IND\MAWI\Tor3\1test.csv" For Append As #numfich
For lig = 80 To 96
ch = ""
For col = 4 To 8
' fabriquer la ligne de données
ch = ch & ";" & Cells(lig, col)
Next col
Print #numfich, Mid(ch, 2)
Next lig
Close #numfich
End Sub


Sub Bouton1KAMSOFA()
Dim vchemin As String
vchemin = ThisWorkbook.Path
'Workbooks.Open Filename:=vchemin & "\Kam_SOFA.xlsm"
'Sheets("Feuil1").Range("A1").Activate
'Workbooks("Classeur1.xlsm").Save
Workbooks("Kam_SOFA.xlsm").Close
End Sub
 

cp4

XLDnaute Barbatruc
Si j'ai bien compris en cliquant sur le bouton, faire exécuter les 2 procédures
VB:
Sub Bouton1KAMSOFA()
Dim vchemin As String
call test    'appel de la procédure test
vchemin = ThisWorkbook.Path
'Workbooks.Open Filename:=vchemin & "\Kam_SOFA.xlsm"
'Sheets("Feuil1").Range("A1").Activate
'Workbooks("Classeur1.xlsm").Save
Workbooks("Kam_SOFA.xlsm").Close
End Sub
 

eriiic

XLDnaute Barbatruc
Bonjour,

ton 2nd programme se contente de fermer un fichier. Qu'est-ce qui t'empêche d'ajouter cette seule ligne active au début ou à la fin de l'autre ?

Programmer ne s'improvise pas. Il faut faire l'effort d'apprendre le B.A.BA par toi même.
Ou expose simplement ton besoin sans mettre des bouts de code que tu n'as manifestement pas compris, piochés à gauche et à droite . Ca embrouille plus qu'autre chose et ça n'explique rien.
eric
 

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 762
Membres
103 661
dernier inscrit
fcleves