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 :

Requete SQL VBA avec jointure classeur externe et interne


Sujet :

Macros et VBA Excel

  1. #21
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Oui sans problème, mais il ne faut plus considérer un fichier mais un répertoire? Car ce répertoire sera considéré comme serveur de base de données ou tous les Csv seront des tables!

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    Dim Cn As Object, txt As String
    Sub test()
    Dim rep As String
    txt = "[F.CSV]" & vbCrLf & _
    "Format=Delimited(;)"
    rep = ChoixRepertoire()
    If rep = "" Then Exit Sub
    Importer rep, Sheets("Feuil3").Range("A2")
    End Sub
    Sub Importer(Repertoire As String, Destination As Range)
    Dim Table As String
    Set Cn = CreateObject("ADODB.Connection")
        With Cn
            .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Repertoire & ";Extended Properties=""Text;HDR=YES;FMT=Delimited;"";"
            Table = PremiereTableAdo
            If Table <> "" Then
                NewFichierTxt Repertoire & "\schema.ini", Replace(txt, "F.CSV", Replace(Table, "#", "."))
               Destination.CopyFromRecordset .Execute("SELECT * FROM [" & Table & "] As FrmExt inner join (select * from [Feuil1$] in '" & ThisWorkbook.FullName & "' 'Excel 12.0;HDR=YES;') As  FrmInt on  FrmInt.a= FrmExt.a")        '---- Lecture des fichiers ---
                Kill Repertoire & "\schema.ini"
                End If
             .Close
        End With
    End Sub
     
    Public Property Get PremiereTableAdo() As String
    With Cn.OpenSchema(20)
        If Not .EOF Then
            PremiereTableAdo = .fields("TABLE_NAME")
        End If
        .Close
    End With
    End Property
    Private Sub NewFichierTxt(Fichier, txt)
    Dim fso, NewFichier
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set NewFichier = fso.OpenTextFile(Fichier, 2, True)
    NewFichier.Write txt
    NewFichier.Close
    Set NewFichier = Nothing
    Set fso = Nothing
    End Sub
     
     
    Function ChoixRepertoire(Optional RepDefault="52") As String
       Dim objShell As Object, objFolder As Object, oFolderItem As Object
        Dim Chemin As String
     
        Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&, RepDefault)
     
        On Error Resume Next
        Set oFolderItem = objFolder.Items.Item
        ChoixRepertoire = oFolderItem.Path
     
     
    End Function
    Dernière modification par AlainTech ; 08/04/2017 à 11h43. Motif: Suppression de la citation inutile

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [SQL] Problème avec jointure externe
    Par critok dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/10/2009, 12h49
  2. Réponses: 7
    Dernier message: 21/09/2006, 14h06
  3. requete SQL: where avec parametre variable
    Par dracula2000 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 06/05/2006, 22h46
  4. Requete SQL croisée avec la clause Like
    Par Orgied dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/03/2006, 16h36
  5. [PL/SQL] update avec jointure
    Par Fox_magic dans le forum Oracle
    Réponses: 6
    Dernier message: 09/12/2004, 12h19

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