Interrompre Boucle si cellule vide dans la colonne A

Résolu/Fermé
Messages postés
112
Date d'inscription
mercredi 27 juillet 2016
Statut
Membre
Dernière intervention
2 juin 2020
-
Messages postés
112
Date d'inscription
mercredi 27 juillet 2016
Statut
Membre
Dernière intervention
2 juin 2020
-
Bonjour,
Pourriez-vous me données un petit coup de pouce svp.
J'ai une Macro Excel avec une boucle que je souhaiterais interrompre si je n'ai pas de données dans ma colonne A (RÉSULTAT DE FORMULE = ""), puis reprendre la suite de ma Macro.

Sub Export_ImprimChq()
   Dim start As Single
start = Timer
   'remplace le "." par "," dans la colonne "F"
   Sheets("Donnees").Range("F:F").NumberFormat = "@"
   Sheets("Donnees").Range("F:F").Replace What:=".", Replacement:=","

   With Worksheets("BdD")
        derlig = .Range("A" & Rows.Count).End(xlUp).Row
        TInfos = .Range("A2:A" & derlig).Value
    End With

    LTInf = UBound(TInfos, 1)
    Close
    'Fichier = ActiveWorkbook.Name & ".TXT"
    Fichier = "ImprimChq_" & Environ("username") & "_" & Format(Date, "yyyy-mm-dd") & "_" & Format(Time, "hh-mm-ss") & ".txt"
    Chemin = "C:\Users\h.rahmani\AppData\Roaming\ImprimCheques\00_Export_ImprimChq\"
    SepT = ""
    Open Chemin & Fichier For Output As #1

'ICI JE SOUHAITERAIS QUE LA BOUCLE S’INTERROMPE LORSQUE LA CELLULE EST VIDE => RÉSULTAT DE FORMULE = ""

        For N = 1 To LTInf
            For NL = 1 To 1
                If NL = 1 Then         'A;B;C;D;E;F;G;H;
                    Print #1, TInfos(N, 1) '; SepT; TInfos(N, 2); SepT; TInfos(N, 3); SepT; TInfos(N, 4); SepT; TInfos(N, 5); SepT; TInfos(N, 6); SepT; TInfos(N, 7); SepT; TInfos(N, 8); SepT; TInfos(N, 9); SepT; TInfos(N, 10); SepT; TInfos(N, 11); SepT; TInfos(N, 12)

                End If
            Next NL
        Next N

'ICI JE SOUHAITERAIS REPRENDRE ET TERMINER MON FICHIER PAR LES CARACTÈRES CI APRES 

        Print #1, "</END>"
        Print #1, "//"
    Close 1
MsgBox "Traitement Terminé! Durée : " & Timer - start & " secondes"
End Sub


Merci d'avance pour votre aide.

A voir également:

3 réponses

Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 733
Bonjour,

