Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Macro avec nom de fichier et de feuille modifiable

gorghrom

XLDnaute Junior
Bonjour à tous,
J'ai besoin de vos éclaircissements concernant un macro.
Dans le fichier joint, j'ai créé une macro qui permet de copier des données d'un fichier source à un fichier cible.

Cette macro avec la commande suivante ouvre un fichier cible bien particulier.
Application.EnableEvents = False
Workbooks.Open "C:\Users\frdf079\Documents\BACKUP PROJET\ENSP\ENSP - Données consolidées.xlsx"
Pour y copier ensuite des données.

=> j'aimerais que le chemin et le nom de ce ficher puisse être changer facilement (par les utilisateur de l'outil sans avoir a rentrer dans le code),
- soit en ajoutant un MsgBox avec le chemin a prendre en compte dans le code suivant (avec si possible mémorisation de ce chemin entre chaque utilisation pour éviter de le saisir a chaque fois),
- soit que ce chemin face référence a une cellule du classeur (dans la page de garde par exemple) ou l'utilisateur pourrait venir renseigner le chemin.

Un autre point sur cette même macro, le code suivant copie les données dans une feuille bien particuliere.

'Copier/coller des valeurs sources sur le classeur cible
Sheets("UWE DATA").Range("B4").Value = ThisWorkbook.Sheets("SECTION A1").Range("C13")
Sheets("UWE DATA").Range("C4").Value = ThisWorkbook.Sheets("SECTION A1").Range("B4")

..et donc de la même façon que pour le chemin du fichier j'aimerai que le nom de la feuille puisse être changer facilement (par les utilisateur de l'outils sans avoir a rentrer dans le code),
- soit en ajoutant un MsgBox avec le nom de la feuille a prendre en compte dans le code suivant (avec si possible mémorisation de ce chemin entre chaque utilisation),
- soit que ce nom de feuille fasse référence à un nom inscrit dans une cellule du classeur (dans la page de garde par exemple) ou l'utilisateur pourrai venir renseigner le chemin.

J'espère avoir été claire.
Je vous remercie par avance.
Cordialement
 

Pièces jointes

  • FR FORMULAIRE RGA.xlsm
    163.3 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour gorghrom,

Voir PJ. En Page de Garde j'ai mis deux cellules appelées Chemin et Feuille.
Et dans le code la modif est simple :
Code:
    Workbooks.Open [Chemin]                     ' Ouverture fichier avec nom contenu dans cellule Chemin
    Set F1 = ThisWorkbook.Sheets("SECTION A1")
    Set F2 = ThisWorkbook.Sheets("SECTION A2")
    Set F3 = ThisWorkbook.Sheets("SECTION C")
    'Insertion ligne
    Rows(4).Insert
    'Copier/coller des valeurs sources sur le classeur cible
    With Sheets([Feuille])                      ' Avec la feuille dont le nom est dans la cellule feuille.
        .Range("B4").Value = F1.Range("C13")
        ... etc ...
        .Range("W4").Value = F3.Range("K18")
    End With
A noter que le With End with, ainsi que les SET permettent de simplifier l'écriture.

Par contre, évidemment, pas pu tester.

[Add] Attention, il n'y a aucune sécurité sur la validité des noms entrés dans Chemin et Feuille, donc conduit à des erreurs si ces noms sont erronés.
Il faut prévoir un minimum de sécurité, au moins si non vide, et si existent.
 

Pièces jointes

  • FR FORMULAIRE RGA.xlsm
    154.4 KB · Affichages: 5
Dernière édition:

gorghrom

XLDnaute Junior
Bonjour ,
Un immense merci , cela fonctionne pour la partie chemin et nom du classeur cible (le principal).
Mais il y a un bug que je n'arrive pas a résoudre sur le nom de la feuille. : ci-joint les 2 fichiers en question.
Saurais tu me dépanner sur ce souci.
En te remerciant.
Cordialement
 

Pièces jointes

  • ENSP - Données consolidées.xlsx
    12.6 KB · Affichages: 2
  • FR FORMULAIRE RGA.xlsm
    163.3 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Gorghrom,
Lorsque le second fichier est ouvert, il devient le fichier actif et le nom [Feuille] n'est plus accessible car il est sur le premier fichier.
Il faut donc mémoriser ce nom de feuille avant d'ouvrir le second fichier. J'ai donc rajouté avant l'ouverture :
Code:
NomFeuille = [Feuille]
que j'utilise ensuite pour le transfert :
Code:
With Sheets(NomFeuille)
 

Pièces jointes

  • FR FORMULAIRE RGA (1).xlsm
    159.8 KB · Affichages: 6

Discussions similaires

Réponses
2
Affichages
268
Réponses
9
Affichages
342
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…