IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Lenteur pour transformer en nombre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 110
    Par défaut Lenteur pour transformer en nombre
    Bonjour,

    J'ai une importante lenteur avec cette macro, lorsque j'atteins un certain nombre de ligne soit entre 8000 à 10 000 lignes.

    J'utilise cette macro pour transformer les prix (avec le triangle vert dans le coin haut de la celulle,"convertir en nombre stocké") en format nombre
    Pourriez svp m'aider à accélérer cette macro?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    sub test()
    For Each c In Sheets("feuil1").Range("AH2:" & Sheets("catalogue").Range("AH65536").End(xlUp).Address)
      c.NumberFormat = "0.00"
      c.Value = Replace(c.Text, ",", ".")
    Next c
    End Sub
    merci

    cordialement

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Commence déjà par inhiber l'affichage (gourmand) pendant le traitement. N'oublie pas de le rétablir à la fin du traitement.
    Regarde dans ton aide en ligne ce à quoi sert Application.ScreenUpdating

  3. #3
    Membre émérite
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Par défaut
    Bonjour,

    Effectivement inhiber la mise à jour écran gagne du temps.
    Par ailleurs ta définition de zone à modifier m'intrigue
    Une piste (non testée)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sub test()
    Application.ScreenUpdating = False
    For Each c In Sheets("feuil1").Range("AH2: AH" & Sheets("feuil1").UsedRange.Rows.Count)
      c.NumberFormat = "0.00"
      c.Value = Replace(c.Text, ",", ".")
    Next c
    Application.ScreenUpdating = True
    End Sub

  4. #4
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour roidurif ucfoutu ouisansdoute le forum
    question!! pourquoi tu passes pas par donnees convertir ect...???
    autrement si tu tiens a passer par une macro on peut passer par un tablo aussi

    Option Explicit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub tri()
    Dim t As Variant, t2() As String, x As Long, i As Long, k As Long
    On Error Resume Next
    Application.ScreenUpdating = False
    t = Sheets("feuil1").Range("ah2:ah" & Range("ah65536").End(xlUp).Row)
     x = 1
    For i = 1 To UBound(t)
    ReDim Preserve t2(1 To 1, 1 To x)
    For k = 1 To 1
    t2(k, x) = Format(t(i, k), "0.00")
    Next k: x = x + 1: Next i
    Sheets("feuil1").Range("ah2:ah" & Range("ah65536").End(xlUp).Row).ClearContents
    Sheets("feuil1").Range("ah2").Resize(UBound(t2, 2), UBound(t2, 1)) = Application.Transpose(t2)
    End Sub

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 110
    Par défaut
    Bonjour laetitia, merci pour votre aide,

    je viens de tester votre proposition, cela fonctionne bien mais par contre, le séparateur point devient une virgule lorsqu'un prix n'est pas au format texte.

    Merci de votre aide

  6. #6
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour roidurif, le fil le forum essai comme cela pour voir!!

    option explicit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test1()
    Dim X As Variant, r As Long, c As Long
    Application.ScreenUpdating = False
     Sheets("feuil1").Activate
    X = Range("ah2:ah" & Range("ah65536").End(xlUp).Row).Value
     For r = 1 To UBound(X, 1)
     For c = 1 To UBound(X, 2)
    If IsNumeric(X(r, c)) And X(r, c) <> "" Then
     X(r, c) = X(r, c) * 1
     End If: Next c: Next r
    Range("ah2:ah" & Range("ah65536").End(xlUp).Row).Value = X
    X = Range("Ah65536").End(xlUp).Row
    Range(Cells(2, 1), Cells(X, 34)).NumberFormat = "0.00"
    End Sub

Discussions similaires

  1. [XL-2010] VBA pour transformer un nombre en texte à largeur fixe
    Par DYV007 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/06/2013, 19h13
  2. Lenteur pour transformer en nombre en texte
    Par roidurif dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/04/2009, 20h32
  3. Excel:probleme pour transformer du texte en nombre par macro
    Par pcheval dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/11/2005, 23h18
  4. [SQL] Commande pour transformer un mot
    Par gandalf_le_blanc dans le forum Langage SQL
    Réponses: 4
    Dernier message: 02/12/2004, 17h58
  5. existe t 'il des programme pour transformer les bases
    Par creazone dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 05/10/2004, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo