Résolu Créer une boucle avec les critères d'un filtre (VBA)

  • Auteur de la discussion Juliette_2215
  • Date de début

Juliette_2215

Nouveau membre
Bonjour à tous !

Je travaille sur un logiciel de simulation et doit post-traiter les données obtenues d'un problème en 2D (axi-symétrique), qui sont donc :
- coordonnées radiale
- coordonnées axiale
- vitesse radiale
- vitesse axiale
Le tout sous la forme de colonne de 62500 valeurs (je sais, ça fait beaucoup..).
Mon but est simple: A partir de ses valeurs, je veux transformer la colonne de vitesse axiale en matrice, et idem pour celle de la vitesse radiale, puis copier également les valeurs de x et de y en enlevant les doublons.

Je traite séparément les valeurs de x et de y pour enlever les doublons et les copie sur une autre feuille. Ensuite pour obtenir mes matrices, j'ai l’idée en tète mais malheureusement le code ne suit pas.. (j'ai fait un peu de C++ mais c'est la première fois que je touche au langage VBA et c'est pas gagné...).
Voila l’idée donc :
- créer un filtre sur les valeurs de x
- Créer une boucle qui va permettre, pour chaque valeur de x de copier les valeurs visibles de la colonne 'vitesse radiale' et de les coller en les transposant dans une 4e feuille, puis faire de même pour les valeurs visibles de la colonne 'vitesse axiale' et les copier dans une 5e feuille. Changer de ligne dans les feuilles 4 et 5, puis recommencer l’opération.
- Ainsi après traitement je devrais transformer ma colonne de 62500 valeurs en une matrice 250x250 pour les deux vitesses.

Je vous poste mon code, qui est un peu laborieux et ne marche que jusqu'au moment ou Excel doit traiter les vitesses.. Si quelqu'un peut m'expliquer comment je peux créer cette boucle avec les critères de mon filtre, améliorer le code, ou juste donner des conseils je lui en saurais extrêmement reconnaissante !

Merci d'avance,

Juliette


Code:
Sub traiter_vitesses()

' Trier le tableau a partir des valeurs de x

Range("A1") = "x"
   Columns("A:D").Sort key1:=Range("A2"), _
      order1:=xlAscending, Header:=xlYes


' Supprimer les doublons dans les colonnes de x et de y apres les avoir copies ailleurs

Sheets(1).Columns("A:A").Select
Selection.Copy Destination:=Columns("F:F")
Sheets(1).Columns("B:B").Select
Selection.Copy Destination:=Columns("G:G")

Range("F1:F62497").Select
    ActiveSheet.Range("$F$1:$F$62497").RemoveDuplicates Columns:=1, Header:=xlYes
Range("G1:G62497").Select
    ActiveSheet.Range("$G$1:$G$62497").RemoveDuplicates Columns:=1, Header:=xlYes


' Copy les valeurs de x sans doublon dans une autre feuille

 Range("F1:F251").Select
Selection.Copy Destination:=Sheets("Sheet2").Range("A1")


'Copier les valeurs de y sans doublon dans une autre feuille

Range("G1:G251").Select
Selection.Copy Destination:=Sheets("Sheet3").Range("A1")




'Traitement des vitesses


'Definition du nombre de valeur pour boucle sur les vitesses
Dim NbVal(250)

'Enregistrement des valeurs des criteres du filtre dans un tableau NbVal
For j = 0 To 250
    NbVal(j) = Range("G" & j + 1)
Next

' Definition de la boucle pour copier les valeurs des deux vitesses dans deux autres feuilles
    For i = 0 To 250
        
        ActiveSheet.Range("$A$1:$D" & Nbx).AutoFilter Field:=1, Criteria1:=NbVal(i)
        Sheets("Sheet1").Select
        ActiveSheet.Range("C1:C" & Nbx).SpecialCells(xlCellTypeVisible).Copy
        Sheets("Sheet4").Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
        Next Row
        ActiveSheet.Range("D1:D" & Nbx).SpecialCells(xlCellTypeVisible).Copy
        Sheets("Sheet5").Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
        Next Row
        
        Sheets("Sheet1").Select
    
    Next i


End Sub
 

Juliette_2215

Nouveau membre
Meilleure réponse
Finalement j'ai résolu le problème avec Matlab.
 

zeb

Modérateur
Désolé pour le temps de réaction.

Merci d'avoir trouvé une excellente solution.
On peut tout faire avec Excel, mais son côté universel occulte souvent le fait que des outils plus adaptés devraient être préférés dans de nombreux cas.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 059
Membres
1 586 394
Dernier membre
Manoushk
Partager cette page
Haut