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