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 :

reduire la durée de mise à jour d'd'une base avec listview


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Par défaut reduire la durée de mise à jour d'd'une base avec listview
    Bonsoir
    le bout de code ci-dessous me permet de mettre à jour une base à partir d'un formulaire avec listview.
    le temps de traitement pour la mise à jour de 35 lignes et 16 colonnes est de 28 secondes ce qui me parait un peu long

    les modifications à apporter à cette base ne concernent qu'une seule ligne en général

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    Private Sub CommandButton5_Click()   'commande modifier
    Dim debut As Date, temps As Date, fin As Date
    Dim I As Integer, K As Integer
    Dim J As Byte
    Dim ctrl As Control
    debut = Time
     
        ListView1.SelectedItem.Text = Me.textbox1.Text
        ListView1.SelectedItem.ListSubItems(1).Text = Me.ComboBox1.Text
        ListView1.SelectedItem.ListSubItems(2).Text = Me.ComboBox2.Text
        ListView1.SelectedItem.ListSubItems(3).Text = CDate(Me.TextBox4.Value)
        ListView1.SelectedItem.ListSubItems(4).Text = CDate(Me.TextBox5.Value)
        ListView1.SelectedItem.ListSubItems(5).Text = Me.ComboBox5.Text
        ListView1.SelectedItem.ListSubItems(6).Text = CStr(Me.TextBox6.Value)
        ListView1.SelectedItem.ListSubItems(7).Text = Me.ComboBox3.Text
        ListView1.SelectedItem.ListSubItems(8).Text = Me.ComboBox4.Text
        ListView1.SelectedItem.ListSubItems(9).Text = CDate(Me.TextBox7.Value)
        ListView1.SelectedItem.ListSubItems(10).Text = Me.TextBox8.Text
        ListView1.SelectedItem.ListSubItems(11).Text = CDate(Me.TextBox9.Value)
     
        K = 2
        For I = 1 To ListView1.ListItems.Count
        BASEVEHICULES.Cells(K, 1) = ListView1.ListItems(I).Text
        For J = 1 To ListView1.ColumnHeaders.Count - 1
        If J = 3 Or J = 4 Or J = 9 Or J = 11 Then
            BASEVEHICULES.Cells(K, J + 1) = CDate(ListView1.ListItems(I).ListSubItems(J).Text)
        ElseIf J = 6 Then
            BASEVEHICULES.Cells(K, J + 1) = CStr(ListView1.ListItems(I).ListSubItems(J).Text)
        Else
            BASEVEHICULES.Cells(K, J + 1) = ListView1.ListItems(I).ListSubItems(J).Text
        End If
        Next J
        K = K + 1
        Next I
     
        For Each ctrl In Me.Controls
            If TypeName(ctrl) = "TextBox" Then ctrl.Text = ""
            If TypeName(ctrl) = "ComboBox" Then ctrl.Text = ""
       Next
    fin = Time
    temps = fin - debut
     
    MsgBox ("C'est fini !" & Chr(10) & "temps de traitement " & temps)
     
    End Sub
    ma question est simple est-il possible de reduire ce temps de traitement et si oui comment?

    merci pour votre aide

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    dans un premier temps, désactive l'affichage et les calculs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    ... Code
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

  3. #3
    Membre confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Par défaut
    merci jfontaine
    bingo traitement presque instantané

    maintenant je reste preneur d'un code simplifié

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/03/2012, 22h13
  2. Mise à jour conditionnelle d'une base
    Par awalter1 dans le forum SQL
    Réponses: 3
    Dernier message: 16/09/2011, 11h09
  3. Mise à jour automatique d'une base Mysql
    Par varely83 dans le forum Administration
    Réponses: 14
    Dernier message: 22/04/2011, 02h27
  4. mise à jour automatisé d'une base de donnée
    Par giroparo dans le forum SQL
    Réponses: 2
    Dernier message: 29/01/2008, 17h32
  5. [Conception] mise à jour automatique d'une base de donné distante
    Par bipbip2006 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/06/2006, 16h45

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