Découpe AUTO de colonne xls en format TXT sur

Fermé
luckisurf - 5 déc. 2007 à 20:05
 Utilisateur anonyme - 6 déc. 2007 à 14:48
Bonjour,

Découpe AUTO de colonne xls en format TXT sur le disque dur

Bonjour à toutes et à tous

MA QUESTION :
Je voudrais trouver une solution pour découper AUTOMATIQUEMENT des colonnes d'un fichier XLS en format texte par exemple.
J' ai créer un site en html simple avec excel , je voudrais un programme ou une formule pour découper automatiquement des dizaines de colonnes et qu'elles s'enregistre sur mon disuqe dur à un emplacement précis sous la forme .TXT (je me servirai d'un renomer pour changer l'entention en .HTML)
Et il faudrait que le fichier TXT porte le texte de la premiere cellule de la premiere colonne a découper , et ainsi de suite.

J'ai chercher, chercher, je tourne en rond, on parle de VBA mais je sais pas ce que c'est, on en tout cas je ne sais me servir de visual basic. Y a il moyen de créer une formule par exemple dans excel qui fasse ces enregistrements de colonnes en format txt de facon auto ? ou a chaque fois que je valide ou lance excel.

Merci de m'aider

en l'attente

LUCKISURF@yahoo.fr
A voir également:

7 réponses

Matio Messages postés 671 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 25 janvier 2011 299
5 déc. 2007 à 20:08
Tu peux enregistrer au format csv
0
luckisurf Messages postés 5 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 5 décembre 2007
5 déc. 2007 à 20:17
merci matio mais je débute , c'est quoi CSV ??

tu connais un script qui enregistrer automatiquement les colonnes d'excell en VSV , puis je renome les fichier CSV en changant l'extention en html et ca marcherait ???
0
Utilisateur anonyme
5 déc. 2007 à 20:51
Bonjour,

Sous Excel :

Aller sous VBE
[Alt] + [F11]

Clic droit sur le nom du classeur dans partie gauche
Choisir [Insertion/Module]

Dans le fenêtre de droite, faire un copier/coller de la
procédure ci-dessous :

Sub FormatTexte()

    Dim objFSO As Object, objFichier As Object
    Dim strFichier As String, Plage As Range
    Dim Ligne As Long, Colonne As Long
    Dim strLigne As String

    ' Chemin d'accès au fichier
    strFichier = ThisWorkbook.Path & "\1.html"
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    ' Création d'un fichier
    Set objFichier = objFSO.CreateTextFile(strFichier, 2)
    ' Sélection de la plage à couvrir
    Set Plage = Range("A1:C5")
    strLigne = ""
    ' Pour chaque ligne de la sélection
    For Ligne = 1 To Plage.Rows.Count
        ' Pour chaque colonne de la sélection
        For Colonne = 1 To Plage.Columns.Count
            ' Si dernière colonne, place code saut de ligne en html
            If (Colonne = Plage.Columns.Count) Then
                strLigne = strLigne & Cells(Ligne, Colonne).Value & "<BR>"
            Else
            ' Sinon, ajoute un espace entre chaque saisie
                strLigne = strLigne & Cells(Ligne, Colonne).Value & " "
            End If
        Next Colonne
        ' Écrire nouvelle ligne
        objFichier.WriteLine strLigne
    Next Ligne
    ' Fermeture du fichier
    objFichier.Close
    
End Sub
'


Ensuite, sous Excel :

//Outils/Macro/Macro...
Choisir [FormatTexte]

Voir le fichier [1.html] dans le même dossier que le fichier excel.

Lupin
0
luckisurf Messages postés 5 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 5 décembre 2007
5 déc. 2007 à 20:53
Petite precision

j'ai pas Microsoft Office mais OPEN office et star office ??

est ce pareil ??

(merci de ton aide)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luckisurf Messages postés 5 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 5 décembre 2007
5 déc. 2007 à 21:19
J'ai reussit a trouver ou ca se fait dans open office

je la copie,
je l'enregistre

je vais dans executer macro

il propose celle que j'ai créée avec FOMAT TXT

je valide mais j'ai une erreur dans la formule ou je devais changer quelque chose

erreur syntaxe
type de données range inconnues

Dois je remodifier la formule ??

moi j'ai 144 colonnes qui ont chacunes 84 lignes

colonne 1: de B1 a B84 jusqu'à colonne XT1 à XT84

B1 --- ------ XT1
.
.
.
.
B84 --------- XT84


et je suis sur la feuille intitulée Feuille3

Merci de ton aide

LUCKISURF
0
luckisurf Messages postés 5 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 5 décembre 2007
5 déc. 2007 à 21:35
J'ai modifié la plage (c'est pas XT mais DT la valeur max)

J'ai indiqué la plage B1 à DT85 comme ci dessus mais toujurs la meme erreur de range

Dois je renseigner autre chose ?? l'adresse de mon fichier XLS sur mon disque dur

Quand c'est marqué ligne et colonne (en francais) doisje le remplacer ??

est ce a cause de cela l'erreur de range ??

Si tu réussi à m'aider à faire cette decoupe auto de colonne en TXT, je te promet que je t'envoi une de chocolat par la poste (promis, juré , craché ! lol )

ca fait 15 jour que j'enregistre mes 144 pages une a une (quand je modifie le site) et ca serait hyper sympa de trouver un truc qui le fasse d'un clic