Veux-tu enregistrer toutes les lignes dont la cellule en colonne A n'est pas vide ou bien, interrompre l'enregistrement dès qu'on rencontre la première cellule vide en colonne A ?
Messages postés
112
Date d'inscription
mercredi 27 juillet 2016
Statut
Membre
Dernière intervention
2 juin 2020
1
Bonjour,
Je ne savais pas que cela était possible, du coup je préfère la 2è solution.
=> Enregistrer toutes les cellules non vide (résultat de formules "")
Merci!!!!
Messages postés
8539
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
20 juillet 2021
1 733
Bonjour,
Essaies :
Option Explicit
Sub Export_ImprimChq()
' Export vers fichier texte
Dim Tinfos As Variant
Dim Fichier As String, Chemin As String, SepT As String
Dim start As Single
Dim derlig As Long, LTinf As Long, N As Long
  start = Timer
  'remplace le "." par "," dans la colonne "F"
  With Worksheets("Donnees").Range("F:F")
    .NumberFormat = "@"
    .Replace What:=".", Replacement:=","
  End With
  With Worksheets("BdD")
    derlig = .Range("A" & Rows.Count).End(xlUp).Row
    Tinfos = .Range("A2:C" & derlig).Value
  End With
  LTinf = UBound(Tinfos, 1)
  Close
  Fichier = ThisWorkbook.Name & ".txt"
  Chemin = ThisWorkbook.Path & "/"
  'Fichier = "ImprimChq_" & Environ("username") & "_" & _
            Format(Date, "yyyy-mm-dd") & "_" & _
            Format(Time, "hh-mm-ss") & ".txt"
  'Chemin = "C:\Users\h.rahmani\AppData\Roaming\" & _
           "ImprimCheques\00_Export_ImprimChq\"
  SepT = Chr(9) ' ""
  Open Chemin & Fichier For Output As #1
  For N = 1 To LTinf
    If Tinfos(N, 1) <> "" Then
      Print #1, _
      Tinfos(N, 1); SepT; Tinfos(N, 2); SepT; Tinfos(N, 3) _
      '  ; SepT; Tinfos(N, 4); SepT; Tinfos(N, 5); SepT; Tinfos(N, 6) _
        ; SepT; Tinfos(N, 7); SepT; Tinfos(N, 8); SepT; Tinfos(N, 9) _
        ; SepT; Tinfos(N, 10); SepT; Tinfos(N, 11); SepT; Tinfos(N, 12)
    End If
  Next N
  Print #1, "</END>"
  Print #1, "//"
  Close 1
  MsgBox "Traitement Terminé! Durée : " & Timer - start & " secondes"
End Sub



Exemple avec 3 colonnes format texte, séparateur tabulation.
Cordialement
Patrice


lignes en double supprimées Modération CCM
Messages postés
112
Date d'inscription
mercredi 27 juillet 2016
Statut
Membre
Dernière intervention
2 juin 2020
1
Bonjour et merci pour ton aide.
Je n'arrive pas a identifier ce que je peux récupérer ou non car je débute sur VBA.
En effet, j'ai effectué mon tableau Excel source pour n'avoir qu'une colonne à exporter (parce que je ne savais pas le faire sur plusieurs colonnes sans avoir de séparateur.
dois uniquement reprendre mon code et ajouter ce code?
If Tinfos(N, 1) <> "" Then
J'essaie comme ça, et je te tiens au courant.
Je garde tout de même ton code complet pour pouvoir comprendre les différences et l'utiliser à l'avenir.
Messages postés
112
Date d'inscription
mercredi 27 juillet 2016
Statut
Membre
Dernière intervention
2 juin 2020
1
Bonjour,

Voilà qui FONCTIONNE!!!!
Merci Patrice :D
J'ai ajouter les 2 lignes identifiées par => (symbole à supprimer le cas où ce code servirais à quelqu'un d'autre...)
Encore merci et très bonne journée.

Sub Export_ImprimChq()
   Dim start As Single
start = Timer
   'remplace le "." par "," dans la colonne "F"
   Sheets("Donnees").Range("F:F").NumberFormat = "@"
   Sheets("Donnees").Range("F:F").Replace What:=".", Replacement:=","
   
    With Worksheets("BdD")
        derlig = .Range("A" & Rows.Count).End(xlUp).Row
        Tinfos = .Range("A2:A" & derlig).Value
    End With

    LTInf = UBound(Tinfos, 1)
    Close
    'Fichier = ActiveWorkbook.Name & ".TXT"
    Fichier = "ImprimChq_" & Environ("username") & "_" & Format(Date, "yyyy-mm-dd") & "_" & Format(Time, "hh-mm-ss") & ".txt"
    Chemin = "C:\Users\h.rahmani\AppData\Roaming\ImprimCheques\00_Export_ImprimChq\"
    SepT = ""
    Open Chemin & Fichier For Output As #1


        For N = 1 To LTInf
 =>        If Tinfos(N, 1) <> "" Then
            For NL = 1 To 1
                If NL = 1 Then      
                End If
            Next NL
=>            End If
        Next N
        Print #1, "</END>"
        Print #1, "//"
    Close 1
MsgBox "Traitement Terminé! Durée : " & Timer - start & " secondes"
End Sub