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 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
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 : 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
Partager