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 :

VBA - Inclure dans process macro fichier dont nom stocké dans cellule Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Comptabilité
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Comptabilité
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Par défaut VBA - Inclure dans process macro fichier dont nom stocké dans cellule Excel
    Bonjour,

    Je suis débutant en VBA et j'aurais besoin d'éclaircissement pour finaliser une macro.

    Je travaille sur un fichier de collection de carte, fichier que j'ai partagé à plusieurs connaissance faisant la même collection

    De nouvelles séries arrivant, je suis amené à rajouter des onglets pour les rajouter, et le but de la macro étant de récupérer toutes les infos saisie (carte possédées ou non) des anciennes versions du fichier. Le nouveau fichier s'appelant "Checklist.xslm", et l'ancien "Import.xslx".

    Le processus se décompose en 2 étapes:
    - Premièrement, j'ai fait une macro qui permet d'aller sélectionner l'ancien fichier, de l'ouvrir, et de stocker son chemin complet dans une cellule Excel, dans le fichier "Checklist" donc, dans l'onglet "IMPORT" en case "F11" (renommé "Nom_du_fichier")
    - Deuxième étape, la macro pour récupérer les infos de l'ancien fichier, activé grâce à un bouton d'action dans le même onglet.

    J'ai fait macro fonctionnelle, qui copie correctement les onglets ("Série1", "Série2", ...) mais j'ai le nom de l'ancien fichier inscrit dans le dur dans la macro, et souhaiterais que la macro fonctionne en récupérant le nom stocké dans la case "F11", comme ça si un utilisateur modifie le nom du fichier source la macro reste fonctionnelle. Et c'est là que ca bloque, je sais pas faire

    Si quelqu'un pourrait éclairer ma lanterne ca serait super, surtout que cela me servira certainement pour des projets plus professionnels.

    Merci d'avance,

    Somadra

  2. #2
    Membre expérimenté Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 175
    Par défaut
    Bonjour Somadra,

    tu aurais pu chercher un peu.... bon, avant tu devais avoir un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open Filename:="C:\Users\xxxx\Desktop\Import.xslx"
    tu as deux solutions, soit comme tu le disais, tu inscris le nom du fichier dans une celulle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Chemin_Fichier As String
       Chemin_Fichier = ThisWorkbook.Sheets("IMPORT").Range("F11").Value2
        If Chemin_Fichier <> False Then
            Workbooks.Open Filename:=Chemin_Fichier
        End If
    mais tu peux aussi mettre un bouton pour le sélectionner manuellement (tuto ici) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Chemin_Fichier As String
        Chemin_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls")
        If Chemin_Fichier <> False Then
            Workbooks.Open Filename:=Chemin_Fichier
        End If

  3. #3
    Expert éminent 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
    Par défaut
    Citation Envoyé par Somadra Voir le message
    Le processus se décompose en 2 étapes:
    - Premièrement, j'ai fait une macro qui permet d'aller sélectionner l'ancien fichier, de l'ouvrir, et de stocker son chemin complet dans une cellule Excel, dans le fichier "Checklist" donc, dans l'onglet "IMPORT" en case "F11" (renommé "Nom_du_fichier")
    - Deuxième étape, la macro pour récupérer les infos de l'ancien fichier, activé grâce à un bouton d'action dans le même onglet.
    Pourquoi ne pas faire ça en une seule fois ?

    J'ai fait macro fonctionnelle, qui copie correctement les onglets ("Série1", "Série2", ...) mais j'ai le nom de l'ancien fichier inscrit dans le dur dans la macro, et souhaiterais que la macro fonctionne en récupérant le nom stocké dans la case "F11", comme ça si un utilisateur modifie le nom du fichier source la macro reste fonctionnelle. Et c'est là que ca bloque, je sais pas faire
    Fais une copie de ton code, de préférence entouré de balises CODE (le bouton #).

  4. #4
    Candidat au Club
    Homme Profil pro
    Comptabilité
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Comptabilité
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Par défaut
    Bonjour,

    Merci pour vos premières réponses, et pour l'attention accordée.

    J'ai cherché mais je tombe surtout sur des trucs qui permettent d'inscrire dans une case le nom d'un fichier et pas utiliser le nom y étant stocké, sinon je serais pas venu poser la question ^^"

    Je préfère que le processus se passe en 2 fois, histoire d'avoir une "sécurité" en cas d'erreur dans le choix du fichier.

    Un extrait du code ci-dessous, qui est très basique pour le coup, et que je vais certainement simplifier

    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 Recup_V1
     
        Windows("Import.xlsx").Activate
        Sheets("Serie1").Select
        Range("E7:F293").Select
        Selection.Copy
        ThisWorkbook.Activate
        Sheets("Serie1").Select
        Range("E8:F294").Select
        ActiveSheet.Paste
     
        Windows("Import.xlsx").Activate
        Sheets("Serie2").Select
        Range("H6:K293").Select
        Selection.Copy
        ThisWorkbook.Activate
        Sheets("Serie2").Select
        Range("H7:K294").Select
        ActiveSheet.Paste
     
        Application.CutCopyMode = False
     
        Windows("Import.xlsx").Close
     
        ThisWorkbook.Activate
        Sheets("IMPORT").Select
        Range("F21").Value = "IMPORT REUSSI"
     
    End Sub

  5. #5
    Expert éminent 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
    Par défaut
    Citation Envoyé par Somadra Voir le message
    Je préfère que le processus se passe en 2 fois, histoire d'avoir une "sécurité" en cas d'erreur dans le choix du fichier.
    Rien ne t'empêche d'intégrer cette sécurité à ton code en demandant à l'utilisateur de confirmer la procédure une fois le fichier choisi.
    Il suffit pour cela d'une simple MsgBox.
    https://msdn.microsoft.com/fr-fr/VBA...sgbox-function

    Un extrait du code ci-dessous, qui est très basique pour le coup, et que je vais certainement simplifier
    Pour commencer, j'ai un peu retoucher ton code pour le simplifier.
    Deux conseils : évite autant que possibles les Select/Selection qui compliquent inutilement le code et pour désigner un classeur privilégie Workbook plutôt que Windows.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Recup_V1
        Workbooks("Import.xlsx").Sheets("Serie1").Range("E7:F293").Copy ThisWorkbook.Sheets("Serie1").Range("E8")
        Workbooks("Import.xlsx").Sheets("Serie2").Range("H6:K293").Copy ThisWorkbook.Sheets("Serie2").Range("H7")
        Workbooks("Import.xlsx").Close
        ThisWorkbook.Sheets("IMPORT").Range("F21").Value = "IMPORT REUSSI"
    End Sub
    J'ai fait macro fonctionnelle, qui copie correctement les onglets ("Série1", "Série2", ...) mais j'ai le nom de l'ancien fichier inscrit dans le dur dans la macro, et souhaiterais que la macro fonctionne en récupérant le nom stocké dans la case "F11", comme ça si un utilisateur modifie le nom du fichier source la macro reste fonctionnelle. Et c'est là que ca bloque, je sais pas faire
    C'est simple à faire si tu me dis où se trouve cette cellule F11 : classeur (ThisWorkbook ?) et onglet.

    J'ai cherché mais je tombe surtout sur des trucs qui permettent d'inscrire dans une case le nom d'un fichier et pas utiliser le nom y étant stocké, sinon je serais pas venu poser la question ^^"
    Si tu me montres le code qui permet de renseigner la cellule F11, je te montrerai qu'on peut faire tout ça en une seule macro tout en gardant un niveau raisonnable de "sécurité".

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/06/2015, 00h44
  2. Réponses: 27
    Dernier message: 29/08/2014, 12h29
  3. Réponses: 8
    Dernier message: 11/03/2013, 11h20
  4. Réponses: 4
    Dernier message: 17/04/2008, 13h19
  5. Macro permettant envoi de données dans un autre fichier excel
    Par M8407108 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/11/2007, 11h20

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