Trier des données

Résolu/Fermé
Juliette2215 - 12 mars 2015 à 15:42
 Juliette2215 - 13 mars 2015 à 15:54
Bonjour,

Je cherche à traiter des résultats issus d'un logiciel de simulation (fluent). Je me retrouve avec cinq colonnes de même taille (62500 valeurs) :
- numéro du noeud
- x coordonnée ex : (0,0,0...,a,a,a....)
- y coordonnée ex : (0,a,b,..,0,a,b,...)
- vitesse radiale ex : (a,b,c,d,e,f,...)
- vitesse axiale ex : (a,b,c,d,e,f,...)

Mon problème est que pour utiliser ces données, je dois les ré-arranger comme tel :
X : ligne
Y : colonne
vitesse radial et vitesse axiale : une matrice pour chaque.

Je peux le faire à la main en utilisant un filtre sur x, puis en prenant successivement les valeurs obtenues pour la vitesse radiale par exemple et en les collant par transposition dans une première ligne, avant de prendre la valeur de x suivante et de refaire la même chose en sautant une ligne.

Bien évidemment c'est super lourd, et vu la quantité de données a traiter, y aurait-il un code VBA qui pourrait réaliser cela a ma place ? Je m'y connais un peu en C++, mais pas du tout dans ce type de langage..

En vous remerciant d'avance,

Juliette

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 13/03/2015 à 13:42
Bonjour
un exemple sur 13 lignes et 3 colonnes
Option Explicit
Option Base 1
Sub transposer()
Dim Tablo()
Tablo = Range("A1:C13")
Range("E4").Resize(3, UBound(Tablo)) = Application.Transpose(Tablo)
End Sub


dans ton cas, si j'ai compris ton exposé
il faudrait le faire en 4 fois
noeud,X,Y et 2 vitesses

mais je ne vois pas comment tu peux caser 62500 données en colonnes

Michel
0
Juliette2215
13 mars 2015 à 14:11
Bonjour,

Merci pour cette réponse rapide ! Mais malheureusement mon problème est un peu plus compliqué..

Avec mes vecteurs je veux obtenir :
- coordonnées selon x : trier du plus petit au plus grand, enlever les doubles, puis copier en transposant dans une autre feuille. [On passe de (62500x1) à (1x250)]

- coordonnées selon y : enlever les doubles, puis copier dans une autre feuille.
[On passe de (62500x1) à (250x1)]

- Pour une des vitesses : Au lieu d'avoir un vecteur (62500x1), je veux obtenir une matrice (250x250) ( Soit une matrice M{x,y} ).

Pour le traitement des coordonnées x et y c'est bon, j'ai enregistre une macro, mais pour les vitesses je ne sais absolument pas comment faire pour les traiter à l'aide d'un code (cf. premier post pour avoir une idée des manipulations à effectuer manuellement) ..
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
13 mars 2015 à 15:36
Oui mais pourquoi ne pas le dire dès le départ ? j'ai bossé pour rien...

de toutes façons, sans voir un extrait de ton classeur... une petite maquette des objectifs serat la bienvenue

Pour cela, mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le lien proposé dans le message de réponse
Dans l'attente

0
Juliette2215
13 mars 2015 à 15:54
Désolée, je ne pensais pas avoir été si peu clair..

Voilà un exemple des données que je dois traiter : http://cjoint.com/?0CnqfovyLvD
0