hervé_débutant
XLDnaute Nouveau
Bonjour le forum,
j'ai un petit problème avec une macro VBA que j'ai récupéré
Elle à pour but de me classer mes cellules mais elle arrondit leur valeur. En fait elle arrondit les valeur dans les cellules qui ont été déplacées.
Comment puis je éviter cela et garder 2 chiffre après la virgule ? j'ai besoin de votre aide
Merci beaucoup pour votre aide!
Hervé_débutant
PS: je ne peux pas trop vous renseigner sur la macro je n'en suis pas l'auteur, l'auteur qui se reconnaitra dans ce forum !!!
Voici la macro :
Option Explicit
Option Base 1
Const NbTriplets = 8
Const NbEnsembles = 10
Const strFSource = "Données Brutes"
Const strFDest_H = "Multip"
Const strFDest_V = "He"
Const Source_LDeb = 10
Const Source_ColDeb = 6
Const Dest_LDeb_H = 10
Const Dest_ColDeb_H = 6
Const Dest_LDeb_V = 10
Const Dest_ColDeb_V = 6
Sub ClasserDonnees()
Dim Tablo_H As Variant
Dim Tablo_V() As Variant
Dim Hauteur&
Dim LIGNE_H&, LIGNE_V
Dim i%, i_Ensembles%, i_NbTriplets%
Dim j%, k%
Dim Temp&
Sheets(strFSource).Select
LIGNE_H = Dest_LDeb_H
LIGNE_V = Dest_LDeb_V
Hauteur = Cells(65536, Source_ColDeb).End(xlUp).Row - Source_LDeb + 1
For i = Source_LDeb To Cells(65536, Source_ColDeb).End(xlUp).Row
Tablo_H = Range(Cells(i, Source_ColDeb), Cells(i, Source_ColDeb + 3 * NbTriplets * NbEnsembles - 1))
For i_Ensembles = 1 To NbEnsembles
For i_NbTriplets = 3 To (3 * (NbTriplets - 1)) Step 3
For j = (i_NbTriplets + 3) To (3 * NbTriplets) Step 3
If Tablo_H(1, (i_Ensembles - 1) * 3 * NbTriplets + i_NbTriplets) < Tablo_H(1, (i_Ensembles - 1) * 3 * NbTriplets + j) Then
For k = 2 To 0 Step -1
Temp = Tablo_H(1, (i_Ensembles - 1) * 3 * NbTriplets + j - k)
Tablo_H(1, (i_Ensembles - 1) * 3 * NbTriplets + j - k) = Tablo_H(1, (i_Ensembles - 1) * 3 * NbTriplets + i_NbTriplets - k)
Tablo_H(1, (i_Ensembles - 1) * 3 * NbTriplets + i_NbTriplets - k) = Temp
Next k
End If
Next j
Next i_NbTriplets
Next i_Ensembles
ReDim Tablo_V(1 To NbTriplets, 1 To (3 * NbEnsembles))
For j = 0 To (UBound(Tablo_H, 2) - 1)
Tablo_V((j \ 3) Mod 8 + 1, (j \ 24) * 3 + (j Mod 3 + 1)) = Tablo_H(1, j + 1)
Next j
With Sheets(strFDest_H)
.Cells(LIGNE_H, Dest_ColDeb_H).Resize(1, UBound(Tablo_H, 2)) = Tablo_H
LIGNE_H = LIGNE_H + 1
End With
With Sheets(strFDest_V)
.Cells(LIGNE_V, Dest_ColDeb_V).Resize(NbTriplets, (3 * NbEnsembles)) = Tablo_V
LIGNE_V = LIGNE_V + NbTriplets
End With
Erase Tablo_H
Erase Tablo_V
Next i
End Sub
j'ai un petit problème avec une macro VBA que j'ai récupéré
Elle à pour but de me classer mes cellules mais elle arrondit leur valeur. En fait elle arrondit les valeur dans les cellules qui ont été déplacées.
Comment puis je éviter cela et garder 2 chiffre après la virgule ? j'ai besoin de votre aide
Merci beaucoup pour votre aide!
Hervé_débutant
PS: je ne peux pas trop vous renseigner sur la macro je n'en suis pas l'auteur, l'auteur qui se reconnaitra dans ce forum !!!
Voici la macro :
Option Explicit
Option Base 1
Const NbTriplets = 8
Const NbEnsembles = 10
Const strFSource = "Données Brutes"
Const strFDest_H = "Multip"
Const strFDest_V = "He"
Const Source_LDeb = 10
Const Source_ColDeb = 6
Const Dest_LDeb_H = 10
Const Dest_ColDeb_H = 6
Const Dest_LDeb_V = 10
Const Dest_ColDeb_V = 6
Sub ClasserDonnees()
Dim Tablo_H As Variant
Dim Tablo_V() As Variant
Dim Hauteur&
Dim LIGNE_H&, LIGNE_V
Dim i%, i_Ensembles%, i_NbTriplets%
Dim j%, k%
Dim Temp&
Sheets(strFSource).Select
LIGNE_H = Dest_LDeb_H
LIGNE_V = Dest_LDeb_V
Hauteur = Cells(65536, Source_ColDeb).End(xlUp).Row - Source_LDeb + 1
For i = Source_LDeb To Cells(65536, Source_ColDeb).End(xlUp).Row
Tablo_H = Range(Cells(i, Source_ColDeb), Cells(i, Source_ColDeb + 3 * NbTriplets * NbEnsembles - 1))
For i_Ensembles = 1 To NbEnsembles
For i_NbTriplets = 3 To (3 * (NbTriplets - 1)) Step 3
For j = (i_NbTriplets + 3) To (3 * NbTriplets) Step 3
If Tablo_H(1, (i_Ensembles - 1) * 3 * NbTriplets + i_NbTriplets) < Tablo_H(1, (i_Ensembles - 1) * 3 * NbTriplets + j) Then
For k = 2 To 0 Step -1
Temp = Tablo_H(1, (i_Ensembles - 1) * 3 * NbTriplets + j - k)
Tablo_H(1, (i_Ensembles - 1) * 3 * NbTriplets + j - k) = Tablo_H(1, (i_Ensembles - 1) * 3 * NbTriplets + i_NbTriplets - k)
Tablo_H(1, (i_Ensembles - 1) * 3 * NbTriplets + i_NbTriplets - k) = Temp
Next k
End If
Next j
Next i_NbTriplets
Next i_Ensembles
ReDim Tablo_V(1 To NbTriplets, 1 To (3 * NbEnsembles))
For j = 0 To (UBound(Tablo_H, 2) - 1)
Tablo_V((j \ 3) Mod 8 + 1, (j \ 24) * 3 + (j Mod 3 + 1)) = Tablo_H(1, j + 1)
Next j
With Sheets(strFDest_H)
.Cells(LIGNE_H, Dest_ColDeb_H).Resize(1, UBound(Tablo_H, 2)) = Tablo_H
LIGNE_H = LIGNE_H + 1
End With
With Sheets(strFDest_V)
.Cells(LIGNE_V, Dest_ColDeb_V).Resize(NbTriplets, (3 * NbEnsembles)) = Tablo_V
LIGNE_V = LIGNE_V + NbTriplets
End With
Erase Tablo_H
Erase Tablo_V
Next i
End Sub