[RESOLU] Transfert Array dans fichier csv

cp4

XLDnaute Barbatruc
Bonsoir,

Je sollicite votre aide. Je voudrais obtenir le même résultat qu'avec le code ci-dessous.
Mais en utilisant un tableau vba que je ne maîtrise pas bien.
VB:
Option Explicit

Sub FichierCSV()
  Dim Plage As Range, Fichier As String, Chaine As String
  Dim L As Long, f As Integer, c As Integer

  Fichier = ThisWorkbook.Path & "\" & "MonFichier.csv"

  Application.ScreenUpdating = False
  'On Error Resume Next
  With Feuil1
    Set Plage = .UsedRange
    f = FreeFile()
    Open Fichier For Output As #f
    For L = 1 To Plage.Rows.Count
      Chaine = Plage.Cells(L, 1)
      For c = 2 To Plage.Columns.Count
        Chaine = Chaine & ";" & Plage.Cells(L, c)
      Next c
      Print #f, Chaine
    Next L
    Close #f
  End With

End Sub
En vous remerciant par avance.
Bonne soirée.
 

Pièces jointes

  • Feuille en CSV - Copie.xlsm
    16.5 KB · Affichages: 29

Dranreb

XLDnaute Barbatruc
Bonsoir.
VB:
Sub FichierCSV()
  Dim T(), Fichier As String, Chaine As String
  Dim L As Long, f As Integer, c As Integer

  Fichier = ThisWorkbook.Path & "\" & "MonFichier.csv"

  Application.ScreenUpdating = False
  'On Error Resume Next
  T = Feuil1.UsedRange.Value
  f = FreeFile()
  Open Fichier For Output As #f
  For L = 1 To UBound(T, 1)
    Chaine = T(L, 1)
    For c = 2 To UBound(T, 2)
      Chaine = Chaine & ";" & T(L, c)
    Next c
    Print #f, Chaine
  Next L
  Close #f

End Sub
À tester.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

Pourquoi ne pas aller au plus simple ?
VB:
Sub test_CSV()
Dim Fichier As String
Fichier = ThisWorkbook.Path & "\" & "MonFichier.csv"
Application.ScreenUpdating = False
Feuil1.Copy
Application.DisplayAlerts = False
With ActiveWorkbook
    .SaveAs Filename:=Fichier, FileFormat:=xlCSV, local:=True
    .Close False
End With
End Sub

PS: test OK sur mon PC (W10 +XL 2013)
 

cp4

XLDnaute Barbatruc
Bonjour JM:),

Toujours aussi efficace, même Dranreb l'est aussi.;)

Ton code fonctionne parfaitement.
Mais comment avec Copy, sur le fichier csv les données sont reportées en A1 alors que sur le fichier source les données commencent à partir de A6. Je n'ai pas compris le processus qui l'effectue (s'il y en a un).

Encore merci.

Bon week-end.:)
 

Staple1600

XLDnaute Barbatruc
Re

le fichier source les données commencent à partir de A6.
Tout bon fichier source digne de ce nom et élevé dans la tradition au sein d'une base de donnée bien sous tous rapports commence toujours en A1 ;)

Rappel de la tradition.
Ligne 1= ligne d'entête
Une ligne= un enregistrement
Pas de lignes vides, pas de cellules vides
Pas de fioritures (couleurs, bordures etc...)
 

cp4

XLDnaute Barbatruc
Re


Tout bon fichier source digne de ce nom et élevé dans la tradition au sein d'une base de donnée bien sous tous rapports commence toujours en A1 ;)

Rappel de la tradition.
Ligne 1= ligne d'entête
Une ligne= un enregistrement
Pas de lignes vides, pas de cellules vides
Pas de fioritures (couleurs, bordures etc...)
Absolument d'accord avec toi, une base données commence toujours en A1 (ligne 1 et colonne 1 ne doivent pas être vide).
Mais pour l'exemple, j'avais mis quelques données dans la plage A5:C8.
Tu as fait Feuil1.copy, qui signifie pour moi --> copie de toute la feuille
Ensuite, le fichier est enregistré au forma csv.
D'où ma non compréhension:confused:, des données en A1.
 
Dernière édition:

cp4

XLDnaute Barbatruc
Re


C'est sur que quand on est sous pression, on comprend moins bien les choses (lol) ;)
Merci pour ton retour. Mais franchement, tu ne m'éclaires pas du tout.
Je ne suis pas sous pression, je n'ai tout simplement pas compris la subtilité de ta ligne de code ci-dessous:
VB:
 .SaveAs Filename:=Fichier, FileFormat:=xlCSV, local:=True
SaveAs Filename:=Fichier c'est ok, j'ai compris
FileFormat:=xlCSV idem, j'ai compris
local:=True, pas compris, mon ami une femme ne peut donner que ce qu'elle a:D

Ne me fout pas la pression, éclaire ma lanterne;)

Avec toute ma gratitude.

edit: compression:oops: vraiment confus, c'était plutôt COMPREHENSION:D
 

Staple1600

XLDnaute Barbatruc
Re

Relis la citation de ton message* et tu comprendras le mien ;)
(et son humour par là même)
On aurait du lire ceci,non?
D'où ma non-compréhension...
Or ce n'est pas ce que tu avais écrit ;) (d'où mon trait d'humour précédent)

Pour le local:=true
L'explication est dans l'aide de VBE (ou sur le net) ;)
01Cp4.jpg

Si vraiment tu ne trouves pas l'explication, je reviendrai t'en fournir une ;)
 
Dernière édition:

cp4

XLDnaute Barbatruc
:pEn effet, il s'agissait bien de "NON-COMPRÉHENSION"

Merci pour la piste. Si je ne trouve pas "la compression":D, je te fais signe pour décompresser.;)

edit: Voilà, voilà, je suis bien décompressé.
Le compresseur VBE m'a fourni l'explication ci-dessous:
True enregistre les fichiers en fonction de la langue de Microsoft Excel (y compris les paramètres du Panneau de configuration). False (valeur par défaut) enregistre les fichiers en fonction de la langue de Visual Basic pour Applications (VBA) (qui est généralement l’anglais des États-Unis, sauf si le projet VBA où Workbooks.Open est exécuté est un ancien projet VBA XL5/95 de niveau international).
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa