Bonjour à tous,
avant de rentrer dans le vif du sujet, j'espère que vous passer d'agréables fêtes de fin d'année ?
Je me permets de vous solliciter à la veille de cette nouvelle année au sujet d'une application sur laquelle je m'arrache les cheveux...
Celle-ci a pour objet de convertir au format .xlsx après retraitement de fichiers .txt ou .csv.
Le hic c'est que tout semble fonctionner... jusqu'à la phase de traitement.
La problématique est simple la délimitation des champs est bien réalisée, cependant, au lieu de revenir à la ligne pour traiter le deuxième enregistrement... et le traitement se poursuit mais... en colonne... pour illustrer mes propos :
traitement réalisé : 1,2,3...
traitement souhaité :
1
2
3...
Ci-dessous l'application... qui n'est pour l'heure pas aboutie... quelqu'un pourrait éclairer ma lanterne ?
Merci à vous
Vous souhaitant un bon réveillon.
'déclaration des variables globales
'mémorisation de la ligne et colonne de départ à partir de laquelle nous allons importer les données
Dim ligne_debut As Integer: Dim colonne_debut As Integer
' détermination de la dernière ligne et colonne à importer
Dim ligne_fin As Integer: Dim colonne_fin As Integer
' détermination de la ligne et colonne encours pour suivre la progression de l'insertion des données
Dim ligne_encours As Integer: Dim colonne_encours As Integer
Private Sub import_Click()
'proposer à l'utilisateur de sélectionner le ou les fichiers .txt ou .csv
Dim fichier_select As String
fichier_select = Application.GetOpenFilename("text files (*.txt;*.csv), *.txt; *.csv", , "Sélectionner un fichier .txt ou .csv")
's'assurer que l'utilisateur a bien sélectionner un fichier via la boîte de dialogue
If (LCase(fichier_select) <> "faux" And fichier_select <> "0") Then
liste_fichiers.AddItem (fichier_select)
End If
End Sub
Private Sub export_Click()
'déclarer la variable du nom du fichier sous lequel l'utilisateur souhaite exporter les données
Dim nom_fichier As String
'initialiser les variables globales
ligne_debut = 1: colonne_debut = 1
'initialisation des indices de lignes et colonnes afin de suivre la progression
ligne_encours = ligne_debut: colonne_encours = colonne_debut
'purger la feuille de travail encours
Cells.Clear
's'il y a 2 fichiers répertoriés dans la liste la procédure débutera sur les index 0 et 1... s'il y a 3 fichiers sur les index 0,1,2... et ainsi de suite
For i = 0 To liste_fichiers.ListCount - 1
lecture (liste_fichiers.List(i))
Next i
'appeler la procédure traitement des données
traitement
'proposer sous quel nom le fichier doit être enregistré
nom_fichier = Application.GetSaveAsFilename(fileFilter:="Excel files (*.xlsx), *.xslx")
‘lancer la procédure sortie
sortie.Value = nom_fichier
'lancer la procédure export
ecriture (nom_fichier)
End Sub
Private Sub fermer_Click()
End Sub
'procédure qui permet de passer en lecture les fichiers inscrits dans la zone de liste fichiers du formulaire
'déclaration d'une variable fichier correspondant au fichier
Private Sub lecture(fichier As String)
'déclaration de la variable départ pour connaître la position à laquelle nous nous situons dans le texte à délimiter, la variable position qui permet de délimiter les fichiers .txt ou .csv et la variable texte pour mémoriser les informations textuelles
Dim depart As Integer, position As Integer
Dim texte As String, tampon As String
'accéder au fichier en mode lecture et affecter une adresse mémoire avec un n° exemple: #1
Open fichier For Input As #1
'tant que la fin du fichier n'est pas atteinte EOF
Do While Not EOF(1)
'récupérer les données lignes à lignes et les mémoriser
Line Input #1, texte
'initialiser les variables départ et position
depart = 1: position = 1
'parcourir toute la ligne de texte de manière à trouver les séparateurs
Do While (position <> 0)
'stocker la position du séparateur
position = InStr(depart, texte, ";", 1)
'vérification qu'il n'y a plus de séparateur
If position = 0 Then
tampon = Mid(texte, depart)
'inscription de la donnée extraite dans la feuille "import"
Sheets("Import").Cells(ligne_encours, colonne_encours).Value = tampon
Exit Do
'sortir de la procédure de traitement de caractère si aucun séparateur n'est trouvé
Else
'sinon la procédure continue et réalise le traitement
tampon = Mid(texte, depart, position - depart)
End If
Sheets("Import").Cells(ligne_encours, colonne_encours).Value = tampon
depart = position + 1
colonne_encours = colonne_enours + 1
Loop
colonne_enours = colonne_debut
ligne_encours = ligne_encours + 1
Loop
Close #1
End Sub
'procédure qui permet de retranscrire les traitements réalisés dans un fichier
'déclaration d'une variable fichier correspondant au fichier
Private Sub ecriture(fichier As String)
End Sub
'procédure qui permet le traitement des données
'déclaration d'une variable fichier correspondant au fichier
Private Sub traitement()
End Sub
Private Sub liste_fichiers_Click()
End Sub
avant de rentrer dans le vif du sujet, j'espère que vous passer d'agréables fêtes de fin d'année ?
Je me permets de vous solliciter à la veille de cette nouvelle année au sujet d'une application sur laquelle je m'arrache les cheveux...
Celle-ci a pour objet de convertir au format .xlsx après retraitement de fichiers .txt ou .csv.
Le hic c'est que tout semble fonctionner... jusqu'à la phase de traitement.
La problématique est simple la délimitation des champs est bien réalisée, cependant, au lieu de revenir à la ligne pour traiter le deuxième enregistrement... et le traitement se poursuit mais... en colonne... pour illustrer mes propos :
traitement réalisé : 1,2,3...
traitement souhaité :
1
2
3...
Ci-dessous l'application... qui n'est pour l'heure pas aboutie... quelqu'un pourrait éclairer ma lanterne ?
Merci à vous
Vous souhaitant un bon réveillon.
'déclaration des variables globales
'mémorisation de la ligne et colonne de départ à partir de laquelle nous allons importer les données
Dim ligne_debut As Integer: Dim colonne_debut As Integer
' détermination de la dernière ligne et colonne à importer
Dim ligne_fin As Integer: Dim colonne_fin As Integer
' détermination de la ligne et colonne encours pour suivre la progression de l'insertion des données
Dim ligne_encours As Integer: Dim colonne_encours As Integer
Private Sub import_Click()
'proposer à l'utilisateur de sélectionner le ou les fichiers .txt ou .csv
Dim fichier_select As String
fichier_select = Application.GetOpenFilename("text files (*.txt;*.csv), *.txt; *.csv", , "Sélectionner un fichier .txt ou .csv")
's'assurer que l'utilisateur a bien sélectionner un fichier via la boîte de dialogue
If (LCase(fichier_select) <> "faux" And fichier_select <> "0") Then
liste_fichiers.AddItem (fichier_select)
End If
End Sub
Private Sub export_Click()
'déclarer la variable du nom du fichier sous lequel l'utilisateur souhaite exporter les données
Dim nom_fichier As String
'initialiser les variables globales
ligne_debut = 1: colonne_debut = 1
'initialisation des indices de lignes et colonnes afin de suivre la progression
ligne_encours = ligne_debut: colonne_encours = colonne_debut
'purger la feuille de travail encours
Cells.Clear
's'il y a 2 fichiers répertoriés dans la liste la procédure débutera sur les index 0 et 1... s'il y a 3 fichiers sur les index 0,1,2... et ainsi de suite
For i = 0 To liste_fichiers.ListCount - 1
lecture (liste_fichiers.List(i))
Next i
'appeler la procédure traitement des données
traitement
'proposer sous quel nom le fichier doit être enregistré
nom_fichier = Application.GetSaveAsFilename(fileFilter:="Excel files (*.xlsx), *.xslx")
‘lancer la procédure sortie
sortie.Value = nom_fichier
'lancer la procédure export
ecriture (nom_fichier)
End Sub
Private Sub fermer_Click()
End Sub
'procédure qui permet de passer en lecture les fichiers inscrits dans la zone de liste fichiers du formulaire
'déclaration d'une variable fichier correspondant au fichier
Private Sub lecture(fichier As String)
'déclaration de la variable départ pour connaître la position à laquelle nous nous situons dans le texte à délimiter, la variable position qui permet de délimiter les fichiers .txt ou .csv et la variable texte pour mémoriser les informations textuelles
Dim depart As Integer, position As Integer
Dim texte As String, tampon As String
'accéder au fichier en mode lecture et affecter une adresse mémoire avec un n° exemple: #1
Open fichier For Input As #1
'tant que la fin du fichier n'est pas atteinte EOF
Do While Not EOF(1)
'récupérer les données lignes à lignes et les mémoriser
Line Input #1, texte
'initialiser les variables départ et position
depart = 1: position = 1
'parcourir toute la ligne de texte de manière à trouver les séparateurs
Do While (position <> 0)
'stocker la position du séparateur
position = InStr(depart, texte, ";", 1)
'vérification qu'il n'y a plus de séparateur
If position = 0 Then
tampon = Mid(texte, depart)
'inscription de la donnée extraite dans la feuille "import"
Sheets("Import").Cells(ligne_encours, colonne_encours).Value = tampon
Exit Do
'sortir de la procédure de traitement de caractère si aucun séparateur n'est trouvé
Else
'sinon la procédure continue et réalise le traitement
tampon = Mid(texte, depart, position - depart)
End If
Sheets("Import").Cells(ligne_encours, colonne_encours).Value = tampon
depart = position + 1
colonne_encours = colonne_enours + 1
Loop
colonne_enours = colonne_debut
ligne_encours = ligne_encours + 1
Loop
Close #1
End Sub
'procédure qui permet de retranscrire les traitements réalisés dans un fichier
'déclaration d'une variable fichier correspondant au fichier
Private Sub ecriture(fichier As String)
End Sub
'procédure qui permet le traitement des données
'déclaration d'une variable fichier correspondant au fichier
Private Sub traitement()
End Sub
Private Sub liste_fichiers_Click()
End Sub