bonjour à tous,

voila j'ai pu a l'aide de recherche sur le net de trouver des code en VBA pour convertir des colonne contenants des date stocké en format texte ainsi que des colonnes de nombre stocké aussi en format texte le souci est lors de l'exécution des deux macro (voir plus bas) y'a une lenteur de l'ordre de 6 à 7 second.

ma question est es qu'il ya un moyen pour les rendre plus rapide sachant que mon fichier contient approximativement 90 000 lignes.

merci par avance

-Code pour convertir Date colonnes concernés H et I)

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
Sub convdate()
 
Application.ScreenUpdating = False
 
Dim d&, tablo, p&, t&, j&, pablo
d = [h1000000].End(xlUp).Row
tablo = Application.Transpose(Range("h1:h" & d))
On Error Resume Next 'si toutes les valeurs ne sont pas des dates
For p = 2 To d
tablo(p) = CDbl(CDate(tablo(p)))
Next
With [h1].Resize(d)
.NumberFormat = "dd/mm/yyyy" 'ou autre format Date
.Value = Application.Transpose(tablo)
End With
t = [i1000000].End(xlUp).Row
pablo = Application.Transpose(Range("i1:i" & t))
On Error Resume Next 'si toutes les valeurs ne sont pas des dates
For j = 2 To t
pablo(j) = CDbl(CDate(pablo(j)))
Next
With [i1].Resize(t)
.NumberFormat = "dd/mm/yyyy" 'ou autre format Date
.Value = Application.Transpose(pablo)
End With
Application.ScreenUpdating = True
End Sub
-code pour convertir nombre: ( colonnes concernés J et k)

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
Sub convNbr() 'remplace les virgules par des points
Application.ScreenUpdating = False
 
Dim i As Long, oDat()
oDat = Columns("j:j").Value
For i = 1 To UBound(oDat, 1)
oDat(i, 1) = Replace(oDat(i, 1), ",", ".")
Next i
Columns("j:j").NumberFormat = "0.00"
Columns("j:j").Value = oDat
Columns("k:k").NumberFormat = "0.00"
Columns("k:k").Value = oDat
 
Application.ScreenUpdating = True
 
End Sub