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 :

aide VBA lien fichier dans la macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    autre
    Inscrit en
    Mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Mai 2019
    Messages : 4
    Par défaut aide VBA lien fichier dans la macro
    Bonjour,
    j'ai enregistré un macro VBA via l'enregistreur mais j'ai un soucis.

    J'ai regardé les différents forum et je n'ai pas trouvé la réponse à ma question.

    voici la macro enregistré :


    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
    Sub testimport()
    '
    ' testimport Macro
    '
     
    '
        ActiveSheet.Range("$A$1:$AL$30218").AutoFilter Field:=1, Criteria1:="H"
        Range("B1").Select
        Range(Selection, Selection.End(xlToRight)).Select
        Range("B1:AJ1").Select
        Range(Selection, Selection.End(xlDown)).Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.SpecialCells(xlCellTypeVisible).Select
        Selection.Copy
        Sheets("conso").Select
        Range("A1").Select
        ActiveSheet.Paste
        Windows("compta.xlsm").Activate
        Application.CutCopyMode = False
    End Sub
    J'ai environ 50 codes ( libellé Criteria1) à selectionner 1 par 1 et à copier dans le bon classeur en collage spécial.

    Ainsi le code H va dans le classeur B:\Frais Généraux\D\2024\042024\1\H.xlsm feuille "conso"
    le code A va dans le B:\Frais Généraux\D\2024\042024\1\A.xlsm feuille "conso"
    etc...

    la date change selon les mois 04 ce mois ci, 05 le mois prochain etc ...

    Ainsi : 2 questions :

    1. comment je peux afficher le nom du classeur et de la feuille dans ma macro puisqu'il ne la met pas lors de la création de la macro
    2. comment je peux automatiser la variable du mois en cours ? avec un bouton ou autre ?

    Je vous remercie par avance de votre aide précieuse

  2. #2
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 302
    Par défaut Proposition
    Bonjour
    il serait sans doute possible de faire une feuille en plus dans le classeur qui ferait le lien entre source et destination
    Colonne A le numéro de l'action (nécessaire pour la macro qui suit)
    Colonne B la source (ex le nom de la feuille dans le classeur actif)
    Colonne C la destination (peut être mettre le chemin complet pour qu'excel génère également l'ouverture du classeur) [Maj + clic droit sur le fichier + copier le chemin d'accès]
    Colonne D le nom du fichier de destination (car une fois ouvert, il faut pouvoir le refermer mais l'adresse complète génère une erreur) [à obtenir via formule]

    Une fois que ce travail est terminé, je partirais sur une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub LOOPING()
     
    Dim i As Integer
     
    For i = 1 To 50 '50 étant ton nombre d'actions
    MsgBox ("mettre macro ici") 
    Next i
     
    End Sub
    tu aurais donc ta macro à la place de mon msgbox
    et tu commencerais par exemple par
    Dim ma_source as string
    Dim ma_destination as string
    Dim nom_classeur as string

    ma_source = Application.WorksheetFunction.VLookup(i, TBL_Correspondance, 2, False) 'recherche i dans mon tableau "TBL_Correspondance" et renvoie moi la colonne 2 en correspondance exacte
    ma_destination = Application.WorksheetFunction.VLookup(i, TBL_Correspondance, 3, False)
    nom_classeur = Application.WorksheetFunction.VLookup(i, TBL_Correspondance, 4, False)

    au fil de ta macro tu aurais besoin de ceci

    Sheets(ma_source).Select

    Workbooks.Open ma_destination

    Windows(nom_classeur).Activate
    Windows(nom_classeur).close

    pour le mois, je chercherai par formule ou vba à obtenir le mois de la date du jour [=mois(aujourdhui())] ou [Month(Date) en VBA]

    le tout est à tester de ton coté car je n'ai pas essayé
    Restant à dispo

  3. #3
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 508
    Par défaut
    Bonjour,
    Dans quelle cellule, est comment récupérez-vous le fameux critère ? Car je vois qu'il est identique au nom de fichier.
    Une capture d'écran, serait la bienvenue.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour charger des données provenant d'autres classeurs, j'utiliserais Power Query avec le nom des répertoires et des fichiers placés dans des cellules qui dynamiquement changeront en fonction de la date du jour

    Petit échantillon pour rendre dynamique le chemin et le nom du fichier en fonction de la date. En prenant comme exemple "B:\Frais Généraux\D\2024\042024\1\H.xlsm"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="B:\Frais Généraux\D\" & ANNEE(AUJOURDHUI()) & "\" & TEXTE(AUJOURDHUI();"MMAAAA") & "\1\H.xlsm"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 302
    Par défaut Exemple
    Citation Envoyé par Valtrase Voir le message
    Bonjour,
    Dans quelle cellule, est comment récupérez-vous le fameux critère ? Car je vois qu'il est identique au nom de fichier.
    Une capture d'écran, serait la bienvenue.
    Bonjour
    en complément de mon premier message et de l'alternative proposée par Philippe, voici un exemple

    • je joins un fichier abc59.xlsm avec la macro, il faudra mettre le nom d'utilisateur en B1 sur la feuille de correspondance
    • il y a deux feuilles complémentaires dans lesquelles j'ai mis des BDD fictives
    • je joins également des classeurs excel standard que je mets sur mon bureau (d'où la nécessité de changer le nom d'utilisateur pour l'exemple) -> abc59 a.xlsx à abc59 f.xlsx


    Dans la macro que j'ai mis en exemple, cela va faire les actions suivant le tableau de correspondance
    Nom : 2024-04-30_10h18_24.png
Affichages : 74
Taille : 17,1 Ko
    Par exemple, pour l'action 3, cela va aller sur la BDD en feuil3 et copier les infos résultant du critère O et les coller dans le classeur abc 59 c.
    Pour simplifier la chose j'ai demandé à ce que les données soient collées en C7 de la feuil1 du classeur de destination. il y aura sans doute des améliorations/adaptations à apporter de votre coté, mais bon déjà je pense que c'est pas mal dégrossi...
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Ouvrir un fichier Excel depuis Vba puis retour dans la macro initiale
    Par Mistigri5 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/07/2014, 23h19
  2. [XL-2003] VBA : Lien hypertexte dans le corps d'un email
    Par armma dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/03/2012, 18h13
  3. Exemple Access enregistrement lien fichier dans table
    Par amely78 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/06/2011, 22h55
  4. [VBA]Lien Hypertexte dans formulaire
    Par krassi dans le forum IHM
    Réponses: 1
    Dernier message: 23/04/2007, 17h22
  5. [VBA-E] Fichier dans le dossier courant
    Par LP-mpascolo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/03/2007, 17h06

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