Comment lancer des macros d'un classeur dans un autre ?

Résolu
Druddy Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -  
Druddy Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Comment lancer des macros d'un classeur dans un autre classeur qui à chaque fois est différent car il fait l'objet d'une extraction ?

Voilà j'ai un fichier global avec toutes les macros et TCD.

J'aimerais :
Lancer une extraction qui me génère un fichier xls d'une feuille "Sheet1" avec à chaque fois un nom différent dans mon répertoire Téléchargements
A partir du sommaire du fichier globale, utiliser des boutons pour lancer différentes macros qui doivent s'exécuter sur l'autre fichier ouvert.
Puis copier les données obtenues après toutes les macros dans la feuille datas de mon fichier global pour ensuite mettre à jour mes TCD.

Quel est le meilleur chemin ?
Utiliser le getopenfilename pour renommer le nouveau fichier extract, lui copier les macros et les lancer ?
Ou bien
A partir du sommaire, lancer les macros sur le fichier récent ? (comment faire cela?)

Je vous remercie par avance,


Configuration: Windows / Edge 91.0.864.41
A voir également:

4 réponses

Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Lancer des macros ne veux rien dire...!
Que voulez-vous réaliser exactement ---exemple depuis classeur global je vais chercher des valeurs ou (feuille/Classeur) et je les mets ou (feuille/Classeur).... et qu'elle est le résultat final....?
0
Druddy Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir Le Pingou,

Tout d'abord merci pour l'attention de mon cas.

Voilà le détail :

