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

VB.NET Discussion :

Lenteur avec Macro Excel + base de données


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Par défaut Lenteur avec Macro Excel + base de données
    Bonjour tout le monde,

    Je fais de la migration de données et j'ai un problème (oui, car sinon je ne posterai pas sur ce forum )

    Le souci est que un de mes développeurs a codé une macro Excel qui doit traiter des fichiers Excel pour tout en requêtant en base.

    Nous avons un onglet de collecte contenant les informations de quelques champs à charger et un onglet d'upload qui lui contient tous les champs de la table à charger.
    Les fichiers peuvent avoir la taille de 66000 lignes quelques fois et faire plus de 200Mo.

    Cependant cette macro prend un temps fou pour aller requeter en base (en consultation uniquement!!!) et ramener des infos nécessaires à l'upload.

    Voici les 2 macros qu'il utilise.

    Est-ce que quelqu'un ici pourrait me dire pourquoi ça peut mettre jusqu'à 48h pour 66000 lignes??

    Merci!

    Macro de connexion:
    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
    Private Sub P_OracleConnect()
        On Error GoTo logonError
        connected = 0
        Dim Conn As String
        Dim drv As String
        uid = ThisWorkbook.Worksheets("CONTROLE").Range("CONNECTION_BASE_LOGIN").Value    '"sqluser"
        pwd = ThisWorkbook.Worksheets("CONTROLE").Range("CONNECTION_BASE_PASSWORD").Value    '"sqluser"
        dBase = ThisWorkbook.Worksheets("CONTROLE").Range("CONNECTION_BASE_BASE").Value    '"EDEVBDD1"
     
        Set db = New ADODB.Connection
     
        Conn = "UID= " & uid & ";PWD=" & pwd & ";DRIVER={Microsoft ODBC For Oracle};" & "SERVER=" & dBase & ";"
     
        With db
            .ConnectionString = Conn
            .CursorLocation = adUseClient
            .Open
        End With
        connected = 1
     
    logonError:
     
        If Err.Number <> 0 Then
     
            MsgBox "Restart the program. Error Description:" & Err.Description & "", vbCritical
            connected = 0
     
        End If
     
    End Sub
    Fonction dépendante:
    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
    'Renvoie une valeur
    'version 1.0
    Public Function F_S_BASE(S_Requete As String) As String
     
        Dim adoCommand As ADODB.Command
        Dim adoRecordSet As ADODB.Recordset
        Dim l_cpt As Long
        On Error GoTo InsertCustomer
        Set adoCommand = New ADODB.Command
        With adoCommand
            .CommandType = adCmdText
            .ActiveConnection = db
            .CommandText = S_Requete
        End With
        Set adoRecordSet = New ADODB.Recordset
        adoRecordSet.Open adoCommand, , adOpenStatic, adLockOptimistic
     
        F_S_BASE = adoRecordSet.Fields(0)
     
        Set adoRecordSet = Nothing
        Set adoCommand = Nothing
        Exit Function
    InsertCustomer:
     
    End Function

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Par défaut
    Hello,

    quelqu'un aurait une réponse svp?

    merci.

  3. #3
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Helas je ne crois pas que ton probleme puisse etre gerer coter Code VB
    tu devrais plutot essaye de voir du coter de la Macro ou encore coter Ressources de ta machine.

    @++
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    dans le code que tu donnes on a rien pour t'aider, on a meme pas la requete ...

    donc soit c'est mal codé, soit il faut pas faire ca en vba (c'est moyennement compilé ca je pense !)

    en théorie 66000 lignes il faut environ 20 secondes pour les rapatrier (hors traitement dessus après ...)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Par défaut
    le code te semble correct? y a pas un problème dans la manière que la connexion est établie?

Discussions similaires

  1. [XL-2007] MACRO : Extractions base de données texte, recherche multicritères avec interrogation
    Par Moi9999 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 18/04/2012, 10h17
  2. macro excel (base de donnée)
    Par hugo59330 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/07/2009, 13h41
  3. pb avec mysql comme base de données
    Par rpd05 dans le forum Installation
    Réponses: 1
    Dernier message: 27/06/2006, 21h12
  4. Liaison de table avec une autre base de donnée
    Par freya91 dans le forum Access
    Réponses: 1
    Dernier message: 03/06/2006, 00h08
  5. [VBA-E] Requète SQL avec chemin de base de données variable
    Par Svart26 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2006, 13h29

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