Dimensionner les colonnes d'un fichier .CSV

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Dimensionner les colonnes d'un fichier .CSV

Message par omega »

Vous dites que le fichier CSV que je viens de créer ne s'ouvre pas avec Excel pourtant, le fichier que j'ai créé, non seulement s'ouvre avec excel, mais également le nom du fichier s'affiche avec le type : (Microsoft Office Excel) ???
Et les entêtes et menus ainsi que les outils de EXCEL sont présents et disponibles en haut de page.... S'il n'y avait pas de relation avec excel, alors pourquoi il ne s'ouvre pas automatiquement avec un autre utilitaire (autre que excel)??

Même sur ce forum, tous les posts sur l'import export des fichiers excel parlent et utilisent TOUS des fichiers CSV est-ce par hasard? ou coincidence??

J'ai bien peur que ma question (très simple pourtant) n'a pas été bien comprise.
Testez ce code et vous verrez

------------------------------------------------------------------------------------------

Code : Tout sélectionner

Procedure JBlc_Exporter()
;#JBlc_grid,-1,Produit$+Chr(10)+numdoc$+Chr(10)+htD$)
 
File$="JBlc.csv"
If FileSize(File$)<>-1
   DeleteFile(File$)
EndIf
    
OpenFile(1,File$)        
WriteStringN(1,"JOURNAL DES LIVRAISONS (CUMUL)                         PERIODE DU " + datedebut$ + " AU " + datefin$) 
WriteStringN(1,"")
WriteStringN(1,"DESIGNATION DES PRODUITS;N.DOC;TOTAL HT") ;titre des colonnes 

