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 :

problème de Macro - Consolidation fichier excel & mdp


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Novembre 2020
    Messages : 3
    Par défaut problème de Macro - Consolidation fichier excel & mdp
    Bonjour,

    Je me permet de venir chercher de l'aide ici car dans le cadre de mon travail on me demande de faire des macro pour nous simplifier la vie et même si je "bidouille" un peu je reconnais que quand ça bug je ne sais comment résoudre le problème :
    Je dois consolider des fichiers enregistré dans un dossier. Tous les fichiers ont des nom différents (TYPE_EMPLOI_NOM_DATE_ENVOI) et le nombre de fichier sera évolutif au fil des mois.
    Petite difficulté supplémentaire, chaque fichier est protégé à l'ouverture par un mot de passe unique (lui même généré par macro lors de l'enregistrement) le mot de passe se décompose comme suis : Rem + 1ère lettre du NOM + Nb Caractère du NOM
    en exemple : si la personne s'appelle DUPUIS le mdp sera RemD6

    J'ai deux question :
    première chose j'avais un problème de DO pour ma boucle, j'ai rajouté un end with donc plus de problème mais impossible que la macro marche...
    deuxième chose quand je souhaites rajouté la présence du MDP impossible car il me dit "attendu fin d'instruction" à partir du moment même ou je met le , ah et je m'interroge sur le fait que j'ai bien défini le mot de passe en fonction du Nom du fichier
    Ah et finalement 3ème chose s'il y a des choses pas logique dans mon code n'hésitez pas à me le dire je dois reconnaitre que j'essai de me perfectionner mais ce n'est pas mon métier à la base.

    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
    Sub EtudeRem()
     
    Dim Rep As String
    Dim ClasseurConsolidé As String
    Dim ClasseurSource As String
     
        Rep = ThisWorkbook.Path
     
        If Rep = "" Then
            GoTo FIN
        End If
     
        ClasseurConsolidé = ActiveWorkbook.Name
        ClasseurSource = Dir(Rep & "\*.xlsx")
     
        mdp = "Rem" & Left(UCase(Fichier.Name), 1) & Len(Split(Fichier.Name, " ")(0))
        'OUVRE ET RECUPERE LES DONNEES DE CHAQUE EXTRACTION
        Do While ClasseurSource <> Empty
        NomFichier = Fichier.Name
        If Not Fichier.Name = "referentiel Etude Rem.xlsm" Then
            With Workbooks.Open(Rep & "\" & ClasseurSource, UpdateLinks:=0), password=mdp)
     
                On Error Resume Next
     
                Application.Workbooks(ClasseurSource).Worksheets("CONSO").Activate
                Range("A3:AA3").Select
                Range(Selection, Selection.End(xlDown)).Select
                Selection.Copy
     
                Application.Workbooks(ClasseurConsolidé).Worksheets("Référentiel").Activate
                Range("A3").Select
                Selection.End(xlDown).Select
                ActiveCell.Offset(1, 0).Select
                ActiveSheet.Paste
     
                On Error GoTo 0
                .Close False
            End With
     
            ClasseurSource = Dir
        Loop
    End If
     
    FIN:
     
    End Sub
    Si par avance quelqu'un saurais m'aider je lui en serais réconnaissante car cela fait plusieurs hours que je me prend la tête sur ce code et je n'arrive pas à le modifier pour qu'il fonctionne.

    D'avance merci à tous,

    Yuukia

  2. #2
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Hello,

    Pour consolider des fichiers, j'utiliserais Power Query et non Vba.
    De plus PQ n'a pas besoin de mot de passe pour récupérer les tables d'autres classeurs, l'import se fait en read only.

    Bat

  3. #3
    Candidat au Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Novembre 2020
    Messages : 3
    Par défaut
    je te remercie pour ton message, cependant je suis sous excel 2013 et power Query n'est pas encore existant dans cette version :s

  4. #4
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Hello,

    Power Query est disponible en add in pour Office 2010 et 2013, intégré à partir de 2016.
    Si pour une raison obscure, il serait impossible d'installer ,faire installer, PQ.

    Une démarche équivalente pourrait-etre mise en place en Vba, pour ce faire il faudrai plus infos.
    Les fichiers a importé ont ils toujours la même structure?
    Les tableaux à importé sont-ils des tableaux structuré, leur noms sont-ils commun à tout les fichiers ?
    ...

    Bav,

  5. #5
    Candidat au Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Novembre 2020
    Messages : 3
    Par défaut
    Je ne suis pas administrateur sur mon poste et je ne peux faire d'installation sur mon poste.
    je poserais la question à mon service informatique si c'est possible à installer à l'avenir.

    Pour les fichiers, il s'agit de fichier qui ont la même trame, enregistré en xlsm.
    L'onglet que je souhaites consolidé sera caché, et ne sert que pour la conso (afin de se faciliter la vie)

    Je met un exemple du fichier à consolidé en mode vierge.
    le fichier consolidé ne sera ni plus ni moins que l'onglet CONSO avec l'ensemble des données

    Ayant fait quelque modification je met mon dernier code (qui ne marche tjrs pas )

    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
    Sub Conso()
     
    Dim Rep As String
    Dim ClasseurConsolidé As String
    Dim ClasseurSource As String
     
        Rep = ThisWorkbook.Path
     
        If Rep = "" Then
            GoTo FIN
        End If
     
        ClasseurConsolidé = ActiveWorkbook.Name
        ClasseurSource = Dir(Rep & "\*.xlsm")
     
     
        'OUVRE ET RECUPERE LES DONNEES DE CHAQUE EXTRACTION
        Do While ClasseurSource <> Empty
        If Not ClasseurSource = ClasseurConsolidé Then
            With Workbooks.Open(Rep & "\" & ClasseurSource, UpdateLinks:=0)
     
                On Error Resume Next
     
                Application.Workbooks(ClasseurSource).Worksheets("CONSO").Activate
                Range("A3:AA3").Select
                Selection.Copy
     
                Application.Workbooks(ClasseurConsolidé).Worksheets("Référentiel").Activate
                Range("A3").Select
                Selection.End(xlDown).Select
                ActiveCell.Offset(1, 0).Select
                ActiveSheet.Paste
     
                On Error GoTo 0
                .Close False
            End With
     
            ClasseurSource = Dir
            End If
        Loop
     
     
    FIN:
     
    End Sub
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Problème d'importation de fichier Excel par macro
    Par aziz1015 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 27/07/2015, 15h19
  2. [DDE]Problème de table liée à fichier Excel
    Par modus57 dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/04/2007, 17h55
  3. Réponses: 4
    Dernier message: 08/09/2006, 11h21
  4. [VB]Problème ouverture de deux fichier excel
    Par Yanmeunier dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/02/2006, 15h51
  5. Problème de lecture de fichier Excel
    Par cocaetjusdorange dans le forum Langage
    Réponses: 4
    Dernier message: 08/02/2006, 11h08

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