[Excel] écrire fichier.txt

txiki Messages postés 6514 Date d'inscription   Statut Contributeur Dernière intervention   -  
 Lupin -
Salut a tous,
J'ai créé un formulaire avec 4 champs obligatoire sur 7. Le script de controle de ces champs fonctionne très bien.
J'ai aussi un résumé qui s'affiche en pop up avant l'envoi définitif.
Jusque là tout est OK.
Le Pb, c'est que je voudrais qu'en validant, ça écrive sur un fichier texte (inscription.txt) situé dans le même répertoire avec les valeurs des champs renseignés séparé par des point virgule (;) par exemple.
Question 1: s'il y a plusieurs validations simultanées, comment ça va se passer pour qu'il y ait plusieurs lignes ?
Question 2: comment faire pour qu'a l'ouverture d'excel il me récupère automatiquement ces enregistrements dans un tableau ?
Si je vous parles d'un txt c'est que je ne peux pas utiliser de base de données et qu'on m'a parlé de cette possibilité de fichier texte en écriture.
Merci infiniment d'avance pour vos lumières !

--

Le bonheur est la seule chose que l'on peut donner sans l'avoir.

4 réponses

  1. Lupin
     
    Bonjour,

    Exemple type :
    (c'est une façon de faire, mais il y en a d'autres!)

    Option Explicit
    '
    
    Sub CreerFichierTexte()
    
        Const ForReading = 1, ForWriting = 2, ForAppending = 8
    
        Dim NouveauTexte, Valeur As String
        Dim Limite, Boucle, Compteur As Integer
        Dim Client As String
        
        Dim oFS, NouveauFichier As Object
        
        NouveauTexte = ThisWorkbook.Path & "\" & "MonFichier.txt"
        Set oFS = CreateObject("Scripting.FileSystemObject")
        Set NouveauFichier = oFS.CreateTextFile(NouveauTexte, ForWriting)
        
        Limite = Range("A65535").End(xlUp).Row
        Client = ""
        For Boucle = 1 To Limite
            For Compteur = 0 To 2
                Client = Client & ActiveCell.Offset(0, Compteur).Value & ";"
            Next Compteur
            NouveauFichier.WriteLine (Client)
            ActiveCell.Offset(1, 0).Select
            Client = ""
        Next Boucle
        
        NouveauFichier.Close
        
    End Sub
    '
    
    Sub LectureFichierTexte()
    
        Const ForReading = 1, ForWriting = 2, ForAppending = 8
        
        Dim oFS As Object
        Dim Boucle As Long
        Dim MonFichier, Texte, Reponse, Msg As String
        Dim CheminFichier As String
        
            
        CheminFichier = ThisWorkbook.Path & "\" & "MonFichier.txt"
        Set oFS = CreateObject("Scripting.FileSystemObject")
        Set MonFichier = oFS.OpenTextFile(CheminFichier, ForReading)
        
        While Not MonFichier.AtEndOfStream
            Texte = MonFichier.ReadLine
            MsgBox Texte
        Wend
    
        MonFichier.Close
        
    End Sub
    '
    
    
    


    Lupin
    1
  2. Lupin
     
    re:

    Pour "la préparation du tableau excel", la je puis te donner
    quelque tuyau!

    défini chaque ligne étant un enregistrement (un ensemble)
    défini chaque colonne étant un champ de l'enregistrement
    défini un caractère comme séparateur " ; "

    ! "caractère de tabulation"
    Avec Excel à l'ouverture d'un fichier de type texte, tu pourra
    paramètrer le caractère choisi dans la section:

    Type de données d'origine
    Choici "Délémité"
    Page suivante
    Section "Séparateurs"
    Dans "Autre", il y a une case pour inscrire le caractère

    et c'est tout !

    Lupin
    1
  3. txiki Messages postés 6514 Date d'inscription   Statut Contributeur Dernière intervention   609
     
    Salut Lupin et merci pour ta réponse,
    Mais je ne comprends rien, vraiment rien. Voici mon script.js:
    <!-- Vérification des champs du formulaire
    function verif() 
    { 
    	var nom = document.formulaire.nom.value;
    	if (document.formulaire.nom.value == "")
    	{
    		alert ('Veuillez entrer votre nom');
    		document.formulaire.nom.focus();
    		return false;
    	}
    	if(document.formulaire.prenom.value == "")
    	{
    		alert ('Veuillez entrer votre prénom');
    		document.formulaire.prenom.focus();
    		return false;
    	}
    	if(document.formulaire.matricule.value == "")
    	{
    		alert ('Veuillez entrer votre matricule');
    		document.formulaire.matricule.focus();
    		return false;
    	}
    	if(document.formulaire.telephone.value == "")
    	{
    		alert ('Veuillez entrer un n° de téléphone');
    		document.formulaire.telephone.focus();
    		return false;
    	}
    	if(document.formulaire.telephone.value.length != 6)
    	{ 
    		alert ('Le n° de téléphone doit comporter 6 chiffres'); 
    		document.formulaire.telephone.focus();
    		return false; 
    	}
    
    	else {return true;}
    }
    //-->
    Il fonctionne très sous 2000 mais pas sous XP (pour la longueur du tél.) mais bon.
    Là je suis à la maison et je n'ai pas le formulaire sous la main.
    Mon Pb c'est que je veux pas recevoir les données par mail pour faire des copier/coller à la main dans un tableau excel.
    Du reste, je ne sais même pas comment je dois préparer mon tableau excel, si je dois mettre les noms des champs etc...
    Merci beaucoup en tous cas de m'avoir répondu.
    0
  4. Lupin
     
    re:

    j'avais très mal compris ta question, je m'en excuse.

    En fait je t'ai fourni un exemple VBA pour créer un fichier
    texte à partir d'une feuille Excel.

    sous javascript, je ne suis que débutant et ne puis t'aider plus.

    désolé !

    Lupin
    0