For wrow=0 To CountGadgetItems(#JBlc_grid)-1
  prod$=GetGadgetItemText(#JBlc_grid,wrow,0)
  numdoc$=GetGadgetItemText(#JBlc_grid,wrow,1)
  Ht$=GetGadgetItemText(#JBlc_grid,wrow,2)
  
  WriteStringN(1,prod$+";"+numdoc$+";"+Ht$) 
Next  
CloseFile(1)  
MessageRequester("Terminé","Exportation vers fichier Excel terminée !")
EndProcedure
Dernière modification par omega le mer. 11/mars/2020 15:31, modifié 1 fois.
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Dimensionner les colonnes d'un fichier .CSV

Message par omega »

Une fois mon fichier CSV créé, son icone déjà est la même que celle de Excel, quand je l'ouvre, il se présente comme une feuille excel, avec des colonnes, des menus et tous les outils de excel...

Alors ? comment expliquer cette coincidence?
Win7 (x64) 64 bits Pb 5.72
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Marc56 »

omega a écrit :Une fois mon fichier CSV créé, son icone déjà est la même que celle de Excel, quand je l'ouvre, il se présente comme une feuille excel, avec des colonnes, des menus et tous les outils de excel...
Alors ? comment expliquer cette coincidence?
Ca s'appelle une association de fichiers. Par défaut, ce type de fichier est associé à Excel.
Si tu cliques dessus, tu le vois s'ouvrir, mais ce n'est pas ce qui se passe en réel.
En réel, Excel s'ouvre puis lance une fonction d'import qui découpe les champs et les place dans les colonnes.

Renomme ton CSV en .txt et tu verra que l'icône change et qu'il s'ouvrira alors avec notepad.

Si tu ajoute des formules dans ton fichier CSV ouvert dans Excel et que tu sauvegarde en CSV et réouvre après, tu n'a plus de formules, juste le texte des résultats.

Tu peux nous croire, on connait Excel depuis ses débuts (Il s'appelait alors Multiplan) et Windows depuis la 1.0 :wink:
Demivec
Messages : 90
Inscription : sam. 18/sept./2010 18:13

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Demivec »

Le format de fichier CSV (en anglais 'Comma Separated Values) n'a pas la possibilité de stocker des largeurs de colonne car il ne stocke que les valeurs séparées par des virgules suivies d'un EOL
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Dimensionner les colonnes d'un fichier .CSV

Message par omega »

Ce n'est pas une question de croire ou de ne pas croire, c'est une question de conviction et de logique des choses Même si on connait Excel depuis une éternité, cela ne change rien. Le problème n'est pas au niveau de l'excel (personnellement je l'utilise depuis plus de 30 ans je crois...) mais plutôt au niveau du Pb, il s'agit juste de savoir si OUI ou NON on peut agir sur les colonnes d'un fichier Excel pour redimensionner les largeurs des colonnes et cela en pb (c'est à dire en codant !).
Je vois que cela n'est pas possible (d'après vos interventions) alors je vais le faire manuellement, c'est à dire:

1. Ouvrir le fichier excel
2. Modifier la largeur des colonnes
3. Enregistrer sous Xls

TOUT SIMPLEMENT

A présent, je voudrais vous remercier tous, sans exception. Merci beaucoup pour avoir essayer de m'aider et je m'excuse d'avoir pris un peu de votre temps précieux.

Bonne continuation
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Dimensionner les colonnes d'un fichier .CSV

Message par omega »

Le format de fichier CSV (en anglais 'Comma Separated Values) n'a pas la possibilité de stocker des largeurs de colonne car il ne stocke que les valeurs séparées par des virgules suivies d'un EOL
ça aussi, je le sais ..

Merci quand même
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Ar-S »

Ca s'appelle une association de fichiers. Par défaut, ce type de fichier est associé à Excel.
Et oui, tout simplement :roll: C'est la base..

Omega, si tu fais un "clic droit => ouvrir avec" sur un csv et que tu choisis le bloc note en cochant "toujours ouvrir avec", ton icone excell se changera comme par magie en icone de bloc note.

On a très bien compris ta question et tu as surtout compris que non, PB ne peut pas changer la taille des colonnes. (ou sûrement que si via des API Sendmessage mais c'est une autre histoire).
Par contre, ce que je t'ai dit plus haut doit fonctionner, à savoir comment est foutu un xlsx..
Car
- PB sait gérer faire du XML
- PB sait créer des zip
Mais c'est sûr que ça doit pas être simple à apprivoiser l'édition de xslx.
Pour finir, si ouvrir et régler manuellement la taille des colonnes ne te dérange pas plus que ça, c'est sûr que c'est pas la peine de te casser le tronc.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Mindphazer
Messages : 639
Inscription : mer. 24/août/2005 10:42

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Mindphazer »

omega a écrit :
Le format de fichier CSV (en anglais 'Comma Separated Values) n'a pas la possibilité de stocker des largeurs de colonne car il ne stocke que les valeurs séparées par des virgules suivies d'un EOL
ça aussi, je le sais ..
Alors, tu sais que le fichier .csv n'a pas la possibilité de stocker les largeurs de colonne... mais pourtant tu essaies de trouver un moyenne le faire ?! :roll:
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
Mindphazer
Messages : 639
Inscription : mer. 24/août/2005 10:42

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Mindphazer »

omega a écrit : 1. Ouvrir le fichier excel
2. Modifier la largeur des colonnes
3. Enregistrer sous Xls

TOUT SIMPLEMENT
PB peut même faire l'étape 1. pour toi.
Tu créées ton fichier dans lequel tu enregistres le contenu de ta liste, puis tu l'ouvres avec Excel :

Code : Tout sélectionner

ExportXL$ = GetTemporaryDirectory() + "exp_temp.xls"
ExportXL  = CreateFile(#PB_Any, ExportXL$, #PB_Ascii)
for i = 1 to CountGadgetItems('ta liste')
  WriteStringN(ExportXL, 'chaque colonne de ta liste séparée par une tabulation (chr$(9))')
Next i
CloseFile(ExportXL)
RunProgram("Excel", Chr(34) + ExportXL$ + Chr(34), "")
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Marc56 »

@Mindphazer: Excellent, voilà une idée simple, élégante et intéressante :P
(ça ne résoud pas le problème d'omega, mais c'est utile)

Je modifie un peu l'exemple pour ajouter des colonnes (tab)

Code : Tout sélectionner

ExportXL$ = GetTemporaryDirectory() + "exp_temp.xls"
ExportXL  = CreateFile(#PB_Any, ExportXL$, #PB_Ascii)
For i = 1 To 10
    WriteStringN(ExportXL, "Ligne " + Str(i) + Chr(9) + "Colonne B" + Chr(9) + "Colonne C")
Next i
CloseFile(ExportXL)
RunProgram("Excel", Chr(34) + ExportXL$ + Chr(34), "")
Merci 8) je met ça dans les modèles.
Avatar de l’utilisateur
Mindphazer
Messages : 639
Inscription : mer. 24/août/2005 10:42

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Mindphazer »

@Marc56
Content que ça te soit utile :P
En fait, je me suis rendu compte qu'on pouvait gruger Excel en lui faisant croire qu'il ouvrait un .xls alors que ce n'était qu'un simple fichier texte, juste en changeant l'extension 8)
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Dimensionner les colonnes d'un fichier .CSV

Message par omega »

Code : Tout sélectionner

ExportXL$ = GetTemporaryDirectory() + "exp_temp.xls"
ExportXL  = CreateFile(#PB_Any, ExportXL$, #PB_Ascii)
For i = 1 To 10
    WriteStringN(ExportXL, "Ligne " + Str(i) + Chr(9) + "Colonne B" + Chr(9) + "Colonne C")
Next i
CloseFile(ExportXL)
RunProgram("Excel", Chr(34) + ExportXL$ + Chr(34), "")
Excellent! Merci beaucoup pour le partage. Cette méthode me semble plus indiquée, ça me permet de manipuler directement un fichier excel (au lieu d'un csv) puisque mon but n°1, c'est d'exporter mes données vers un fichier Excel. Cela me convient parfaitement.

Merci
Win7 (x64) 64 bits Pb 5.72
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Marc56 »

Et voilà une autre version dérivée de l'idée de Mindphazer et qui va ajuster automatiquement la largeur des colonnes dans Excel.
Pour cela le programme génère puis lance un fichier VBScript qui contient en dernier la commande VBS
objRange.EntireColumn.Autofit()
(Le fichier est créé dans le répertoire temporaire de Windows)

Code : Tout sélectionner

ExportXL$ = GetTemporaryDirectory() + "exp_temp.xls"
ExportXL  = CreateFile(#PB_Any, ExportXL$, #PB_Ascii)

; Fichier "Excel"
; Ligne d'entête
WriteStringN(ExportXL, "Désignation des articles" + Str(i) + Chr(9) + 
                       "Quantité d'articles" + Chr(9) + "Prix Unitaire")
; Remplissage
For i = 1 To 10
    WriteStringN(ExportXL, "ABCD" + Str(i) + Chr(9) + "123" + Chr(9) + "456.78")
Next i
CloseFile(ExportXL)

; Script VBScript pour ouvrir le document et ajuster toutes les colonnes
; Créé dans le répertoire temporaire de Windows
VBS$ = ~"Set objExcel = CreateObject(\"Excel.Application\")" + #CRLF$
VBS$ + ~"Set objWorkbook = objExcel.Workbooks.Open(" + Chr(34) + ExportXL$ + Chr(34) + ")" + #CRLF$
VBS$ + ~"objExcel.Visible = True" + #CRLF$
VBS$ + ~"Set objWorksheet = objWorkbook.Worksheets(1)" + #CRLF$
VBS$ + ~"Set objRange = objWorksheet.UsedRange" + #CRLF$
VBS$ + ~"objRange.EntireColumn.Autofit()" + #CRLF$

Script_VBS = CreateFile(#PB_Any, GetTemporaryDirectory() + "Ajuste_XLS.vbs")
WriteString(Script_VBS, VBS$)
CloseFile(Script_VBS)

RunProgram(GetTemporaryDirectory() + "Ajuste_XLS.vbs", "", "")
On peut ajouter une commande pour sauvegarder le classeur (voir doc vbscript)

Enjoy

8)
Avatar de l’utilisateur
Mindphazer
Messages : 639
Inscription : mer. 24/août/2005 10:42

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Mindphazer »

... (désolé double post)
Dernière modification par Mindphazer le jeu. 12/mars/2020 16:11, modifié 2 fois.
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
Mindphazer
Messages : 639
Inscription : mer. 24/août/2005 10:42

Re: Dimensionner les colonnes d'un fichier .CSV

Message par Mindphazer »

Bien vu !
Je n'aurais pas pensé que par VBScript on puisse le faire, sachant que, physiquement, le fichier reste un fichier texte même s'il a l'extension .xls

Voilà qui devrait contenter notre ami omega, s'il nous lit ! :mrgreen:

Chapeau, je garde sous le coude et je vais peut-être l'intégrer à ma procédure d'export Excel

Merci ! :P
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Répondre