Obtention de données à partir d'autres fichiers avec ADO (2)

Bonjour

Je souhaite importer des données du fichier nommé "DATABASE.xlsm" vers d'autres fichiers.

J'ai essayé d'expliquer avec des exemples de fichiers et de couleurs.

Comment pouvons-nous faire cela avec ADO?

(Toutes les informations contenues dans les fichiers d'exemple sont fictives. Ce ne sont pas des informations réelles.)

4database.xlsm (42.75 Ko)
6lesson1.xlsm (63.48 Ko)
3lesson2.xlsm (49.10 Ko)
3lesson3.xlsm (46.96 Ko)
3lesson4.xlsm (46.57 Ko)
4lesson5.xlsm (60.56 Ko)
5lesson6.xlsm (63.74 Ko)
soru

Bonjour Merkali,

Une première question : pourquoi désires-tu passer par ADO alors qu'il est vraisemblablement possible de réaliser simplement ce que tu souhaites en VBA ?

Bonjour GVIALLES,

ADO extrait les données très rapidement

Je veux en savoir plus sur ADO.

J'aimerais apprendre l'ADO principalement avec la technique de pierrep56.

Parce qu'au-delà de super

Merakli,

Le plus simple serait alors de poster un message privé sur le compte pierrep56. L'as-tu fait ?

Je pense que vous le verrez d'ici.

Je ne veux pas déranger.

Je suis actuellement en train de revoir et d'archiver ses messages sur le sujet qu'il a posté sur le forum.

https://forum.excel-pratique.com/recherche/dodb-connection?d=eyJtYyI6IkRPREIuQ29ubmVjdGlvbiIsImEiOiJ...

Bonjour à tous,

Alors en fait avec ADO il est plus facile de lire que d'écrire.

Je suggère donc de placer du code dans les 6 fichiers "lesson1, lesson2, ..." pour lire la "database.xlsm" depuis les "lesson"

Ce code est tout à fait similaire à celui-ci (même méthode, même structure) =>

https://forum.excel-pratique.com/excel/obtention-de-donnees-a-partir-d-autres-fichiers-avec-ado-1555...

Voici ce que je propose en exemple pour "lesson1" et "lesson2"

Dans lesson1 => on lit les 20 colonnes T1.F6 à T1.F25

Dans lesson2 => on lit les 10 colonnes T1.F26 à T1.F35

Pour adapter aux autres fichiers, il suffit de modifier les références pour lire les colonnes suivantes :

* pour lesson3 => on lit les 10 colonnes T1.F36 à T1.F45

* pour lesson4 => on lit les 10 colonnes T1.F46 à T1.F55

* pour lesson5 => on lit les 20 colonnes T1.F56 à T1.F75

* pour lesson6 => on lit les 20 colonnes T1.F76 à T1.F95

(pour les lesson 3 à 6, il suffit donc de recopier le code proposé et d'adapter les colonnes lues comme indiqué)

Pierre

6database.zip (151.52 Ko)

Merci errep56.

J'ai étudié les formules et j'ai couru les autres.

Chère pierrep56
ActiveSheet.Cells(9, "....").Resize(UBound(T, 1), UBound(T, 2)) = T

UBound(T, 1)

plutôt

Le dernier enregistrement de la colonne A: A de la liste

puis-je utiliser le numéro?

sssss
Sub BILAN_ADO()
Dim T As Variant, sht As String
    Recup
    sht = ActiveSheet.Name
Req = "SELECT T1.F7, T1.F8, T1.F9, T1.F10, T1.F11, T1.F12, T1.F13, T1.F14, T1.F15, T1.F16, T1.F17, T1.F18, T1.F19, T1.F20, T1.F21, T1.F22, T1.F23, T1.F24, T1.F25, T1.F26 " & _
          " FROM ([" & sht & "$A8:D] AS T0" & _
          " LEFT JOIN [" & sht & "$AJ8:BI] AS T1 ON T0.F3=T1.F3)" & _
          " WHERE NOT ISNULL(T0.F3)" & _
          " ORDER BY T0.F1"
        Connect_xls ThisWorkbook.FullName
    T = Select_Db(Req, 0)
    Close_Cnx
    ActiveSheet.Range("E9").Resize(UBound(T, 1), UBound(T, 2)) = T
    'ActiveSheet.Range("AJ:BI").ClearContents
End Sub

La formule ci-dessus donne une erreur.

ORDER BY T0.F1

Cela fonctionne lorsque j'extrait le code ci-dessous.

üzgünüm soruyu anlamadım

pierrep56

üzgünüm soruyu anlamadım

Ce SQL ne fonctionne pas

Req = "SELECT T1.F7, T1.F8, T1.F9, T1.F10, T1.F11, T1.F12, T1.F13, T1.F14, T1.F15, T1.F16, T1.F17, T1.F18, T1.F19, T1.F20, T1.F21, T1.F22, T1.F23, T1.F24, T1.F25, T1.F26 " & _
          " FROM ([" & sht & "$A8:D] AS T0" & _
          " LEFT JOIN [" & sht & "$AJ8:BI] AS T1 ON T0.F3=T1.F3)" & _
          " WHERE NOT ISNULL(T0.F3)" & _
          " ORDER BY T0.F1"

Ce SQL fonctionne

Req = "SELECT T1.F7, T1.F8, T1.F9, T1.F10, T1.F11, T1.F12, T1.F13, T1.F14, T1.F15, T1.F16, T1.F17, T1.F18, T1.F19, T1.F20, T1.F21, T1.F22, T1.F23, T1.F24, T1.F25, T1.F26 " & _
          " FROM ([" & sht & "$A8:D] AS T0" & _
          " LEFT JOIN [" & sht & "$AJ8:BI] AS T1 ON T0.F3=T1.F3)" & _
          " WHERE NOT ISNULL(T0.F3)"

La différence entre les deux

" & _
          " ORDER BY T0.F1"

Ok,

Alors modifiez comme ceci (Bunun gibi düzenleyin) =>

    " WHERE NOT ISNULL(T0.F3)" & _
    " ORDER BY T0.`" & _
    ActiveSheet.Range("A8").Value & "`"
Merci beaucoup @pierrep56
<ej data-image="1f64f" style="background:url(https://forum.excel-pratique.com/template/img/emojis/1f64f.svg)"></ej>

pierrep56

Je n'ai pas pu suivre votre exemple. 
Je pense que je fais une erreur avec la requête SQL. 
où est ma faute

2lesson1.xlsm (71.40 Ko)

2lesson2.xlsm (72.02 Ko)
3database.xlsm (39.91 Ko)

Lesson 1 SQL

Req = "SELECT T1.F7, ..... ,T1.F26 FROM [" & sht & "$A8:D] AS T0 LEFT JOIN [" & sht & "$AJ1:BI] AS T1 ON T0.F3=T1.F3 WHERE NOT ISNULL(T0.F3) ORDER BY T0.F1"

Lesson 2 SQL

Req = " SELECT T1.F27,.......,T1.F36 FROM [" & sht & "$A8:D] AS T0 LEFT JOIN [" & sht & "$AJ1:EA] AS T1 ON T0.F3=T1.F3 WHERE NOT ISNULL(T0.F3) ORDER BY T0.F1"

Je pense que je fais des erreurs ici
[" & sht & "$AJ1:BI] et [" & sht & "$AJ1:EA]
Comment dois-je organiser ce lieu?

La ligne suivante est indispensable (Aşağıdaki satır önemlidir) :

    ActiveSheet.Range("AJ:EA").ClearContents

(effacer de AJ à EA avant de relancer le traitement)

pierrep56

ActiveSheet.Range ("AJ: EA"). ClearContents

J'ai supprimé ceci pour voir les codes.

[" & sht & "$AJ1:BI]
[" & sht & "$AJ1:EA]

Impossible de comprendre comment modifier ces sections dans le dernier exemple



Erreur

SELECT T1.F7, T1.F8, T1.F9, T1.F10, T1.F11, T1.F12, T1.F13, T1.F14, T1.F15, T1.F16, T1.F17, T1.F18, T1.F19, T1.F20, T1.F21, T1.F22, T1.F23, T1.F24, T1.F25, T1.F26 FROM [Lesson1$A8:D] AS T0 LEFT JOIN [Lesson1$AJ1:BI] AS T1 ON T0.F3=T1.F3 WHERE NOT ISNULL(T0.F3)
Erreur n°-2147217904
[Microsoft][ODBC Excel Sürücüsü] Çok az parametre. 21 bekleniyor.

11database.zip (123.57 Ko)

La requête SQL se fait toujours sur "$AJ1:EA] AS T1

Merci pierrep56.

J'ai bien compris maintenant

Rechercher des sujets similaires à "obtention donnees partir fichiers ado"