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 :

Importer des données d'un doccument excel sans l'ouvrir ni copier de plage


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 7
    Par défaut Importer des données d'un doccument excel sans l'ouvrir ni copier de plage
    bonjour les amis

    ce que j'aimerais être capable de faire serait d'aller chercher des données dans un classeur fermé et ailleurs dans mon pc et ce sans copier de valeurs dans une plage, j'aimerais par exemple chercher une valeur dans un tableau d'une feuille nommée "Page 1" du document fermé par recherche vertical/horizontale et retourner la valeur dans mon fichier dans une cellule spécifique.

    j'avais comme idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    set plageVerif = doccument_excel_fermer.sheets("Page 1").cells(1, 1).CurrentRegion
    feuille = (MonthName(Month(Sheets("Semaine").Cells(4, 3).Value)) & " " & Year(Sheets("Semaine").Cells(4, 3).Value))
    nom = "Bolduc"
    for a = 0 to pageVerif.Rows.Count
        Sheets(feuille).Cells(ligne, 5) = (Application.VLookup(nom, plageVerif, 3, False)
    Next a
    et il serais tu possible de raccourcir cette commande ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille = (MonthName(Month(Sheets("Semaine").Cells(4, 3).Value)) & " " & Year(Sheets("Semaine").Cells(4, 3).Value))
    (feuille = "septembre 2016") par exemple

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 7
    Par défaut
    j'ai tenter de voir des lignes de code qui pourrais résoudre mon questionnement mais dès que je change les exemples pour faire ce que je voudrais que ça fasse, ça fini en code d'erreur

    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
    Sub tests()
     
        Dim Cn As ADODB.Connection
        Dim Fichier As String
        Dim NomFeuille As String, texte_SQL As String
        Dim Rst As ADODB.Recordset
        Dim plage As Range
     
        'Définit le classeur fermé servant de base de données
        Fichier = "C:\...\Desktop\test.xls"
        'Nom de la feuille dans le classeur fermé
        NomFeuille = "Feuil1"
     
        Set Cn = New ADODB.Connection
     
        '--- Connection ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Fichier & _
                ";Extended Properties=""Excel 8.0;HDR=NO"""
            .Open
        End With
        '-----------------
     
        'Définit la requête.
        '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
     
        'je sais que texte_SLQ c'est ce que ca va chercher, mais comment je fait pour le remplacer pour avoir une recherche verticale/horizontale au lieux d'avoir un currentregion, je veux que cela me retourne une seule valeur
        texte_SQL = "SELECT * FROM [Feuil1$]"
     
        Set Rst = New ADODB.Recordset
        Set Rst = Cn.Execute(texte_SQL)
     
        'Ecrit le résultat de la requête dans la cellule A2
        Range("A2").CopyFromRecordset Rst
     
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
    End Sub

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Le moteur Jet est incompatible avec Office 2007 et suivants.

    Tu dois utiliser le moteur ACE au lieu du moteur Jet,

    Pour les chaînes de connexion, tu peux jeter un œil sur ce site:

    http://www.connectionstrings.com/excel/

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    With CreateObject("adodb.connection")
                .Provider = "Microsoft.Jet.OLEDB.4.0"
                .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                    & FicihiXls & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1"""
                .Open
    Set Rs=.Execoute("select * from [septembre 2016$] where [champ]='toto'"
                .close
    End With
    ça HDR=YES ça veut dire que la première ligne est la zone de titre de colonnes.

    Le type de connexion que tu utilises est bien pour du xls. As tu un message d'erreur et si oui le quel?

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 7
    Par défaut
    erreur : FicihiXls (variable not define)
    dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                    & FicihiXls & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1"""
    et si possible j'aimerais utiliser des fichiers xslx

Discussions similaires

  1. [XL-2016] Importer des données d'un document excel sans l'ouvrir ni copier de plage
    Par Grez_01 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/09/2016, 23h37
  2. Importer des données d'un fichier Excel vers Javascript
    Par rafiq25 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/01/2008, 15h30
  3. Importer des données d'une feuille Excel vers TABLE
    Par souminet dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/11/2006, 09h10
  4. Réponses: 8
    Dernier message: 22/08/2006, 12h51
  5. [CR]Importer des données d'une feuille excel
    Par rolan dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 17/12/2004, 22h32

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