Mise en forme d'une base de données

Kuro_Neko

XLDnaute Nouveau
Bonjour à tous,

Dans le cadre d'un projet étudiant, je dois utiliser une base de données économiques et en faire une étude économétrique (avec tests statistiques etc..). J'ai trouvé une base de données qui me parait intéressante, mais je suis confronté à un problème : la mise en forme.

J'ai téléchargé la base de données au fichier .txt (pas d'autres options) et voilà un exemple de ce à quoi ressemble une "ligne" de données :

4.00000 43.0000 .000000 .000000 1.00000
.000000 1.00000 .000000 .000000 9.00000
.000000 5.72031

Le problème est simple : j'ai ici 12 variables dont j'aimerais voir les valeurs s'afficher en lignes et non en tableau.

En important les données dans Excel, je n'étais évidemment pas surpris de voir qu'Excel avait importé toutes ses données dans des cellules, mais pour ce qui devrait être une seule ligne de variables je me retrouve avec 3 lignes et 5 colonnes. Je n'arrive pas à mettre en forme les données correctement.

Voilà la base de données au format .txt en question : http://pages.stern.nyu.edu/~wgreene/Text/tables/Cornwell&Rupert.txt

Merci de votre aide,

Thomas.
 

mth

XLDnaute Barbatruc
Re : Mise en forme d'une base de données

Bonjour Kuro-Neko

Je suppose qu'il y a des macros pour faire ça, mais en attendant un petit bricolage pour dépanner, j'ai comme toi copié dans excel, puis utilisé le menu données/convertir
Ensuite, des formules basiques pour faire une ligne au lieu de trois, puis copie dans l'onglet d'à coté du résultat en ne sélectionnant que les lignes renseignées.
Dans le fichier joint j'ai laissé le début de l'extraction pour que tu vois ce que j'ai fait ( c'est vraiment du bricolage rien de fascinant tu verras) et j'ai placé en revanche la totalité de la base dans l'onglet Result.

Bonne journée,

mth
 

Pièces jointes

  • Stats.zip
    82.4 KB · Affichages: 44
  • Stats.zip
    82.4 KB · Affichages: 41
  • Stats.zip
    82.4 KB · Affichages: 45

mromain

XLDnaute Barbatruc
Re : Mise en forme d'une base de données

Bonjour Kuro-Neko, mth,


voici une solution par macro (ne pas oublier d'adapter le path du fichier texte).
Code:
Public Sub ImportTxt()
Dim myFso As Object, txtFile As Object
Dim pathFichierTxt As String, tmpTab() As String, i As Long, j As Long


    pathFichierTxt = "E:\aMiki\XLS\test\test.txt"
    
    Set myFso = CreateObject("Scripting.FileSystemObject")
    Set txtFile = myFso.OpenTextFile(pathFichierTxt, 1)
    
    'sauter la première ligne
    txtFile.ReadLine
    
    'boucler sur toutes les lignes restantes
    While Not txtFile.AtEndOfStream
        i = i + 1
        tmpTab = Split(NettoyerEspaces(txtFile.ReadLine), " ")
        If i Mod 3 = 1 Then
            For j = LBound(tmpTab) To UBound(tmpTab)
                Range("A" & Int(i / 3) + 1).Offset(0, j).Value = CDbl(Replace(tmpTab(j), ".", ","))
            Next j
        ElseIf i Mod 3 = 2 Then
            For j = LBound(tmpTab) To UBound(tmpTab)
                Range("A" & Int(i / 3) + 1).Offset(0, 5 + j).Value = CDbl(Replace(tmpTab(j), ".", ","))
            Next j
        Else
            For j = LBound(tmpTab) To UBound(tmpTab)
                Range("A" & Int(i / 3)).Offset(0, 10 + j).Value = CDbl(Replace(tmpTab(j), ".", ","))
            Next j
        End If
    Wend
    txtFile.Close
    Set txtFile = Nothing: Set myFso = Nothing
End Sub



'efface les multiples espaces dans une chaine de caractère
Private Function NettoyerEspaces(texte As String) As String
    While InStr(texte, "  ")
        texte = Replace(texte, "  ", " ")
    Wend
    If Right(texte, 1) = " " Then texte = Left(texte, Len(texte) - 1)
    If Left(texte, 1) = " " Then texte = Right(texte, Len(texte) - 1)
    NettoyerEspaces = texte
End Function

a+
 

Discussions similaires

Statistiques des forums

Discussions
312 673
Messages
2 090 778
Membres
104 664
dernier inscrit
jth