IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E]Récup séléction excel dans un fichier txt en separant par des points virgules


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de Vinceee38
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 65
    Points
    65
    Par défaut [VBA-E]Récup séléction excel dans un fichier txt en separant par des points virgules
    Coucou tout le monde , je vous explique mon problème,

    je dispose d'un logiciel qui me permet d'extraire les adresses mail de certains clients dans un fichier excel , seulement quand je veux envoyer un mail à toute une liste de client je suis obligé de faire du copier coller répétitif ce qui devient trés barbant à la longue donc je me penche sur les macros,

    je cherche une macro me permettant d'exporter ma séléction dans un fichier texte en separant les cellules par des ';' mais en ne tenant pas compte des cellules vide

    j'ai fait des recherches j'ai trouvé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Sub tmp()
    '   Declaration variables
    Dim i, j, nl, nc As Integer
    Dim FileName, t As String
     
    '   Demande fichier de sauvegarde
    FileName = Application.GetSaveAsFilename(Nom_Fichier, "Text Files (*.txt), *.txt")
     
    '   Ouverture fichier
    Open FileName For Output As #1
     
    '       On boucle sur la selection
    For i = 1 To nl
    t = ""
    For j = 1 To nc
    '               ajout de la tabulation comme separateur
    If t <> "" Then t = t & Chr(9)
    t = t & ActiveWindow.RangeSelection.Next(i, j - 1)
    Next j
    '           Ecriture de la ligne dans le fichier si non vide
    If t <> "" Then Print #1, t
    Next i
     
    '   Fermeture fichier
    Close #1
    End Sub
    qui permet de faire ce que je fais mais en séparant par une tabulation mais cela ne fonctionne pas , en executant pas à pas je me rend compte que je passe directement de

    à

    D'où est ce que ca peux venir svp ? c'est trés important pour moi

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu parles de point virgule et tu essaies de mettre une tab comme séparateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub FichierTxtEcrire()
    Dim i, j, DernièreLigne, DernièreColonne, f As Worksheet
    Set f = ActiveSheet
        DerniereLigne = f.Range("A1").SpecialCells(xlCellTypeLastCell).Row
        DerniereColonne = f.Range("A1").SpecialCells(xlCellTypeLastCell).Column
        Open "D:\txt\LeFichier.txt" For Output As #1
        For i = 1 To DerniereLigne
            For j = 1 To DerniereColonne - 1
                Print #1, f.Cells(i, j).Formula + ";";
                'pour séparateur ";" tu remplaces si ton séparateur est une virgule
            Next j
            Print #1, f.Cells(i, j + 1).Formula
        Next i
        Close #1
    End Sub
    Si tu as besoin d'une tabulation, tu remplaces ";" par ça qui faut
    Ceci dit, si réellement ton code c'est ce que tu as mis, alors
    For i = 1 To nl
    t = ""
    For j = 1 To nc
    ne sert strictement à rien. Quant au reste, je n'arrive pas à comprendre ce qui pourrait bien en sortir.

    Si tu as une plage de cellules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub FichierTxtEcrire()
    Dim fl As Worksheet
    Dim LaPlage as range
    Set fl = ActiveSheet
    Set LaPlage = fl.Range("A1:Z55")
    Open "D:\txt\LeFichier.txt" For Output As #1
    For each cel in Plage
         Print #1, Cel.Value & ";"; 
         'pour séparateur Tab tu remplaces juste ";"
    Next i
    Close #1
    End sub
    pas testé ce dernier code...
    Maintenant, tu peux enregistrer une feuille en .cls
    Tu dis

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    Bonjour,tu as juste mis ce code sans l'adapter à ce que tu veux??
    pasque la c'est normal qu'il fasse rien si tu ne remplaces pas
    Nom_Fichier
    nl
    nc
    par des valeurs il ne peut pas ni boucler ni ouvrir de fichier
    par ailleurs si tu préfères séparer par des points virgules plutot que des tabulations il faut remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If t <> "" Then t = t & Chr(9)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If t <> "" Then t = t & ";"
    rémi

  4. #4
    Membre du Club Avatar de Vinceee38
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    Merci à tous pour votre aide , j'ai reussi avec vos codes en les adaptant un peu à creer qq chose qui me satisfaisait , par contre voila comment apparaisse mes mails dans le fichier texte :

    personne1@test1.com;
    personne2@test2.com;
    personne3@test3.com;
    personne4@test4.com;
    personne5@test5.com;

    Alors que je voudrais qu'il soit en ligne pour pouvoir faire un copier coller dans outlook dans CC.

    comme ca :

    personne1@test1.com;personne2@test2....nne5@test5.com;

    Si quelqu'un a la solution je prend

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Montre le code que t'ont inspiré nos codes

  6. #6
    Membre du Club Avatar de Vinceee38
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    oui chef

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub Mail()
    '   Declaration variables
    Dim i, j, nl, nc As Integer
    Dim FileName, t As String
     
    '   Demande fichier de sauvegarde
    FileName = Application.GetSaveAsFilename(Recup, "Text Files (*.txt), *.txt")
     
    '   Ouverture fichier
    Open FileName For Output As #1
    nc = Selection.Columns.Count
    nl = Selection.Rows.Count
     
    '       On boucle sur la selection
    For i = 1 To nl
         t = ""
         For j = 1 To nc
              '               ajout du ";" comme separateur
              If t <> "" Then t = t + ";"
              t = t & ActiveWindow.RangeSelection.Next(i, j - 1)
         Next j
    '           Ecriture de la ligne dans le fichier si non vide
         If t <> "" Then Print #1, t + ";"
    Next i
     
    '   Fermeture fichier
    Close #1
    End Sub
    Voili voilou

    Ps : ce que je ne comprend pas c'est que dans ce tuto :

    http://msdn2.microsoft.com/fr-fr/lib...46(VS.80).aspx

    ils disent : Print n'inclut pas de saut de ligne à la fin d'une ligne ; cependant PrintLine inclut un saut de ligne.

    Alors qu'on utilise print et que ca saute une ligne .. :/

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Et si tu fais comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    t = ""
    For i = 1 To nl
         For j = 1 To nc
              ' ajout du ";" comme separateur
              If t <> "" Then t = t & ";"
              t = t & ActiveWindow.RangeSelection.Next(i, j - 1)
         Next j
    '           Ecriture de la ligne dans le fichier si non vide
    Next i
    If t <> "" Then Print #1, t
    Tu dis

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/11/2014, 11h12
  2. [Toutes versions] Copier une valeur excel dans un fichier .txt
    Par mentat dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/03/2010, 21h05
  3. Ecrire une plage excel dans un fichier txt
    Par kuma_buzz dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/05/2008, 11h48
  4. Réponses: 4
    Dernier message: 04/03/2008, 14h46
  5. [VBa-E] Peut-on écrire dans un fichier txt?
    Par gootsu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/07/2006, 12h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo