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 :

Faire boucler mon programme qui exporte des lignes excel dans fichier texte [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 10
    Par défaut Faire boucler mon programme qui exporte des lignes excel dans fichier texte
    Bonjour à tous,

    mon souci est assez bête en fait, j'aimerai simplement faire boucler mon code mais je ne vois pas comment y arriver.
    De façon à ce que dès qu'on rentre une ligne dans ma feuille excel et que l'on coche cette ligne. Lorsque l'on clique sur exporter tout, toutes les lignes remplies soient automatiquement exporter dans un fichier texte.
    Pour l'instant cela fonctionne très bien avec le code que j'ai tapé, mais je dois faire le cas pour chaque ligne...

    Si quelqu'un peut m'aider et me mettre sur la voie ce serait sympa.

    Merci de votre réponse.

    Cédric

    Mon fichier :
    Copie.xlsm

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Sub grosBouton()
     
        Open "C:\fichier.txt" For Output As #1
        Print #1, ""
        Close #1
     
        Kill ("C:\fichier.txt")
     
        If ThisWorkbook.Sheets(1).CheckBox1.Value = True Then
     
            ' Création d'un fichier texte
     
            Dim enterEtTab As String
            Dim str As String
     
            ' crée le fichier texte
            Open "C:\fichier.txt" For Append As #1
     
            enterEtTab = vbCrLf & vbTab
     
            ' element a ecrire dans le fichier
            str = "DEBUT" & enterEtTab & "'" & Cells(3, 4) & "'" & enterEtTab & _
            "NOM " & "'" & Cells(3, 3) & "'" & enterEtTab & "ENTER_ATTRIBUTES" & _
            enterEtTab & vbTab & "'" & "AGE" & "' " & "'" & Cells(3, 5) & "'" & enterEtTab & vbTab & _
            "'" & "GROUPE" & "' " & "'" & Cells(3, 7) & "'" & enterEtTab & "END_ATTRIBUTES" & vbCrLf & "FIN" & vbCrLf
     
            ' écrire dans le fichier
            Print #1, str
            Close #1
     
         Else
         End If
     
         If ThisWorkbook.Sheets(1).CheckBox2.Value = True Then
     
            Dim enterEtTab2 As String
            Dim str2 As String
     
            ' crée le fichier texte
            Open "C:\fichier.txt" For Append As #1
     
            enterEtTab2 = vbCrLf & vbTab
     
            str2 = "DEBUT" & enterEtTab2 & "'" & Cells(4, 4) & "'" & enterEtTab2 & _
            "NOM " & "'" & Cells(4, 3) & "'" & enterEtTab2 & "ENTER_ATTRIBUTES" & _
            enterEtTab2 & vbTab & "'" & "AGE" & "' " & "'" & Cells(4, 5) & "'" & enterEtTab2 & vbTab & _
            "'" & "GROUPE" & "' " & "'" & Cells(4, 7) & "'" & enterEtTab2 & "END_ATTRIBUTES" & vbCrLf & "FIN" & vbCrLf
     
            ' écrire dans le fichier
            Print #1, str2
            Close #1
         Else
         End If
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    et que l'on coche cette ligne
    Est-ce que tu peux préciser ? Est-ce que tu veux dire "sélectionner" ou cocher une case à cocher ?

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 10
    Par défaut
    Bonjour,

    en fait le but de mon programme est que lorsque l'on coche une ou plusieurs checkbox, les données inscrites dans la ligne correspondante sont exportées dans un fichier texte selon la mise en page que j'ai décidé. Et cela grâce au bouton "Exporter tout".

    J'ai réussi à le faire mais de manière manuelle, c'est à dire que pour chaque checkbox cochée, il y a le code correspondant à la ligne spécifique qui doit être exportée.
    Le problème c'est que si j'ai une centaine de ligne à ajouter je ne vais pas coder 100 fois : "Alors si tu coches cette checkbox, tu dois exporter telle ligne". J'aimerais pouvoir automatiser le processus.

    En gros, il faudrait que si je rajoute des lignes, elles soient automatiquement prises dans mon programme, que je puisse donc les cocher, faire "exporter tout", et mes nouvelles lignes entrées seront alors exportées dans le fichier texte.

    J'espère avoir été plus clair.

    Cédric

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Sauf erreur, ça pourrait ressembler à ça :

    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
    29
    30
    31
    32
    Sub grosBouton()
    Dim OO As OLEObject, Ligne As Long
    Set Var = Sheets(1).OLEObjects
    For Each OO In Sheets(1).OLEObjects
        If OO.progID = "Forms.CheckBox.1" Then
            If OO.Object.Value = True Then
                Ligne = OO.TopLeftCell.Row
                Export Ligne
                Exit Sub
            End If
        End If
    Next OO
    End Sub
    Sub Export(Ligne)
        Dim enterEtTab As String
        Dim str As String
     
        ' crée le fichier texte
        Open "C:\fichier.txt" For Append As #1
     
        enterEtTab = vbCrLf & vbTab
     
        ' element a ecrire dans le fichier
        str = "DEBUT" & enterEtTab & "'" & Cells(Ligne, 4) & "'" & enterEtTab & _
        "NOM " & "'" & Cells(Ligne, 3) & "'" & enterEtTab & "ENTER_ATTRIBUTES" & _
        enterEtTab & vbTab & "'" & "AGE" & "' " & "'" & Cells(Ligne, 5) & "'" & enterEtTab & vbTab & _
        "'" & "GROUPE" & "' " & "'" & Cells(Ligne, 7) & "'" & enterEtTab & "END_ATTRIBUTES" & vbCrLf & "FIN" & vbCrLf
     
        ' écrire dans le fichier
        Print #1, str
        Close #1
    End Sub
    Il faut que l'angle supérieur gauche de chaque checkbox soit bien situé dans la ligne.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2016
    Messages : 8
    Par défaut
    Bonjour Cedric,
    Tu peux aussi te passer de CheckBox en te basant sur le contenu de la première colonne.
    D'une part ça t'évite la création des CheckBox sur ta feuille, ce qui peut être galère si tu as beaucoup de lignes à gérer (à moins que tu ne crées ces CheckBox dynamiquement), d'autre part ça te simplifie aussi le code qui donnerait ça :
    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
    29
    30
    31
    32
    33
    34
    35
    Sub grosBouton()
        Dim enterEtTab As String
        Dim str As String
        Dim Ligne, nLigne As Integer
     
        Open "C:\fichier.txt" For Output As #1
        Print #1, ""
        Close #1
     
        Kill ("C:\fichier.txt")
     
     
        ' défini le numéro de la dernière ligne renseignée
        ' (en se basant sur le contenu de la colonne "Nom")
        nLigne = Sheets(1).Cells(Sheets(1).Cells(1048576, 3).End(xlUp).Row, 3).Row
     
        ' début de la boucle
        For Ligne = 2 To nLigne
            If Cells(Ligne, 1).Value = "a" Then
                Open "C:\fichier.txt" For Append As #1
     
                enterEtTab = vbCrLf & vbTab
     
                ' element a ecrire dans le fichier
                str = "DEBUT" & enterEtTab & "'" & Cells(Ligne, 4) & "'" & enterEtTab & _
                "NOM " & "'" & Cells(Ligne, 3) & "'" & enterEtTab & "ENTER_ATTRIBUTES" & _
                enterEtTab & vbTab & "'" & "AGE" & "' " & "'" & Cells(Ligne, 5) & "'" & enterEtTab & vbTab & _
                "'" & "GROUPE" & "' " & "'" & Cells(Ligne, 7) & "'" & enterEtTab & "END_ATTRIBUTES" & vbCrLf & "FIN" & vbCrLf
     
                ' écrire dans le fichier
                Print #1, str
                Close #1
         End If
        Next Ligne
    End Sub
    Si tu veux absolument conserver l'aspect "checkbox", utilise la police Webdings dans ta première colonne, la lettre "a" représente une coche

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 10
    Par défaut
    Bonjour,

    merci de vos reponses, je me suis inspiré de ce que vous m'avez montré et tout fonctionne très bien.
    J'ai voulu garder l'aspect checkBox, et pour passer de ligne en ligne, j'ai tout simplement ajouter une incrémentation sur le numero de de ligne à aller chercher.

    Cédric

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exporter des lignes en plusieurs fichiers
    Par titi45 dans le forum Requêtes
    Réponses: 1
    Dernier message: 19/05/2009, 23h23
  2. supression des lignes d'un fichier texte
    Par anna1980 dans le forum Général Python
    Réponses: 3
    Dernier message: 09/06/2008, 11h34
  3. Identifier des lignes d'un fichier texte à des varaibles
    Par lohot dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 27/02/2008, 18h39
  4. [VBA-E] Exporter des données Excel dans Word
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/08/2007, 19h25
  5. exporter des données vers un fichier text
    Par JauB dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/07/2006, 21h36

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