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 :

extraction donnee fichier fermé format .xlsx


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 112
    Points : 62
    Points
    62
    Par défaut extraction donnee fichier fermé format .xlsx
    Bonjour,

    Je voudrai savoir s'il était possible d’adapter ce code qui fonctionne que pour les fichier en format .xls au format xlsx.

    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
    Sub extractionValeurCelluleClasseurFerme()
        Dim Source As ADODB.Connection
        Dim Rst As ADODB.Recordset
        Dim ADOCommand As ADODB.Command
        Dim Fichier As String, Cellule As String, Feuille As String
     
        'Adresse de la cellule contenant la donnée à récupérer
        Cellule = "B4:B4"
          'Pour une plage de cellules, utilisez:
          'Cellule = "A4:C10"
     
        Feuille = "Feuil1$" 'n'oubliez pas d'ajouter $ au nom de la feuille.
        'Chemin complet du classeur fermé
        Fichier = "C:\Base.xls"
     
        Set Source = New ADODB.Connection
        Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";"
     
        Set ADOCommand = New ADODB.Command
        With ADOCommand
            .ActiveConnection = Source
            .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"
        End With
     
        Set Rst = New ADODB.Recordset
        Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
     
        Set Rst = Source.Execute("[" & Feuille & Cellule & "]")
     
        Range("A2").CopyFromRecordset Rst
     
        Rst.Close
        Source.Close
        Set Source = Nothing
        Set Rst = Nothing
        Set ADOCommand = Nothing
    End Sub
    En effet je voudrait lire les donnée du fichier source à partir de certaines cellules ou lignes.

    merci pour votre aide


    cdt

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par janakka-horus Voir le message
    Je voudrai savoir s'il était possible d’adapter ce code qui fonctionne que pour les fichier en format .xls au format xlsx.
    Pour quels autres format de fichier souhaiterais-tu qu'il fonctionne ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 112
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Pour quels autres format de fichier souhaiterais-tu qu'il fonctionne ?

    Pour les fichiers format xlsm et csv.

    Merci

  4. #4
    Membre émérite Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 494
    Points : 2 283
    Points
    2 283
    Par défaut
    bonjour,
    pour tous les format !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties=""Excel 12.0;HDR=No;"""

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 112
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par Thumb down Voir le message
    bonjour,
    pour tous les format !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties=""Excel 12.0;HDR=No;"""
    Merci c'est super pour ta réponse.


    J'ai une dernier question qui n'a rien avoir avec le sujet. mais comment peut on faire pour charger les élément en fonction d'un critère apparaissant dans la première colonne appelée entité du fichier source fermé.
    Par exemple je peux que les éléments correspondant au critère E098.

  6. #6
    Membre émérite Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 494
    Points : 2 283
    Points
    2 283
    Par défaut
    HDR=YES/No indique si la première ligne est les entêtes de colonnes !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sql="SELECT * FROM [" & Feuille & Cellule & "] where [F1]='E098'" 'la première colonne si  HDR=No; {F1,F2 etc...}
     
    sql="SELECT * FROM [" & Feuille & Cellule & "] where [entité]='E098'" 'la première colonne  si HDR=Yes;

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 112
    Points : 62
    Points
    62
    Par défaut
    Je viens d'utiliser la requette sur ce code mais j'ai une erreur
    de type erreur execution '-2147467259 (80004005) argument non valide

    voici le code

    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
    Sub extractionValeurCelluleClasseurFerme()
        Dim Source As ADODB.Connection
        Dim Rst As ADODB.Recordset
        Dim Fichier As String, Cellule As String, Feuille As String, xSQL As String
        Dim DL As Integer 'déclare al variable DL (Dernière Ligne)
     
        Sheets("Balance N").Select                                         'Sélection de l'onglet à traiter
        Let NumLigne = 4                                              'Numero 1er ligne de données (dans excel)
        Let NumDebCol = 1                                                       'Numero 1er colonne de titre dans Excel
        Let NumFinCol = 12                                                      'Numero derniere de titre dans Excel
        Let ColTraite = 1                                                       'Numero de colonne de données à tester
     
        Cells(NumLigne, ColTraite).Select                                       'selectionne la cellule de départ
        ActiveCell.End(xlDown).Select                                           'Descend en bas de la colonne
        NumFinLig = ActiveCell.Row                                          'Affecte à FinCopieLink le n° de ligne correspondant
     
     
     
        If (NumFinLig = 65536 Or NumFinLig = 1048576) _
            Then                                                                'Si ligne trouvée est 65536 soit tout en bas ...
                NumFinLig = NumLigne                                            'On renvoi la ligne de départ car la plage est vide !!!
        End If
     
        Range(Cells(NumLigne, NumDebCol), Cells(NumFinLig, NumFinCol)).Select
        Selection.ClearContents
     
     
        'ENTITE -------------------------------------------------------------------------
     
        Set Source = New ADODB.Connection
        Source.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
            "data source=" & Fichier & ";" & _
            "extended properties=""Excel 8.0;HDR=Yes"""
     
        xSQL = "SELECT * FROM [" & Feuille & Cellule & "] where [ETAB]='E016'" 'la première colonne  si HDR=Yes;
     
        Set Requete = New ADODB.Recordset
        Set Requete = Source.Execute(xSQL)
     
            Range("A4").CopyFromRecordset Requete
     
        Requete.Close
        Source.Close
    End Sub
    Je ne comprends pas ce qui me généré cette erreur le débogage m'indique la ligne contenant le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Source.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
            "data source=" & Fichier & ";" & _
            "extended properties=""Excel 8.0;HDR=Yes"""

    Pouvez vous m'aidez svp

  8. #8
    Membre émérite Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 494
    Points : 2 283
    Points
    2 283
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties=""Excel 12.0;HDR=Yes;"""
    Code les 7 erreurs : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub extractionValeurCelluleClasseurFerme()
        Dim Source As ADODB.Connection
        Dim Rst As ADODB.Recordset
        Dim Fichier As String, Cellule As String, Feuille As String, xSQL As String
        Dim DL As Integer 'déclare al variable DL (Dernière Ligne)
    ‘…
     
        Set Source = New ADODB.Connection
        Source.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
            "data source=" & Fichier & ";" & _
            "extended properties=""Excel 8.0;HDR=Yes"""
     
        xSQL = "SELECT * FROM [" & Feuille & Cellule & "] where [ETAB]='E016'" 'la 
    ‘…
    End Sub

Discussions similaires

  1. [XL-2007] Filtre par élément d'une colonne et sauvegarde fichiers au format xlsx
    Par Kellly dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 09/10/2018, 21h37
  2. [XL-2010] Un problème pour enregistrer un fichier au format XLSX
    Par ThSPB dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/02/2017, 08h00
  3. [XL-2007] Extraction données fichiers fermées avec notion de Date (VBA)
    Par romainarequipa dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/01/2015, 07h45
  4. [XL-2000] Extraction donées fichier fermé avec critères
    Par benexcel2000 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/03/2010, 14h13
  5. Probleme Extraction donnees Fichier separer par un |
    Par dimitris dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 05/10/2008, 09h19

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