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 :

Remaniement d'un tableau ayant trop de colonnes [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Par défaut Remaniement d'un tableau ayant trop de colonnes
    Bonjour à tous,

    Il semble que j'ai ouvert une discussion au mauvais endroit donc je réitère ici.

    Je suis ingénieure en hydraulique et je travaille notamment sur de la modélisation numérique de cours d'eau. Cependant, je n'ai aucune experience en programmation Excel...

    En ce moment, j'apprends à manipuler le logiciel Delft3D et je suis confrontée à un problème de dimensions d'un tableau qui se trouve dans un fichier text. Le tableau est constitué de 12 colonnes alors que le nombre de colonnes doit être de 8 maximum pour que le fichier text puisse être lu par Delft. Je dois donc remanier le tableau pour qu'il fasse 8 colonnes au lieu de 12 comme dans l'exemple suivant :

    X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12
    X13 X14 X15 X16 X17 X18 X19 X20 X21 X22...

    X1 X2 X3 X4 X5 X6 X7 X8
    X9 X10 X11 X12 X13 X14 X15 X16
    X17 X18 X19 X20 X21 X22...

    C'est peut-être tout simple mais je ne vois absolument pas comment faire...
    Quelqu'un aurait-il une solution à mon problème ?

    Merci d'avance pour vous réponses,
    Bon week-end à tous !

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    En principe, il faudrait lire le fichier original et le transcrire dans un autre.
    Quel est le séparateur de données dans le fichier texte ?

  3. #3
    Membre du Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Par défaut
    Bonjour,

    Dans le fichier texte, les valeurs sont séparées par trois espaces.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Voici comment je procéderais selon ce que tu dis.
    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
    Sub TranscrireFichiers()
        Dim I As Long, J As Long
        Dim FichierOriginal, NouveauFichier
        Dim TexteOriginal As String, strTemp As String
        Dim Tablo
     
        FichierOriginal = ThisWorkbook.Path & "\Original.txt"  'Changer les noms de fichiers au besoin
        NouveauFichier = ThisWorkbook.Path & "\Resultat.txt"
     
        Open FichierOriginal For Binary As #1
            TexteOriginal = Space$(LOF(1))
            Get #1, , TexteOriginal             'TexteOriginal contient tout le fichier original
            TexteOriginal = Replace(TexteOriginal, vbCrLf, "   ")   'on remplace les saut de lignes par 3 espaces
            Tablo = Split(TexteOriginal, "   ")                     'on crée un tableau qui contient chaque item
     
     
            Open NouveauFichier For Output As #2    'on ouvre le fichier destination
            For I = 0 To UBound(Tablo) - 1 Step 8   'on lit le tableau par groupe de 8 items
                For J = 0 To 7
                    strTemp = strTemp & Tablo(I + J) & "   "    'création de la ligne à écrire
                Next
                strTemp = Left(strTemp, Len(strTemp) - 3)
                Print #2, strTemp
                strTemp = ""
            Next
     
        Close #2
        Close #1
    End Sub

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Quel(s) critère(s) veux-tu appliquer pour passer de 12 colonnes à 8 colonnes ?

    Parce que rendu là, aucune macro simple ne peut décider à ta place...

  6. #6
    Membre du Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Par défaut
    Bonjour parmi,

    Merci beaucoup pour ton aide ! Cependant, il reste deux petits soucis. Le premier, c'est que le tableau commence par 3 espaces, ce que je n'avais pas remarqué avant.
    Le deuxième, c'est qu'il est composé de "blocs" de valeurs de 12x12, séparés entre eux par des retours à la ligne. La difficulté, c'est que ces blocs ne sont pas remplis entièrement car la dernière ligne ne contient que 5 valeurs. J'ai mis le début du fichier en pièce jointe pour mieux illustrer cela.

    Merci beaucoup pour ton aide précieuse !
    Fichiers attachés Fichiers attachés

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Tu as donc toujours 137 items par groupe, c'est ça ?

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

Discussions similaires

  1. [XL-2010] Remanier un tableau qui a trop de colonnes
    Par EstSer dans le forum Excel
    Réponses: 2
    Dernier message: 18/07/2016, 12h39
  2. [JavaScript] tableau ayant pour clé la valeur de plusieurs colonnes
    Par killysui dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/04/2007, 13h23
  3. Tableau 5 lignes * 3 colonnes
    Par slackjayo dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 05/04/2005, 11h27
  4. [tableau]largeur d'une colonne
    Par Nadine dans le forum ASP
    Réponses: 2
    Dernier message: 15/03/2005, 21h11
  5. Réponses: 2
    Dernier message: 26/07/2004, 18h08

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