Déplacements de valeurs selon un critère

Bonjour tout le monde,

J'ai un programme de calcul qui me sort les résultats dans un format .csv que je transforme après coup en .xlsx. Le problème c'est que les résultats sont l'un après l'autre (ce qui fait plus de 200'000 lignes...). Ce que j'aimerais, c'est avoir les résultats l'un à côté de l'autre séparé selon les valeurs identiques de la colonne X[pixels] ou Y[pixels]. Et mes connaissances en VBA (car il me semble que ça soit la seule solution) sont très limitées!

Concrètement, dans mon fichier, de la cellule A2 à A1280 j'ai la valeur 2029 pour X[pixels], ensuite à partir de A1281 j'ai la valeur 2032 jusqu'à A2560 et ainsi de suite. J'aimerais que toutes les valeurs de A1281 à E2560 soient transposées dans les colonnes F à J, et ainsi de suite...

De cette façon il sera plus aisé de traiter les données, faire des graphiques, etc... Merci d'avance pour votre aide

Salut,

colle ce code dans un module de ton fichier sans oublier d'aller dans la fenêtre VBA, sélectionner Outils, Références et cocher Microsoft Scripting Runtime

Option Base 1
Sub test()
Application.ScreenUpdating = False
'Dans la fenêtre VBA, sélectionner Outils, Références et cocher Microsoft Scripting Runtime
Dim Dico As Object
Dim aa As Variant, zz As Variant
Dim a As Long, derLig As Long

derLig = Range("A" & Rows.Count).End(xlUp).Row + 1

Set Dico = CreateObject("scripting.dictionary")
aa = Range("A1").CurrentRegion.Offset(1).Resize(Range("A1").CurrentRegion.Rows.Count - 1, Range("A1").CurrentRegion.Columns.Count)
For a = LBound(aa) To UBound(aa)
    If Not Dico.Exists(aa(a, 1)) Then
        Dico(aa(a, 1)) = a + 1
    End If
Next a
Dico.Add "Fin", derLig

For a = 1 To Dico.Count - 1
    zz = Range(Range("A" & Application.Index(Dico.Items, a)), Range("E" & Application.Index(Dico.Items, a + 1) - 1))
    Cells(2, Columns.Count).End(xlToLeft).Offset(, 1).Resize(UBound(zz), 5) = zz
    Erase zz
Next a
Range("A1:E1").Copy Cells(1).Resize(1, Dico.Count * 5)
Range("A:E").Delete'désactiver cette ligne si la macro plante
Set Dico = Nothing: Erase aa, zz
End Sub

Le problème est qu'Excel finit par avoir trop d'infos à gérer et n'arrive pas à supprimer les 5 premières colonnes à la fin du programme, faute de ressources... en tout cas chez moi. Donc désactiver la ligne désignée dans le programme en cas de problème.

Salut "Game Over" !

C'est exactement ce qu'il me fallait! Effectivement excel bug un peu (même beaucoup!) mais le résultat est là et c'est ce qui compte!

Merci pour ta rapidité et la qualité de ton code!

A bientôt!

Rechercher des sujets similaires à "deplacements valeurs critere"