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

Excel Discussion :

Importation des données sur plusieurs fichiers fermés


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Importation des données sur plusieurs fichiers fermés
    Bonjour,

    Je suis vraiment nul avec excel alors soyez indulgent svp.
    Je vous explique ce que je souhaite réaliser:
    J'ai un fichier excel dans lequel j'ai des données à récupérer pour calculer la productivité d'un technicien. je dois donc récupérer les incidents qu'un tech1 a clôturer par jour en fonction de sa présence, présence que je dois récupérer d'un autre fichier.
    Dans mon fichier datas (qui est fermé) il faut que je récupère la colonne du tech1 et compter le nombre d'incident du tech1 et dans une autre colonne il faut que je récupère la date de la clôture de l'incident.
    Dans mon fichier planning (qui est fermé) il faut que je récupère les jours de présence du tech1 afin de pouvoir calculer sa productivité par jour et par semaine.
    Les informations récupérés des 2 fichiers fermés doivent être copiées dans le fichier productivité depuis lequel le résultat doit être affiché.
    Je joint à ma demande d'aide des fichiers à titre d'exemple pour une meilleur compréhension de ma requête.
    Merci de votre aide, aiguillage, proposition...
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    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
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, la réponse se trouve dans http://silkyroad.developpez.com/VBA/ClasseursFermes/

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci de ta réponse !

    Je viens de faire un test sur mon fichier en modifiant les codes donnés dans le tuto mais j'ai une erreur sur mon code sur la ligne Cn As ADODB.Connection
    Erreur de compilation, type défini par l'utilisateur non défini

    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
    Sub TestConnection_V1()
        Dim Cn As ADODB.Connection
        Dim Fichier As String
        
        'Définit le classeur fermé servant de base de données
        Fichier = "C:\REPORTING\MAINTENANCE.xls"
        
        Set Cn = New ADODB.Connection
        
        '--- Connexion ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Fichier & _
                ";Extended Properties=Excel 8.0;"
            .Open
        End With
        
        'Extended Properties=Excel 8.0 est utilisé pour les versions d'Excel 97, 2000 et 2002.
        
        '
        '... la requête ...
        '
        
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
    End Sub
        Application.Run _
            "'Nouveau Feuille Microsoft Office Excel.xlsx'!TestConnection_V1"
        Range("A1").Select
    Si tu as une idée je suis preneur.
    PS : je débute sur VBA aussi

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'ai rajouté les préférences de VBA et la macro s'éxécute normalement...
    Maintenant j'arrive bien à lire mon fichier fermé et je récupére toutes les infos sur la bonne feuille mais je ne sais pas comment faire pour ne récupérer que les données dans les colonnes qui m'intérresse... merci de votre aide.

    voilà le code que j'ai mis

    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
    Sub RequeteClasseurFerme()
        Dim Cn As ADODB.Connection
        Dim Fichier As String
        Dim NomFeuille As String, texte_SQL As String
        Dim Rst As ADODB.Recordset
     
        'Définit le classeur fermé servant de base de données
        Fichier = "C:\maintenance.xls"
        'Nom de la feuille dans le classeur fermé
        NomFeuille = "tickets clos"
     
        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.
        texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
     
        Set Rst = New ADODB.Recordset
        Set Rst = Cn.Execute(texte_SQL)
     
        'Ecrit le résultat de la requête dans la cellule A1
        Range("A1").CopyFromRecordset Rst
     
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
     
    End Sub

  5. #5
    Expert éminent sénior
    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
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        .....
        texte_SQL = "SELECT * FROM [" & NomFeuille & "$B2:B" & Rows.Count & "]"    
        .....
    ou si tu as des plages nommées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        .....
        texte_SQL = "GROUPE"
        .....

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci !
    J'ai fait le test avec ton code et sa fonctionne, le résultat me montre bien les données de la colonne C du fichier mais j'ai voulu rajouter en plus la colonne D...il m'envoit pêtre !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    texte_SQL = "SELECT * FROM [" & NomFeuille & "$C2:C" & Rows.Count & "$D2:D" & Rows.Count & "]"
    Où est-ce que j'ai loupé le code ?

  7. #7
    Expert éminent sénior
    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
    Points : 11 274
    Points
    11 274
    Par défaut
    Re,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Set Rs = New ADODB.Recordset
        texte_SQL = "SELECT * FROM [" & NomFeuille & "$C2:D" & Rows.Count & "]"
        Set Rs = Cn.Execute(texte_SQL)
        Range("A1").CopyFromRecordset Rs

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Alors là chapeau bas kiki
    Merci vraiment pour ton aide très précieuse
    Je vais continuer à optimiser le code pour extraire toutes les infos qui me sont nécessaires.
    Question supplémentaire tant que "je te tiens" :
    Comment je dois procéder pour lire mon 2e fichier ?
    Je refais une autre macro pour le 2e fichier ou je peux l'inclure dans la même macro ?...je ne sais pas si je me suis bien exprimé...

  9. #9
    Expert éminent sénior
    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
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, tu peux poursuivre dans la même macro après le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Rs.Close
        Cn.Close
        Set Rs = Nothing
        Set Cn = Nothing
    en réinialisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        .....
        Set Cn = New ADODB.Connection
     
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .....
    avec les paramètres à adapter pour le nouveau fichier

    Par la suite tu pourras généraliser en passant les parametres à ta procédure
    RequeteClasseurFerme sous la forme par exemple de RequeteClasseurFerme(sFichier As String, PlageAImporter As Range, PlageDestination As Range, wsFeuilleDestination As WorkSheet)

Discussions similaires

  1. [XL-2010] Comparer et stocker des données sur plusieurs fichiers Excel
    Par JohnKel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/06/2015, 17h17
  2. [2008R2] Importation des données parmi plusieurs fichiers dans un dossier
    Par marcandre dans le forum SSIS
    Réponses: 5
    Dernier message: 06/05/2015, 08h28
  3. [XL-2010] Importer des données de plusieurs fichiers dans une feuille excel en VBA
    Par Alibel dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/10/2013, 15h16
  4. Réponses: 2
    Dernier message: 18/12/2010, 19h42
  5. Réponses: 3
    Dernier message: 24/05/2008, 18h56

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