Autres Requête SQL - actualisation - volume de données

gafp

XLDnaute Nouveau
Bonjour,
Je travaille avec Excel 2007, je sais c'est très vieux.
J'ai un fichier contenant 9 onglets, il m'a été demandé de créer un onglet "SYNTHESE" qui rapatrie toutes les données des 9 onglets et qui soit actualisable.
Chaque onglet a 32 colonnes.
J'ai réalisé une requête SQL via MS Query, il s'agit d'une requête avec union. Pas de problème jusque là. On m'a demandé une réunion de rendu de résultat et j'ai changé de poste et là,
Problème 1 :
Impossible d'actualiser la requête, "le fichier appartient en exclusif... blabla..."
J'ai regardé les compléments sur mon poste et sur le poste de démo, ce n'est pas les mêmes, j'installe donc les compléments (Excel) sur le poste démo et là ça fonctionne.
Puis je téléphone à la stagiaire chargé de suivre le "projet" et elle n'a pas les même compléments que moi et pourtant elle peut actualiser.
Ma première question, pour utiliser le bouton "actualiser" dans l'onglet donnée, faut-il avoir des options particulières ? Si oui, lesquelles ?
Problème 2 :
Chaque onglet pourra contenir environ 30 lignes sur 32 colonnes, existe-t-il une limite dans l'extraction en matière de volume de donnée ? Si oui laquelle ?

Je vous remercie pour vos réponses et j'espère que j'ai été assez explicite. N'hésitez pas à me demander des explications complémentaire
Je ne peux pas joindre le fichier car il s'agit de données confidentielles.
 

Roblochon

XLDnaute Impliqué
Bonjour,

J'avais déjà vu "le fichier est ouvert en mode exclusif par ...." mais "le fichier appartient en exclusif... blabla... " jamais!?
Et ce genre de message dans les connexions peut venir de tellement de causes différentes.
Avez vous un fichier de connexion .qry ou odc ?
Quel est le driver sélectionner Adodb, Excel files ou autre?
Y a-t-il des permissions particulières sur le fichier ou son emplacement?

Et tant d'autres questions...
Bonnes recherches
 

tatiak

XLDnaute Barbatruc
Bonjour à tous,

J'utilise également Excel 2007 sur un portable et c'est une excellente version.

Pour éviter les problèmes de compatibilité dus à des compléments non-installés et pour mes requête Sql, je passe par l'ADO.

Voici un exemple de code dans lequel il suffit de modifier :
* le texte de la requête Sql (ici Req= "SELECT ...)
* le chemin et le nom du fichier source (ici E:\...)
* le nom de l'onglet dans lequel on souhaite récupérer le résultat de la requête (ici Sheets("Bilan"))
VB:
Public Cnx As Object, Rst As Object


Sub Requete_Bilan()
Dim Req As String, T As Variant

    Req = "SELECT O1.PAYS, O1.FOURNISSEURS, O1.PRODUITS, O1.MOIS, O1.T14, O2.T15, O1.V14, O2.V15 " & _
          " FROM(SELECT  PAYS, FOURNISSEURS, PRODUITS, MOIS, ANNEES, SUM(CA) AS T14, SUM(VOL) AS V14 " & _
          " FROM [Data1$] " & _
          " WHERE ANNEES=2014" & _
          " GROUP BY PAYS, FOURNISSEURS, PRODUITS, MOIS, ANNEES) AS O1" & _
          " LEFT JOIN (SELECT  PAYS, FOURNISSEURS, PRODUITS, MOIS, ANNEES, SUM(CA)AS T15, SUM(VOL)AS V15 " & _
          " FROM [Data1$] " & _
          " WHERE ANNEES=2015" & _
          " GROUP BY PAYS, FOURNISSEURS, PRODUITS, MOIS, ANNEES) AS O2" & _
          " ON O1.PAYS=O2.PAYS AND O1.FOURNISSEURS=O2.FOURNISSEURS AND O1.PRODUITS=O2.PRODUITS"
               
    Connect_Xls "E:/Tableaux_matériels/00A001/Tableau de sélection de matériels.xlsm"
    Rst.Open Req, Cnx, 3

    With Sheets("Bilan")
        For j = 1 To Rst.Fields.Count   ' =>les entêtes
            .Cells(1, j) = Rst.Fields(j - 1).Name
        Next j
        .Range("A2").CopyFromRecordset Rst  ' =>les données
    End With
   
    Close_Cnx
End Sub


Sub Connect_Xls(Ndf As String)
    Set Cnx = CreateObject("ADODB.Connection")
    Cnx.Provider = "MSDASQL"
    Cnx.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
             "DBQ=" & Ndf & "; ReadOnly=False;"
    Set Rst = CreateObject("ADODB.Recordset")
End Sub


Sub Close_Cnx(Optional x As Byte)
    On Error Resume Next
    If x > 0 Then Rst.Close
    Cnx.Close
    Set Cnx = Nothing
    Set Rst = Nothing
End Sub
Pierre
 
Dernière édition:

Discussions similaires


Haut Bas