si j'ai texte dans ma cellule b1 "voiture" et dans C1"choufleur" , est ce trop demandé que les colonnes se decoupe en TXT respectivement en voiture.txt (la premiere colonne) et choufleur.txt (la seconde colonne et ainsi de suite)

Merci de votre aide


REM ***** BASIC *****

Sub FormatTexte()

Dim objFSO As Object, objFichier As Object
Dim strFichier As String, Plage As Range
Dim Ligne As Long, Colonne As Long
Dim strLigne As String

' Chemin d'accès au fichier
strFichier = ThisWorkbook.Path & "\1.html"
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Création d'un fichier
Set objFichier = objFSO.CreateTextFile(strFichier, 2)
' Sélection de la plage à couvrir
Set Plage = Range("B1:DT85")
strLigne = ""
' Pour chaque ligne de la sélection
For Ligne = 1 To Plage.Rows.Count
' Pour chaque colonne de la sélection
For Colonne = 1 To Plage.Columns.Count
' Si dernière colonne, place code saut de ligne en html
If (Colonne = Plage.Columns.Count) Then
strLigne = strLigne & Cells(Ligne, Colonne).Value & "<BR>"
Else
' Sinon, ajoute un espace entre chaque saisie
strLigne = strLigne & Cells(Ligne, Colonne).Value & " "
End If
Next Colonne
' Écrire nouvelle ligne
objFichier.WriteLine strLigne
Next Ligne
' Fermeture du fichier
objFichier.Close

End Sub
0
Utilisateur anonyme
6 déc. 2007 à 14:48
Bonjour,

Bien entendu, la fonction que j'ai codé ne fonctionne pas sous Calc, et je suis débutant sous Calc.
Toutefois, je puis vous p^roposer une solution de contournement.

Sous Calc, il vous est possible d'enregistrer au format CSV comme dit par Matio.

// Menu / Enregistrer sous

Choisir le type de fichier [ Format texte CSV ]

1.) Enregistrer tous les classeurs Calc au format CSV dans un dossier spécifique :
Exemple : [ C:\Resultats ]

2.) Créer un sous dossier [ Scripts ]

3.) Copier le fichier [ Extraction.vbs ] dans le dossier créé.
[ C:\Resultats\Scripts\Extraction.vbs ]
( Le fichier sera contruit à partir du script ci dessous.)

4.) Lancer l'exécution du script.

5.) Tous les fichiers converti se retrouve dans le répertoire [ Scripts ].

Script Extraction.vbs
'------------------------------------------------------------------------------------------------------------------------
' Fichier Script Extraction.vbs
'
' Création : Jeudi, le 6 Décembre 2007
'
' Modifié  :
'
'------------------------------------------------------------------------------------------------------------------------
'
' Déclaration des constantes
'
	Const cteLecture = 1
	Const cteEcriture = 2
	Const cteAjouter = 8
'

' Déclaration des variables globales
'
	Dim objFSO
	Dim strNomFichier, objFichier, objResultat
	Dim strMessage, strLigne, strCarac, strNewLigne
	Dim strNomDossier, objDossier, strFichier, strNewFichier

	strNomDossier = WScript.ScriptFullName
	strNomDossier= Left(strNomDossier, InStrRev(strNomDossier, "\"))
	strNomDossier= Mid(strNomDossier,1,(Len(strNomDossier) - 1))	
	strNomDossier= Left(strNomDossier, InStrRev(strNomDossier, "\"))

	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	Set objDossier = objFSO.GetFolder(strNomDossier)

	For Each strFichier In objDossier.Files
		MiseEnForme strFichier, strNomDossier
	Next	

	Set objFSO = Nothing

	strMessage = ""
	strMessage = strMessage & "Fin de Traitement." & vbLf & vbLf
	strMessage = strMessage & "Merci de votre attention." & vbLf
	strMessage = strMessage & "Bonne journée." & vbLf & vbLf
	strMessage = strMessage & "Lupin" & vbLf
	strMessage = strMessage & "Technicien en électronique/Informatique"

	MsgBox strMessage

WScript.Quit(0)
'------------------------------------------------------------------------------------------------------------------------
Function MiseEnForme (strCeFichier, strLeDossier)

	Dim strNomTemp


	strNomTemp = strCeFichier.ShortName
	strNomTemp = Mid(strNomTemp, 1, (Len(strNomTemp) - 3 ) )

	strNewFichier = WScript.ScriptFullName
	strNewFichier = Left(strNewFichier, InStrRev(strNewFichier, "\"))
	strNewFichier = strNewFichier & strNomTemp & "html"
	

	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	Set objFichier = objFSO.OpenTextFile(strCeFichier,cteLecture)
	Set objResultat = objFSO.CreateTextFile(strNewFichier, cteEcriture)
	
	objResultat.WriteLine "<html>"
	objResultat.WriteLine "<body>"

	Indice = 1
	While Not objFichier.AtEndOfStream
		strNewLigne = ""
		strLigne = objFichier.ReadLine
		For Boucle = 1 To Len(strLigne)
			strCarac = Mid(strLigne, Boucle, 1)
			If ( strCarac <> """" ) Then
				strNewLigne = strNewLigne & strCarac	
			End If
		Next
		strNewLigne = strNewLigne & "<br>"
		objResultat.WriteLine strNewLigne
	Wend
	objFichier.Close
	
	objResultat.WriteLine "</body>"
	objResultat.WriteLine "</html>"
	objResultat.Close

	Set objResultat = Nothing
	Set objFichier = Nothing
	Set objFSO = Nothing

End Function
'------------------------------------------------------------------------------------------------------------------------


Lupin
0