begin process at 2010 02 09 23:54:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Procédure

 > SQL SERVER - PROCEDURE D'EDITION D'UN FICHIER PLAT (EXPORT CSV)

SQL SERVER - PROCEDURE D'EDITION D'UN FICHIER PLAT (EXPORT CSV)


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Procédure Classé sous :EXPORT, FICHIER, PLAT, CSV, DOS Niveau :Débutant Date de création :22/11/2007 Date de mise à jour :23/12/2008 12:14:09 Vu / téléchargé :14 019 / 279

Auteur : FENETRES

Ecrire un message privé
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale

   I. Introduction
   Avec cette exemple trivial, mon intention est de mettre l'accent sur les possibilités offertes par la procédure xp_cmdshell (commandes DOS).
En préalable à l'exécution de l'exemple, il vous faudra activer la commande shell dans la surface d'exposition (cf. fichier joint). Et, naturellement, il faut que le serveur SQL ait un droit d'accès pour l'emplacement spécifié.

   II. Caractères diacritiques
      A. Caractéres réservés
      Les caractères réservés ! ^ & % < > >> " | doivent être précédés par le caractère ^ pour ne pas être assimilés à une commande. La fonction SQL permet de gérer ceux-ci en les préfixant.

      B. Caractères de retour à la ligne
      Les caractères de retour à la ligne (#13 + #10) devront être supprimés ou remplacés par le caractère d'espacement. La fonction SQL assure également cette tâche.

      C. Caractères accentués
      Du fait de la redirection, les caractères accentués seront codés en MS-DOS (OEM). Il faudra donc les convertir sous WINDOWS (ANSI). Comme le montre la saisie d'écran, la méthode la plus simple consiste à utiliser le convertisseur du traitement de texte WORD. Si besoin, la macro en VBA ci-dessous vous permettra d'automatiser ce traitemenent sous WORD (voir variantes en commentaire).

Sub OemToAnsi(sFilePath As String, sFileName As String)
   'Emplacement du fichier
   ChangeFileOpenDirectory sFilePath
   'Ouvrir le fichier en OEM, l'enregistrer en ANSI et le fermer
   Documents.Open FileName:=sFileName, Encoding:=850
   With ActiveDocument
      .SaveAs FileName:=sFileName, Encoding:=1252
      .Close
   End With
End Sub

Source

  • CREATE FUNCTION [dbo].[fctTranslateWordsDOS] (@EXP VARCHAR (8000))
  • RETURNS VARCHAR (8000)
  • AS
  • -- Préfixe les huit caractères réservés de MS-DOS par l'accent circonflexe et
  • -- supprime ou remplace les caractères de retour à la ligne par un espace.
  • -- Exemples d'utilisation :
  • -- 1. Mots réservés
  • -- SELECT [dbo].[fctTranslateWordsDOS]('start ! " % & < > ^ | end')
  • -- 2. Caractères de retour à la ligne
  • -- SELECT [dbo].[fctTranslateWordsDOS](char(13) + char(10) + 'end')
  • -- SELECT [dbo].[fctTranslateWordsDOS]('start' + char(13) + char(10) + 'end')
  • -- SELECT [dbo].[fctTranslateWordsDOS]('start' + char(13) + char(10))
  • BEGIN
  • DECLARE @WORD VARCHAR(1), @RETVAL VARCHAR(8000)
  • IF (@EXP IS NULL) RETURN NULL
  • SET @RETVAL=''
  • WHILE LEN(@EXP)>0
  • BEGIN
  • SET @WORD= SUBSTRING(@EXP,1, 1)
  • -- Préfixe les mots réservés
  • IF ((@WORD='!') OR (@WORD='"') OR (@WORD='%') OR (@WORD='&') OR (@WORD='<') OR (@WORD='>') OR (@WORD='^') OR (@WORD='|'))
  • SET @RETVAL =@RETVAL + '^' + SUBSTRING(@EXP, 1, 1)
  • -- Remplacement conditionnel avec gestion des bornes
  • ELSE IF @WORD=CHAR(13) AND ISNULL(RIGHT(@RETVAL, 1), ' ')<>' ' AND @EXP<>CHAR(10)
  • SET @RETVAL = @RETVAL + ' '
  • -- Suppression des caractères de retour à la ligne
  • ELSE IF ASCII(@WORD)<>13 AND ASCII(@WORD)<>10
  • SET @RETVAL =@RETVAL + SUBSTRING(@EXP, 1, 1)
  • SET @EXP= SUBSTRING(@EXP, 2, LEN(@EXP)-1)
  • END -- END WHILE
  • RETURN @RETVAL
  • END -- END FCT
  • GO
  • CREATE PROCEDURE [dbo].[SPR_SHELL_EDIT] (@FullPath VARCHAR(260), @DelimitedText VARCHAR(7730), @isCleaned BIT) AS
  • /* Edition d'un fichier plat (CSV) à partir d'une commande DOS -----------------
  • -- Exemples d'utilisation :
  • -- Edition sans suppression du contenu
  • DECLARE @Emplacement VARCHAR (260)
  • -- Emplacement du type \\serveur\partage\chemin\nom_fichier
  • SET @Emplacement= '<chemin d'accès à saisir>\Test.csv'
  • EXEC SPR_SHELL_EDIT @Emplacement, 'bijou;caillou;chou;genou;hibou;joujou;pou', 0
  • -- Edition avec suppression du contenu
  • EXEC SPR_SHELL_EDIT @Emplacement, 'bijou;caillou;chou;genou;hibou;joujou;pou', 1
  • ------------------------------------------------------------------------------ */
  • BEGIN
  • DECLARE @Cmd VARCHAR(8000);
  • IF @isCleaned=1
  • -- Supprimer le contenu existant puis ajouter la ligne de texte
  • SET @Cmd = 'Echo ' + [dbo].[fctTranslateWordsDOS](@DelimitedText) + ' > ' + @FullPath;
  • ELSE
  • -- Ajouter la ligne de texte sans supprimer le contenu existant
  • SET @Cmd = 'Echo ' + [dbo].[fctTranslateWordsDOS](@DelimitedText) + ' >> ' + @FullPath;
  • EXEC xp_cmdshell @Cmd, NO_OUTPUT;
  • END
CREATE FUNCTION [dbo].[fctTranslateWordsDOS] (@EXP VARCHAR (8000))
RETURNS VARCHAR (8000)
AS 
-- Préfixe les huit caractères réservés de MS-DOS par l'accent circonflexe et
-- supprime ou remplace les caractères de retour à la ligne par un espace.
-- Exemples d'utilisation :
    -- 1. Mots réservés
        -- SELECT [dbo].[fctTranslateWordsDOS]('start ! " % & < > ^ | end')
    -- 2. Caractères de retour à la ligne
        -- SELECT [dbo].[fctTranslateWordsDOS](char(13) + char(10) + 'end')
        -- SELECT [dbo].[fctTranslateWordsDOS]('start' + char(13) + char(10) + 'end')
        -- SELECT [dbo].[fctTranslateWordsDOS]('start' + char(13) + char(10))
BEGIN
    DECLARE @WORD VARCHAR(1), @RETVAL VARCHAR(8000)
     IF (@EXP IS NULL) RETURN NULL
    SET @RETVAL=''  
    WHILE LEN(@EXP)>0
    BEGIN
        SET @WORD= SUBSTRING(@EXP,1, 1)
        -- Préfixe les mots réservés
        IF ((@WORD='!') OR (@WORD='"') OR (@WORD='%') OR (@WORD='&') OR (@WORD='<') OR (@WORD='>') OR (@WORD='^') OR (@WORD='|')) 
            SET @RETVAL =@RETVAL + '^' + SUBSTRING(@EXP, 1, 1)
        -- Remplacement conditionnel avec gestion des bornes
        ELSE IF @WORD=CHAR(13) AND ISNULL(RIGHT(@RETVAL, 1), ' ')<>' ' AND @EXP<>CHAR(10)
                SET @RETVAL = @RETVAL	+ ' '
        -- Suppression des caractères de retour à la ligne
        ELSE IF ASCII(@WORD)<>13 AND ASCII(@WORD)<>10
            SET @RETVAL =@RETVAL + SUBSTRING(@EXP, 1, 1) 
        SET @EXP= SUBSTRING(@EXP, 2, LEN(@EXP)-1)
    END -- END WHILE
    RETURN @RETVAL
END -- END FCT
GO

CREATE PROCEDURE [dbo].[SPR_SHELL_EDIT] (@FullPath VARCHAR(260), @DelimitedText VARCHAR(7730), @isCleaned BIT) AS
/* Edition d'un fichier plat (CSV) à partir d'une commande DOS -----------------
	  -- Exemples d'utilisation :
	  -- Edition sans suppression du contenu
	  DECLARE @Emplacement VARCHAR (260)
	  -- Emplacement du type \\serveur\partage\chemin\nom_fichier
	  SET @Emplacement= '<chemin d'accès à saisir>\Test.csv'
	  EXEC SPR_SHELL_EDIT @Emplacement, 'bijou;caillou;chou;genou;hibou;joujou;pou', 0
	  -- Edition avec suppression du contenu
	  EXEC SPR_SHELL_EDIT @Emplacement, 'bijou;caillou;chou;genou;hibou;joujou;pou', 1 
------------------------------------------------------------------------------ */
BEGIN
    DECLARE @Cmd VARCHAR(8000);

    IF @isCleaned=1 
         -- Supprimer le contenu existant puis ajouter la ligne de texte
        SET @Cmd = 'Echo ' + [dbo].[fctTranslateWordsDOS](@DelimitedText) + ' > ' + @FullPath;
    ELSE
        -- Ajouter la ligne de texte sans supprimer le contenu existant
        SET @Cmd = 'Echo ' + [dbo].[fctTranslateWordsDOS](@DelimitedText) + ' >> ' + @FullPath;

    EXEC xp_cmdshell @Cmd, NO_OUTPUT;
END

 Conclusion

Voir l'exemple concret en pièce jointe sur la base AdventureWorks.
L'argument NO_OUTPUT est facultatif. Supprimez le pour afficher un message d'erreur éventuel du genre « Accès refusé ».

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

22 novembre 2007 14:22:49 :
Exemple d'utilisation en commentaire dans le code source
22 novembre 2007 14:30:55 :
Ajout conclusion
22 novembre 2007 14:53:36 :
Explication complémentaire (argument NO_OUTPUT)
22 novembre 2007 15:31:01 :
Mots clés
26 novembre 2007 11:04:35 :
Titre complété
30 novembre 2007 16:49:36 :
Exemple concret sur la base AdventureWorks
30 novembre 2007 17:41:31 :
faute de frappe (orthographe)
04 décembre 2007 17:06:44 :
Ajout de la fct REPLACE dans l'exemple en pièce jointe
18 décembre 2007 11:16:36 :
Codage des caractères accentés
19 décembre 2007 10:43:57 :
Caractères réservés.
19 décembre 2007 15:56:18 :
Liste des mots réservés
19 décembre 2007 17:25:39 :
Ajout d'une fonction pour gérer les caractères réservés de MS-DOS
19 décembre 2007 17:42:44 :
Réorganisation de la source
21 décembre 2007 10:23:16 :
Optimisation de la fct d'ajout de l'accent circonflexe pour éditer les mots réservés de MS-DOS
26 décembre 2007 10:39:43 :
Explication complétée
26 décembre 2007 15:18:01 :
Ajout du code de la macro dans l'explication
26 décembre 2007 15:21:05 :
Présentation
26 décembre 2007 15:39:05 :
Faute de frappe
26 décembre 2007 15:40:31 :
Faute de frappe
26 décembre 2007 15:41:59 :
Faute de frappe
26 décembre 2007 15:43:26 :
Faute de frappe
26 décembre 2007 17:49:25 :
Mise en page
26 décembre 2007 17:49:58 :
Mise en page
26 décembre 2007 17:51:00 :
Mise en page
27 décembre 2007 10:55:44 :
Faute de frappe
03 janvier 2008 11:46:36 :
MAJ de la fonction : ajout de la suppression ou du remplacement des caractères de retour à la ligne.
03 janvier 2008 12:05:29 :
Commentaire
03 janvier 2008 12:10:53 :
Faute de frappe
04 janvier 2008 16:06:48 :
Faute de frappe (orthographe)
04 janvier 2008 16:15:58 :
idem
04 janvier 2008 16:18:53 :
mise en page
07 janvier 2008 09:38:57 :
PRésentation
23 décembre 2008 12:14:10 :
Artefact d'enregistrement (guillemet)

 Sources du même auteur

Source avec Zip Source avec une capture SQL SERVER - GENERATION AUTOMATIQUE D'UNE RETRO-DOCUMENTATIO...
Source avec une capture SQL SERVER - TRANSMISSION D'UN PARAMETRE A VALEURS MULTIPLES
Source avec une capture SQL SERVER 2005 - GESTION DE LA LARGEUR DES COLONNES D'UNE R...
SQL SERVER - OBTENIR LA DATE DU DERNIER JOUR DU MOIS (GET LA...
SQL SERVER - ADRESSE MAC ET NOM D'ORDINATEUR

 Sources de la même categorie

Source avec Zip (SQL SERVER) REQUÊTE POUR RECHERCHER UN {GUID} DANS TOUS LES... par lassaad83
[ORACLE]DÉTERMINER LA DATE DU PREMIER JOUR D'UNE SEMAINE PAR... par Bouillou2
T-SQL - PROCÉDURE - STOCKÉE - PLACER DANS UNE TABLE LE RÉSUL... par zavier666
SQL LECTURE IMPORT DE FICHIER TEXTE par PHILIPPO
Source avec Zip GÉNÉRER DES REQUETES INSERT À PARTIR DES DONNÉES EXISTANTES ... par lassaad83

 Sources en rapport avec celle ci

SQL LECTURE IMPORT DE FICHIER TEXTE par PHILIPPO
SQL SERVER - MODIFIER LA CROISSANCE DES FICHIERS DE BASE DE ... par fabrice69
Source avec Zip [MS SQL SERVER]EXPORTATION DE DONNEES VERS MICROSOFT EXCEL par jimmy69
SQL SERVER - COMMENT OBTENIR L'EXTENSION D'UN FICHIER DEPUIS... par fabrice69
SQL SERVER - SUPPRIMER UN FICHIER par fabrice69

Commentaires et avis

Commentaire de FENETRES le 22/11/2007 17:42:12

Si l'exemple parait simple, sachez que grâce à cette solution, nous avons, en imbriquant des curseurs, construit une seule procédure d'export pour plus de 50 fichiers !

Commentaire de Alighieri76 le 23/11/2007 14:32:16

Merci beaucoup pour cette source.Je ve étudier ca de prés. Je te met 8/10 car ca peut être appronfondie

Commentaire de FENETRES le 26/11/2007 10:23:23

L'export SQL vers un fichier CSV n'est qu'un exemple parmi tant de possibilités qu'il est tout à fait regrettable à mon avis que les commandes DOS ne soient pas davantage utilisées dans les scripts SQL.
Sinon, pourquoi faire simple quand on peut faire compliqué ?

Commentaire de FENETRES le 26/11/2007 10:53:05

Script d'activation de la commande shell :

EXEC sp_configure 'xp_cmdshell' , 1
GO
-- Appliquer la modification de configuration
RECONFIGURE
GO

Commentaire de bir le 26/11/2007 11:30:15

bonjour, pas mal ton code , mais si tu pouvez donner un exemple avec une requête sql en paramètre ce serai mieux

Commentaire de FENETRES le 26/11/2007 14:01:25

Vous ne seriez pas un peu paresseux l'ami ? OK, voila un exemple très concret sur la base AdventureWorks.

-- Variables de traitement d'export
DECLARE @FullPath Varchar(128), @Txt VARCHAR (7744), @Cmd varchar(8000)
-- Variables de données
DECLARE @DepartementID smallint, @Name varchar(50), @Groupname varchar(50), @ModifiedDate datetime

-- Nom et emplacement du fichier d'export csv
SET  @FullPath='D:\Test\HR_Departement.csv'

DECLARE HR_DPT_CURSEUR CURSOR FOR
SELECT TOP (20) DepartmentID, Name, GroupName, ModifiedDate FROM HumanResources.Department
OPEN HR_DPT_CURSEUR
FETCH NEXT FROM  HR_DPT_CURSEUR INTO @DepartementID, @Name, @Groupname, @ModifiedDate
WHILE (@@FETCH_STATUS = 0) BEGIN
SET @Txt = CONVERT(VARCHAR(11), ISNULL(@DepartementID, '')) + ';'
                 + ISNULL(@Name, '') + ';'
                 + ISNULL(@GroupName, '') + ';'
+ ISNULL(CONVERT(VARCHAR(10), @ModifiedDate, 103), '')
-- Ecrire et exécuter la commande d'ajout de contenu
            SET @Cmd = 'Echo ' + @Txt + ' >> ' + @FullPath;
            EXEC xp_cmdshell @Cmd, NO_OUTPUT;
FETCH NEXT FROM HR_DPT_CURSEUR INTO @DepartementID, @Name, @Groupname, @ModifiedDate
END -- END WHILE
CLOSE  HR_DPT_CURSEUR
DEALLOCATE  HR_DPT_CURSEUR

Commentaire de dnt91 le 30/11/2007 15:21:46

Salut,

Tout d'abord merci pour ton commentaire et ta note pour mon article (http://www.sqlfr.com/tutoriaux/METHODES-TRANSFERT-DONNEES-AVEC-SQL-SERVER-2005_677.aspx).

Pour ma part, compte tenu de la puissance de la procédure étendue xp_cmdshell, j'évite d'activer cette fonctionnalité et donc d'utiliser la procédure étendue xp_cmdshell ! je le faisais beaucoup avant, notamment lorsque je développais des applications qui utilisaient des images; je créais des dossiers pour stocker mes images avec la procédure xp_cmdshell, ensuite j'y stockais mes images et je ne gardais que les chemins dans ma base de données pour optimiser la vitesse d'exécution des requetes sur mes images ! Cependant, avec cette procédure, on peut quasiment tout faire au niveau du système, et donc son utilisation n'est réservée qu'à des utilisateurs avertis ! Cependant, on est rarement tout seul à travailler sur un serveur, et on ne connait pas forcément le niveau des autres et donc ce qu'ils peuvent faire avec...

Quoi qu'il en soit, très bon article.

Pour me faire un peu de pub, je suis en train d'écire un nouvel article sur les différentes possiblités qui sont offertes aux développeurs de bases de données (Création de bases , de tables, de vues, de procédures stockées, de délcencheurs, de fonctions, de règles, de types alias, etc...), avis aux amateurs !

Commentaire de FENETRES le 30/11/2007 15:30:53

A cause de ses possibilités étendues, ton objection est fondée. Cette commande doit être réservée à un administrateur ou à des utilisateurs avertis.

Commentaire de FENETRES le 06/12/2007 11:44:54

Contraint d'effectuer une migration de données vers une application antédiluvienne, j'ai imaginé cette solution simple et efficace. Compte tenu de l'intérêt actuelle des lecteurs (meilleur popularité du mois) il semblerait que l'objection sécuritaire de DNT91 ne soit pas vraiment un obstacle.

Commentaire de FENETRES le 07/12/2007 15:04:26

Mille excuses pour les fautes de frappe (orthographe du commentaire précédent) une tendinite a complètement bloqué mon bras droit. Au-delà, n'hésitez pas à exprimer votre opinion sur la solution d'export proposée.

Commentaire de FENETRES le 14/12/2007 10:15:19

Incroyable... plus de 900 connexions en moins de quatre semaines et personne n'a relevé la complication que cette source peut poser.
Nos GM seraient devenus aussi distraits ? Pourtant cette difficulté est souvent évoquée dans les forums de discussion.
Je vous laisse le week-end pour identifier ce problème avant d'apporter une explication et une solution à celui-ci.

Commentaire de FENETRES le 18/12/2007 11:49:55

Le lien ci-dessous fournira de plus amples informations sur le codage OEM et ANSI à ceux qui le souhaitent.

http://fspsa.free.fr/ansi.htm

Commentaire de FENETRES le 21/12/2007 16:49:25

Pour ceux qui souhaitent automatiser la conversion sous Word (Macro) :
Sub Decode()
   ' Convertir un fichier OEM en ANSI
   Call OpenFile("D:\Test", "Test_OEM.csv", 850)
   Call SaveFile("D:\Test", "Test_ANSI.csv", 1252)
End Sub

Sub OpenFile(sPath As String, sFileName As String, iEncoding As Integer)
   'Ouvrir un fichier codé
   ChangeFileOpenDirectory sPath
   Documents.Open FileName:=sFileName, ConfirmConversions:=False, ReadOnly:=False, _
   AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
   Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
   Format:=wdOpenFormatAuto, XMLTransform:="", Encoding:=iEncoding
End Sub

Sub SaveFile(sPath As String, sFileName As String, iEncoding As Integer)
   'Fermer un fichier codé
   ChangeFileOpenDirectory sPath
   ActiveDocument.SaveAs FileName:=sFileName, FileFormat:=wdFormatText, _
   LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", _
   ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, _
   SaveFormsData:=False, SaveAsAOCELetter:=False, Encoding:=1252, InsertLineBreaks:=False, _
   AllowSubstitutions:=False, LineEnding:=wdCRLF
End Sub

Commentaire de FENETRES le 21/12/2007 17:34:22


Annule et remplace la macro du commentaire précédent.


Sub Decode()
   ' Convertir un fichier OEM en ANSI
   Call OpenFile("D:\Test", "Test.csv", 850)
   Call CloseFile("D:\Test", "Test.csv", 1252)
End Sub

Sub OpenFile(sPath As String, sFileName As String, iEncoding As Integer)
   'Ouvrir un fichier codé
   ChangeFileOpenDirectory sPath
   Documents.Open FileName:=sFileName, ConfirmConversions:=False, ReadOnly:=False, _
   AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
   Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
   Format:=wdOpenFormatAuto, XMLTransform:="", Encoding:=iEncoding
End Sub

Sub CloseFile(sPath As String, sFileName As String, iEncoding As Integer)
   'Enregistrer et fermer un fichier codé
   ChangeFileOpenDirectory sPath
   With ActiveDocument
      .SaveAs FileName:=sFileName, FileFormat:=wdFormatText, _
      LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", _
      ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, _
      SaveFormsData:=False, SaveAsAOCELetter:=False, Encoding:=iEncoding, InsertLineBreaks:=False, _
      AllowSubstitutions:=False, LineEnding:=wdCRLF
      .Close
   End With
End Sub

Commentaire de FENETRES le 26/12/2007 11:43:41

Variante de la précédente macro à choisir si tous vos fichiers appartiennent au même répertoire.

Sub DecodeOEM()
   Dim sNames() As String, i As Integer
  
   'Emplacement du répertoire à traiter
   ChangeFileOpenDirectory "D:\Test"
   'Liste CSV des fichiers du réperoire spécifié
   sNames = Split("test.csv;test.txt", ";")
  
   For i = LBound(sNames) To UBound(sNames)
      Documents.Open FileName:=sNames(i), ConfirmConversions:=False, ReadOnly:=False, _
      AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
      Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
      Format:=wdOpenFormatAuto, XMLTransform:="", Encoding:=850
      With ActiveDocument
         .SaveAs FileName:=sNames(i), FileFormat:=wdFormatText, _
         LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", _
         ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, _
         SaveFormsData:=False, SaveAsAOCELetter:=False, Encoding:=1252, InsertLineBreaks:=False, _
         AllowSubstitutions:=False, LineEnding:=wdCRLF
         .Close
      End With
  
   Next i
  
End Sub

Commentaire de FENETRES le 26/12/2007 14:23:19

Naturellement, il n'est pas nécessaire dénumérer toutes les propriétés des deux principales méthodes appelées. On obtient donc, pour la macro précédente, la simplification suivante de l'écriture :

Sub DecodeOEM()
   Dim sNames() As String, i As Integer
  
   'Emplacement du répertoire à traiter
   ChangeFileOpenDirectory "\\srvinfo\Test"
   'Liste CSV des fichiers du réperoire spécifié
   sNames = Split("test.csv;test.txt", ";")
  
   For i = LBound(sNames) To UBound(sNames)
      Documents.Open FileName:=sNames(i), Encoding:=850
      With ActiveDocument
         .SaveAs FileName:=sNames(i), Encoding:=1252
         .Close
      End With
   Next i
End Sub

Commentaire de FENETRES le 28/12/2007 14:10:25

Conversion OEM-ANSI

Les férus de programmation trouveront les tables de conversion sur le site VB France à cette adresse :
http://www.vbfrance.com/codes/CONVERTION-TABLE-CARACTERES-EBCDIC-ASCII-OEM-ANSI_4998.aspx

Commentaire de oluha le 05/02/2009 10:14:01 8/10

Merci pour ta source

Commentaire de shirley8 le 09/11/2009 04:37:48

Avec Emicsoft Vidéo Convertisseur pour Mac, Vous avez faitez conversion  du format vidéo en WAV, MP3, etc sans problème. Essayiez  autre  programme pour aider!!Emicsoft AVI Converter for Mac, Emicsoft FLV Converter for Mac.

http://www.emicsoft.com/video-converter-for-mac.html
http://www.emicsoft.com/avi-converter-for-mac.html
http://www.emicsoft.com/flv-converter-for-mac.html

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Import fichier CSV dans Oracle 9i sous Linux RHEL3 [ par Lucinda000 ] Bonjour à tous,Voilà. J'aimerai importer des fichiers csv sous Oracle 9i qui a déjà une base de données.J'ai bien compris que je devais utiliser sqlld fichier plat sql [ par jshinobi ] Bonjourcomment mettre les données d'un fichier log dans une base de données sql oracle toute en respectant les champs du log? Création de fichier plat à partir des bases ORACLE [ par jvelo ] Bonjour,En fait, je fais une recherche d'information sur des bases différentes (ORACLE 10g). Mais, ces bases contiennent des tables identiques représe Export XML via BCP SQL server 2005 [ par bambou92 ] Bonjour,Je souhaiterai avoir une solution concernant mon problème d'export en format XML.J'ai créé une procédure stockée qui crée le fichier XML via f Migration de données d'un fichier plat vers une base de données SQL en utilisant SSIS [ par OmarEK ] Bonjour,J'ai des données dans un fichier plat ".txt" que je voudrais migrer vers une table de base de données SQL en utilisant SSIS, en comparant les LOAD DATA LOCAL INFILE insert que certaines colonnes [ par ericsandrine ] bonjour j'ai un fichier csv avec 10 colonnes et ma table n'a que 3 colonnes peut on faire un LOAD DATA LOCAL INFILE en ne récupérant que certaines Validation de fichier csv dans un DTS [ par samoht ] Bonjour,J'ai un DTS sur sql2005 qui importe les données d'un fichier CSV stocké sur le lecteur D du serveur. Jusqu'ici, l'importation se passe correct Créer un fichier Plat avec SSIS 2005 sur un autre serveur [ par PleaseHELP ] Bonjour, Je souhaiterais créer un fichier plat sur un autre serveur que celui sur lequel SSIS 2005 est installé. Quelqu'un aurait-il une idée? Merci SSIS Erreur : « ResultSet » non définie correctement [ par Khelldran ] Bonjour, Je suis actuellement stagiaire dans une entreprise informatique, je suis amené à utiliser SSIS. Mon erreur arrive lors de l'execution d'une Copie de fichier Base de données AS 400 [ par Deprince ] Je souhaite copier un fichier base de données as400 se trouver sur un AS400 vers mon PC à partir des commandes. Comment procéder ? Un gros calin à t


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales