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 :

Débutant : diviser un tableau de valeur par 1000


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Par défaut Débutant : diviser un tableau de valeur par 1000
    Bonjour,

    Voilà j'ai un tableau de nombre assez conséquent et je voudrais diviser tous les nombres qu'il contient par 1000.
    Je sais diviser les cases une par une, mais mon objectif est de réduire au maximum le temps d'execution de la macro.

    N'hésitez pas à me demander des précisions.

    Merci

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour et

    Je ne vois pas d'autre solution que d'effectuer les opérations une à une mais concernant le temps d'exécution, il faudrait montrer le code que tu as fait pour voir si on peut l'optimiser.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    '    Dim i, j
    '    i = 2
    '    While ActiveSheet.Cells(i, 1) <> ""
    '        j = 2
    '        While ActiveSheet.Cells(1, j) <> ""
    '            ActiveSheet.Cells(i, j).Replace What:="á", Replacement:=""
    '            ActiveSheet.Cells(i, j) = ActiveSheet.Cells(i, j) / 1000
    '            j = j + 1
    '        Wend
    '        i = i + 1
    '    Wend
    oui bonne remarque

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Ci-dessous un bout de code (non testé), tu peux me dire si tu as une meilleure vitesse d'exécution ?
    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 test()
    Dim Cel As Range, DerL As Integer, DerC As Integer, Plage As Range
     
    DerL = Cells(Rows.Count, 2).End(xlUp).Row
    DerC = Cells(2, colums.Count).End(xlToLeft).Column
    Set Plage = Range(Cells(2, 2), Cells(DerL, DerC))
     
    Plage.Replace What:="á", Replacement:=""
     
    For Each Cel In Plage
        If Cel <> "" Then Cel.Value = Cel.Value / 1000
    Next
     
    End Sub

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Par défaut
    Il n aime pas trop cett ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerC = Cells(2, colums.Count).End(xlToLeft).Column
    Au passage tu peux oublier l'histoire de remplacer le "à" j ai résolu ce problème

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    pfff il fait le difficile...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerC = Cells(2, Columns.Count).End(xlToLeft).Column

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu peux aussi créer un tableau de ta plage de cellules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim Tablo As Variant
    Application.ScreenUpdating = False
    'Crée le tableau
        Tablo = Range(Cells(1, 1), Cells(Range("A65536").End(xlUp).Row, Range("IV1").End(xlToLeft).Column)).Value
        For i = 1 To Range("IV1").End(xlToLeft).Column
            For j = 1 To UBound(Tablo)
                Cells(j, i) = CSng(Tablo(j, i) / 1000)
            Next
        Next
    Application.ScreenUpdating = True
    End Sub
    Fonctionne ainsi si... tu as des en-têtes de colonnes...

    Citation Envoyé par sebest95
    Il n aime pas trop cett ligne :
    DerC = Cells(2, colums.Count).End(xlToLeft).Column
    "Il" a raison, moi non plus

    Edit
    Ok, je corrige aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim i as Integer, j as long
    (ici, i est le N° de colonne)

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/01/2009, 12h32
  2. Réponses: 12
    Dernier message: 09/12/2007, 12h52
  3. Réponses: 2
    Dernier message: 03/10/2005, 22h16
  4. Débutant -> Valeur par defaut
    Par broke dans le forum Access
    Réponses: 6
    Dernier message: 22/09/2005, 23h23
  5. [Débutant(e)]valeur par défaut dans méthodes
    Par seiryujay dans le forum Langage
    Réponses: 3
    Dernier message: 13/07/2005, 12h02

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