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 :

Modification d'une macro de récup de données [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Par défaut Modification d'une macro de récup de données
    Bonjour,

    Je dispose d'une macro permettant d'aller chercher le contenu de diverses cellules dans des classeurs fermés. J'aimerais la modifier pour qu'a la place elle ouvre les classeurs, pioche les données et referme les classeurs. mais je n'ai pas la moindre idée de comment faire...

    Le but étant de gagner du temps car cette macro est loooongue voir trèèès loooongue à s'executer. dès que je dépasse la dizaine de fichier à traiter.

    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
    Option Explicit
     
    Sub extraction() 
    Dim nbre As Long, lig As Long, cptr As Long
    Dim Fichier As String
    Dim txt As String
     
        nbre = Application.CountA(Range("B7:B1000")) 
     
        lig = ligdep
        Application.ScreenUpdating = False
        For cptr = 1 To nbre
            Fichier = Cells(lig, 2)
     
            txt = "'" & Chemin & "\[" & Fichier & "]Feuil1 (2)'!R"
     
           Cells(lig, 4) = ExecuteExcel4Macro(txt & "15C3")
           Cells(lig + 1, 4) = ExecuteExcel4Macro(txt & "20C3")
           Cells(lig + 2, 4) = ExecuteExcel4Macro(txt & "25C3")
           Cells(lig + 3, 4) = ExecuteExcel4Macro(txt & "30C3")
           Cells(lig + 4, 4) = ExecuteExcel4Macro(txt & "35C3")
           Cells(lig, 5) = ExecuteExcel4Macro(txt & "15C5")
           Cells(lig + 1, 5) = ExecuteExcel4Macro(txt & "20C5")
           Cells(lig + 2, 5) = ExecuteExcel4Macro(txt & "25C5")
           Cells(lig + 3, 5) = ExecuteExcel4Macro(txt & "30C5")
           Cells(lig + 4, 5) = ExecuteExcel4Macro(txt & "35C5")
           Cells(lig, 6) = ExecuteExcel4Macro(txt & "15C11")
           Cells(lig + 1, 6) = ExecuteExcel4Macro(txt & "20C13")
           Cells(lig + 2, 6) = ExecuteExcel4Macro(txt & "25C13")
           Cells(lig + 3, 6) = ExecuteExcel4Macro(txt & "30C13")
           Cells(lig + 4, 6) = ExecuteExcel4Macro(txt & "35C13")
            lig = lig + 5
     
        Next
     
    End Sub
    Si une personne sympatique aimerait m'apporter de l'aide .

    Merci !

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,
    il faut que tu utilises un objet Excel.Workbook,
    tu l'ouvres avec ta variable txt qui vaudra
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     txt = Chemin & "\" & Fichier
    la manipulation se fera par des Range()
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Par défaut
    Merci de ta réponse.

    Le VBA n'étant pas vraiment mon fort j'ai fait pleins de test mais je ne suis arrivé à rien de potable...

    J'ai rajouté un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim test As Excel.Workbook
    Et j'ai viré tout ce qui était en trop dans ma variable txt.

    Par contre pour le reste je tatonne, le seul truc que j'ai réussi à faire c'est afficher le chemin de mon dossier à la place des valeurs des cellules... Ca aide pas .

    Une petite aide s'il vous plait ^^.

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    J'aimerais la modifier pour qu'a la place elle ouvre les classeurs
    Un exemple perso pour boucler dans un repertoire et ouvrir tous les fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Fichier = Dir(Repertoire & "*.xls")
     
    Workbooks.Open Filename:=Repertoire & Fichier
     
    Do While Len(Fichier) > 0
         Fichier = Dir()
         If Fichier = Empty Then
             Exit Do
         End If
         DoEvents
         Workbooks.Open Filename:=Repertoire & Fichier
     
     Loop

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Par défaut
    Merci.

    Mais ce serait pas plus pratique d'ouvrir les classeurs 1 par 1 ?

    Parce que j'imagine pas le truc avec une centaine de fichiers qui s'ouvrent en même temps ^^.

    Rhaaa je vais me jeter par la fenêtre si ça continue . Je suis sur que le truc en lui même est pas super compliqué.

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour
    L'objectif tu ouvre 1 classeur tu lance ta macro tu ferme le classeur, tu ouvre un autre classeur tu lmance ta macro tu ferme le classeur,......

    Donc après le workbook open tu met ton code ou un apelle vers ta macro (comme tu le sent) et tu fini par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("Fichier").close true 'pour fermer et enregistrer
    juste avant le loop

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/03/2012, 09h59
  2. [Toutes versions] Modification d'une Macro pour un tri de données spécifique
    Par davidstarr dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 30/03/2011, 06h52
  3. Modification d'une Macro
    Par zahidovich dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/12/2009, 17h51
  4. [AC-2000] Automation avec Excel : lancer une macro qui trie les données
    Par fredschmidt dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/09/2009, 14h47
  5. Réponses: 1
    Dernier message: 15/07/2008, 09h40

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