Moulinette pour extraire @ d'un fichier txt

Nono44 Messages postés 10 Statut Membre -  
 LAAMEED -
Bonjour à tous,

Je suis nul en programmation et je cherche une "moulinette" qui saurait extraire d'un fichier txt des adresses email. En gros savoir trouver le @ et aller à l'espace d'avant et à l'espace d'apres et créer une liste de tous les emails trouvés.

Si on pousse un peu plus le bouchon ca serait d'avoir une petite interface sympa qui nous demande ou est le fichier texte à traiter (avec bouton parcourir par exemple) , une fois le fichier sélectionné elle se mettrait au boulot et établirait la liste.

si quelqu'un trouve ça simple, n'hésitez pas m'aider.

A bientot

Arnaud

12 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Peut être il faut peaufiner la regex ;)

    #!/usr/bin/perl
    #
    use warnings;use strict;
    
    $,="\n";
    print map { /\S+?\@[^@\();:,\\]+\.\w{2,4}/g } `cat email.txt`;
    
    __END__
    
    lami20j
    1
  2. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    Moi je veux bien aussi seulement voila il faut python, tout dumoins l'installer à mon avis ce qu'elle veut c'est un programme tout fait.

    un exe ca serait mieux je pense (pas les outils sous la main tout de suite : ) )
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      il faut le faire sous Linux (tout est dédans), gratuit en plus.

      lami20j
      0
  3. Lust Messages postés 243 Statut Membre 123
     
    mon truc est un exe et si on me le demande, je peux l'étendre sur d'autre fichier que le txt
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Si c'est un exe tu peux le donner ici ou meme le lien pour le récupérer pourquoi tout ca pour si peu franchement

    Pour Lust
    envoyer de gros fichiers pieces jointes par mail
    et/ou
    https://www.cjoint.com/

    lami20j

    P.S. Je suis d'accord avec jipicy
    Le savoir n'est bon que s'il est partagé.
    0
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Ne t'emporte pas comme ça ;)
    C'est toi plutôt qui dégénérer les choses

    j'ai pris le temps de construire un prog

    Ben, moi je l'ai fait en 10 secondes et il est gratuit moulinette pour extraire d un fichier txt#2

    Tu pourras faire pareil, mais c'est vrai tu n'est pas obligé.

    lami20j
    0
  7. Lust Messages postés 243 Statut Membre 123
     
    J'ai pas envi de me prendre la tete avec ca.... ceux qui ont le framework, ca va s'installer vite, sinon, le framework va prendre bcp de temps à installer .... a vous de voir... mais ce framework peux vous servir sur d'autres choses à l'avenir... voila le lien du zip :

    http://www.e-rus.net/Extract%20Mail.zip

    Désolé, y a encore mon adresse dedans.... mais c'est direct sur le zip.

    Je sais, c'est bcp de foin pour pas grand chose, mais je n'ai fais qu'essayer d'aider et quand on me saute dessus comme ca... enfin, le truc de demander l'adresse, c'etais plus pour que les gens qui l'utilise puisse m'indiquez un eventuel bug ou une éventuelle amélioration... peut importe ca marchera... ca marchera pas...
    0
  8. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
     
    Pour le fun, en VBA. Suffit d'avoir Excel.
    La moulinette propose Parcourir..., et c'est tout.
    https://www.cjoint.com/?ilntcsBQKd
    ... si y'a pas de bug !!!
    0
    1. Nono44 Messages postés 10 Statut Membre
       
      Quand je le lance il demande une feuille de style pr_demande.ccs.
      0
      1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529 > Nono44 Messages postés 10 Statut Membre
         
        Pour le moment je ne vois pas. Je n'ai pas ce cas...
        Si quelqu'un a une piste ?
        0
  9. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
     
    Vraiment désolé de ne pas pouvoir te dépanner... Je fais fonctionner la macro sans PB à partir d'un petit fichier texte fabriqué à la main.
    Ça m'est difficile de débugger à distance sans être dans le même environnement.
    Si quelqu'un veut bien essayer à partir d'un petit fichier texte contenant entre autres quelques adresse e-mail, pour voir...
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut Armojax,

      chez moi ça marche aussi sans problèmes.
      Tu peux afficher le code de la macro ici pour qu'il adapte à son cas.

      Je ne le fait pas moi puisque c'est toi qui l'a écrit.

      lami20j

      P.S. Le mien je l'ai affiché dans le message N°2
      0
  10. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
     
    Merci lami20j d'avoir testé de ton côté.

    Il y a d'une part la macro dans un module :
    Option Explicit
    
    Sub RechMails()
    
      Application.ScreenUpdating = False
    
      Dim Lig     As Long
      Dim Col     As Integer
      Dim FicPath As String
      Dim Cellule As Range
      Dim Ligne   As Long
      Dim EstMail As Variant
      
      FicPath = Application.GetOpenFilename("Text Files (*.txt), *.txt")
      If FicPath = "Faux" Then
        ThisWorkbook.Close
      End If
      
      Workbooks.OpenText Filename:=FicPath, _
                         DataType:=xlDelimited, _
                         Space:=True
      
      ActiveSheet.Name = "Source"
      Lig = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
      Col = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
      
      ActiveWorkbook.Sheets.Add
      ActiveSheet.Name = "Résultat"
      
      Sheets("Source").Activate
      Ligne = 0
      On Error Resume Next
      For Each Cellule In Range(Cells(1, 1), Cells(Lig, Col))
        EstMail = Application.WorksheetFunction.Search("@", Cellule)
        If EstMail <> "" Then
          Ligne = Ligne + 1
          Sheets("Résultat").Cells(Ligne, 1).Value = Cellule.Value
        End If
        EstMail = ""
      Next
      On Error GoTo 0
      Sheets("Résultat").Activate
      Application.DisplayAlerts = False
      Sheets("Source").Delete
      Application.DisplayAlerts = True
      Columns("A:A").AutoFit
      Application.ScreenUpdating = True
      
      ThisWorkbook.Close
        
    End Sub
    
    Et d'autre part l'appel de cette macro à l'Open du classeur, donc dans le code de ThisWorkbook :
    Option Explicit
    
    Private Sub Workbook_Open()
      Call RechMails
    End Sub


    Nono44, dans un premier temps laisse tomber le lancement automatique, et déroule en pas à pas, pour voir...
    0
  11. julien
     
    Bonjour,
    j'ai un fichier word ou txt ou je dispose d'un fichier comprenant la structure le nom le prénom l'adresse du site l'email... et je cherche à en faire une mailing liste ou seuls les adresse email séparées par des ; figurent.
    Si quelqun sait ce serait cool
    merci
    0
  12. NNAS
     
    Bonjour,

    Ceci va t'aider

    <?php

    $html = 'collecte des adresses mail
    toto@gmail.com; sjqt900@yahoo.fr
    voila@nnas.com
    ';

    preg_match_all("/([a-z.-_0-9]*)[@]([a-z]*)[.]([comfrg]{2,3})/", $html, $matches, PREG_SET_ORDER);

    foreach ($matches as $val) {
    echo $val[0] ."<br>";
    }

    ?>
    0
    1. novsky
       
      Merci Nass

      Je rajouterais ceci (-) pour la recherche et cela (;) pour le résultat exportable sous excel

      preg_match_all("/([a-z.-_-0-9]*)[@]([a-z]*)[.]([comfrg]{2,3})/", $html, $matches, PREG_SET_ORDER);

      foreach ($matches as $val) {
      echo $val[0] .";<br>";
      0
    2. LAAMEED
       
      Merci beaucoup, il m'a été très utile

      Comment mettre tout ça en formulaire pour ne pas éditer à chaque fois le code source ? merci
      0
    3. LAAMEED
       
      C'est bon j'ai trouvé :

      <?php

      error_reporting(0);


      function email_parser($str)
      {
      $str = strtolower($str);
      $pattern = ''[a-z0-9][-_\.a-z0-9]+[a-z0-9]@[-\.a-z0-9]+[a-z]'';

      preg_match_all($pattern, $str, $matches);
      $out = $matches[0];
      $out = array_unique($out);
      sort($out);

      return $out;
      }


      ?>
      <form action="" method="post">
      <textarea cols="40" rows="7" style="width:98%" name="in"><?php echo $_POST['in'] ?></textarea><br />
      <input type="submit" value="Parse !" />
      </form>

      <?php if(count($_POST)) : ?>
      <?php $emails = email_parser($_POST['in']) ?>
      <hr />
      <h4><?php echo count($emails) ?> adresses</h4>
      <pre><?php echo implode("\n", $emails) ?></pre>
      <?php endif ?>
      0