J'ai un classeur global avec des tcd.
Pour l'alimenter en datas, je dois faire une extraction via un outil de ticketing qui génère un fichier Num.xls (ex : 57834027.xls)
J'ai créé des macros pour "travailler" ce fichier (suppression de colonnes inutiles, renommer des colonnes, faire un calcul sur une colonne (format heure).
Ces données devront être injectées dans une feuille Datas de mon classeur global (avec redéfinition de la plage de données pour être prise en compte dans les TCD.
Afin de partager ce fichier, j'aimerais créer un onglet "Notice" dans le fichier global afin d'indiquer ce qu'il faut faire, lancer les différentes macros pour formater les données de l'extraction et les rajouter dans l'onglet Datas pour mettre à jour les TCD (via des boutons) .

J'ai déjà les différentes macros et il me reste qu'à harmoniser tout ça :


A EXECUTER SUR FICHIER D'EXTRACTION
'*******************************************
'Suppression des colonnes fichier SLA
'*******************************************

Sub DeletecolonnesSLA()

Columns("BT:BK").Delete Shift:=xlToLeft
Columns("BI:BI").Delete Shift:=xlToLeft
Columns("BF:BF").Delete Shift:=xlToLeft
Columns("BB:AN").Delete Shift:=xlToLeft
Columns("AJ:V").Delete Shift:=xlToLeft
Columns("S:P").Delete Shift:=xlToLeft
Columns("M:K").Delete Shift:=xlToLeft
Columns("I:F").Delete Shift:=xlToLeft
Rows("1:2").Delete Shift:=xlUp
Range("A1").Select
End Sub

A EXECUTER SUR FICHIER D'EXTRACTION
'*******************************************
' RenommeM1Changes Macro
'*******************************************
Sub RenommeM1Changes()

Range("M1").Select
Selection.ClearContents
Range("M1").Select
ActiveCell.FormulaR1C1 = "Dépassement"
Range("A1").Select
End Sub

<gras>A EXECUTER SUR FICHIER D'EXTRACTION</gras
'*******************************************
' CalculDépassementChange Macro
'*******************************************
Sub CalculDépassementChange()
deli = Range("K" & Rows.Count).End(xlUp).Row
Range("M2").FormulaR1C1 = "=RC[-1]-RC[-2]"
Range("M2").AutoFill Destination:=Range("M2:M" & deli)
Range("M2:M" & deli).Select
End Sub

<gras>A EXECUTER SUR FICHIER D'EXTRACTION</gras
'*******************************************
' Suppression dernier Enregistrement d'une colonne
'*******************************************
Sub SupDerEnregD1Col()
Dim lifin As Long
lifin = Range("A" & Rows.Count).End(xlUp).Row
Range("A" & lifin).ClearContents
End Sub

<gras>A EXECUTER SUR FICHIER GLOBAL</gras

'Récupérations des données
'********************************************************

option explicit

sub RecupereDataFichier()

'********************Déclaration des variables**************************
Dim ListeFichier as variant
Dim MonClasseur as workbook

'*****On désactive le presse papier et le raffraichissement de l'écran***
Application.cutcopymode=false
Application.screenupdating=false

'*********************On efface les anciennes données*****************
Activesheet.range ("A2").currentregion.clear

ChDir "C:\Users\Name\Downloads" 'te place dans le répertoire "C:\Users\CDURRIEU\Downloads"
'Affiche la boîte de dialogue Ouvrir

'******************On récupère le fichier de données à copier************
ListeFichier=application.getopenfilename(title:="sélectionnez votre fichier",filefilter:="fichiers excel(*.xls*),*xls*",buttontext:="Cliquez")

'****************************Prévoir le cas du bouton Annuler************
if ListeFichier <> false then
'********************On affecte le fichier sélectionné*******************
set Monclasseur=Application.workbooks.open(ListeFichier)
'****On copie les données de la feuille 1 du classeur sélectionné*******
MonClasseur.sheets(1).range("A1").currentregion.copy
'****************On colle les données dans la feuille active*************
thisworkbook.activesheet.range("A1").pastespecial xlpastevalues
'*********On désactive les messages d'alerte de Microsoft*************
application.displatalerts=false
'***************************On ferme le classeur source****************
MonClasseur.close

End if

'*******On réactive le presse papier et le rafraîchissement de l'écran*****
Application.cutcopymode=true
Application.screenupdating=true

End sub


Il me manque la définition de la plage de données pour les TCD à l'issue et la nommer à chaque fois en "DatSLAGéné__3".

J'espère avoir été assez clair dans ce que je voudrais obtenir comme résultat.

Merci

Druddy
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci pour le message. Pour moi c'est de moins en moins compréhensible.
Pouvez-vous mettre un fichier exemple ..sur https://www.cjoint.com/ et poster le lien.
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
J'ai remarqué ceci :

Il me manque la définition de la plage de données pour les TCD à l'issue et la nommer à chaque fois en "DatSLAGéné__3".

Sans connaitre la structure de vos données c'est impossible de donner une proposition.

Voir poste précédent.

0
Druddy Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir Le Pingou,

Voici le lien avec donc mon problème est de lancer des macros d'un fichier sur un autre :

https://www.cjoint.com/c/KFjtvNUYmqx
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458 > Druddy Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Merci, il ne s'agit pas d'un exemple Excel (classeur) , de ce fait je ne peux rien faire avec votre schéma.
Je ne vais pas refaire un classeur en essayant de le construire selon votre schéma.
je pense qu'il vous faut voir avec JB22 (poste 6).
Désolé.
Salutations.
Le Pingou
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458 > Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bonjour,
A vous de voir: https://mon-partage.fr/f/XKocpNWV/
Salutations.
Le Pingou
0
JB22 > Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention  
 
Druddy a marqué son post comme "RESOLU"; mais il ne dit rien de la solution adoptée;
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458 > JB22
 
Bonjour,
Eh oui tout le monde n'est pas bienséant. Il vos mieux rien attendre en retour.
Salutations.
Le Pingou
0
JB22
 
Bonjour,
Comme vous j' ai un classeur contenant différentes feuilles avec des boutons activant des macros.
Dans une feuille de ce classeur j' ai un bouton qui effectue une copie d' une feuille et qui demande de fournir différentes informations qui servirons à nommer la feuille, la macro effectue ensuite les autres opérations
Dans une autre feuille du classeur principal j' ai un autre bouton qui active une autre macro qui fait une copie du classeur et demande de lui attribuer un nom.
Dans toutes les copies les boutons apparaissent ils sont donc opérationnels.
A vous de voir si vous pouvez adapter mes procédures à votre problème
CDT
JB22
0