Problème d'importation de données

Messages postés
1
Date d'inscription
vendredi 27 octobre 2017
Dernière intervention
27 octobre 2017
-
Bonjour,

J'ai créé une macro me permettant d'importer des données (fichiers en .dat) dans un classeur excel via un formulaire. Tout fonctionne sauf que ma colonne de profondeur (Depth) partant de 0 avec un pas d'environ 0.30m déconne dès que la valeur atteint 1 et une décimale.

En gros au lieu de m'afficher 1,006, il est écrit 1 006 alors que pour les autre s colonnes tout fonctionne.

Enfin, mon fichier de données est un fichier txt séparé par des tabulations.

Merci de votre aide.

Voici le code:

Dim ligne_debut As Integer: Dim colonne_debut As Integer
Dim ligne_fin As Integer: Dim colonne_fin As Integer
Dim ligne_enCours As Integer: Dim colonne_enCours As Integer

Private Sub logviewer_Click()
Shell "C:\Program Files (x86)\Geoprobe\DI Viewer\DisplayLog.exe"
End Sub


Private Sub exporter_Click()
ligne_debut = 1: colonne_debut = 1
ligne_enCours = ligne_debut: colonne_enCours = colonne_debut
Cells.Clear
For i = 0 To liste_fichiers.ListCount - 1
    lecture (liste_fichiers.List(i))
Next i
End Sub

Private Sub fermer_Click()
liste_fichiers.Clear
formulaire.Hide
End Sub

Private Sub importer_Click()
Dim fichier_choisi As String
fichier_choisi = Application.GetOpenFilename("Text Files (*.dat), *.dat", , "Sélectionner le fichier DAT")
liste_fichiers.AddItem (fichier_choisi)
End Sub
Private Sub lecture(fichier As String)
Dim depart As Integer, position As Integer
Dim texte As String, tampon As String

Open fichier For Input As #1
Do While Not EOF(1)
Line Input #1, texte
depart = 1: position = 1
Do While (position <> 0)
position = InStr(depart, texte, vbTab, 1)
If position = 0 Then
tampon = Mid(texte, depart)
Sheets("Import").Cells(ligne_enCours, colonne_enCours).Value = tampon
Exit Do
Else
tampon = Mid(texte, depart, position - depart)
End If

Sheets("Import").Cells(ligne_enCours, colonne_enCours).Value = tampon
depart = position + 1
colonne_enCours = colonne_enCours + 1
Loop

colonne_enCours = colonne_debut
ligne_enCours = ligne_enCours + 1
Loop
Close #1

End Sub

Private Sub ecriture(fichier As String)
Dim ligne As Integer, colonne As Integer
Dim texte As String

ligne = ligne_debut: colonne = colonne_debut

If LCase(fichier) <> "faux" Then
Open fichier For Output As #1
While Cells(ligne, colonne).Value <> ""
While Cells(ligne, colonne).Value <> ""
texte = texte & Cells(ligne, colonne).Value & vbTab
colonne = colonne + 1
Wend

Print #1, texte
texte = ""
colonne = colonne_debut
ligne = ligne + 1
Wend

Close #1
End If
End Sub

Private Sub traitement()
Dim ligne As Integer: Dim colonne As Integer
ligne = ligne_debut: colonne = colonne_debut

Cells(ligne, colonne).Sort Cells(ligne, colonne), xlAscending, Header:=xlNo

While Cells(ligne, colonne).Value <> ""
If (Cells(ligne, colonne).Value = Cells(ligne - 1, colonne).Value) Then
Cells(ligne, colonne).EntireRow.Delete
ligne = ligne - 1
End If

ligne = ligne + 1
Wend
End Sub




EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
Afficher la suite 

Votre réponse

2 réponses

Messages postés
7449
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
16 décembre 2018
0
Merci
Bonjour,

A première vu ce qui "déconne" c'est pas à partir de A68 mais jusqu'à A67 et toute la colonne B, à cause de la virgule qui n'est pas reconnue (il faudrait la remplacer par un point avant l'import)
Commenter la réponse de Patrice33740
0
Merci
Bonjour,

Merci de votre réponse.

Néanmoins, je préférerais une autre solution.

Est-ce que mon code déconne ou pas.? Ya-t-il un pb de déclaration de variable ?

JE vous remercie de jeter un oeil à mes lignes de code.
Patrice33740
Messages postés
7449
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
16 décembre 2018
-
Bonjour,

Est-ce que mon code déconne ? Oui

La virgule n'est pas reconnue comme séparateur décimal, autrement dit, la lecture binaire du fichier ne tient pas compte des paramètres locaux.

Ton fichier est un simple fichier .txt français enregistré avec une extension .dat dans lequel le séparateur décimal est la virgule (et pas le point !).

Il serait plus simple d'ouvrir directement le fichier .dat avec Excel qui se chargera de la conversion linguistique avec :
Set wbk = Workbooks.Open(Filename:=fichier, Format:=1, local:=True)

Cdlt
Patrice
> Patrice33740
Messages postés
7449
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
16 décembre 2018
-
Ok je vais essayer cela. Je vous dirais si ça fonctionne.

Néanmoins cette solution n'explique pas pourquoi l'importation fonctionne au niveau de la colonne B et pas pour la colonne A...Mystère ?
Patrice33740
Messages postés
7449
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
16 décembre 2018
> GEODDE -
Mais elle ne fonctionne pas au niveau de la colonne B !!!!

Ne vois tu pas que ce sont pas des nombres qui sont importés mais des textes !
> Patrice33740
Messages postés
7449
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
16 décembre 2018
-
Merci d'ouvrir mes yeux de taupe sur une évidence !

Je demande de l'aide pas un dénigrement...

Je vous remercierai de vous abstenir de répondre.


Je change de forum..
Patrice33740
Messages postés
7449
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
16 décembre 2018
> GEODDE -
Il n'y a là aucun dénigrement, simplement une évidence que je l'ai vu au premier coup d'oeil sur l'image du résultat, sans regarder le code.:

c'est le b.a.ba d'Excel ; les textes sont alignés à gauche et les nombres à droite.
Commenter la réponse de GEODDE

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.