Comment lancer des macros d'un classeur dans un autre ? [Résolu]

Signaler
Messages postés
17
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
12 juin 2021
-
Messages postés
17
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
12 juin 2021
-
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

4 réponses

Messages postés
10056
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
12 juin 2021
1 149
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....?
Messages postés
17
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
12 juin 2021

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
Messages postés
10056
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
12 juin 2021
1 149
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.
Messages postés
10056
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
12 juin 2021
1 149
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.

Messages postés
10056
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
12 juin 2021
1 149 >
Messages postés
17
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
12 juin 2021

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
Messages postés
10056
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
12 juin 2021
1 149 >
Messages postés
10056
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
12 juin 2021

Bonjour,
A vous de voir: https://mon-partage.fr/f/XKocpNWV/
Salutations.
Le Pingou
>
Messages postés
10056
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
12 juin 2021

Druddy a marqué son post comme "RESOLU"; mais il ne dit rien de la solution adoptée;
Messages postés
10056
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
12 juin 2021
1 149 > JB22
Bonjour,
Eh oui tout le monde n'est pas bienséant. Il vos mieux rien attendre en retour.
Salutations.
Le Pingou
Messages postés
17
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
12 juin 2021
>
Messages postés
10056
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
12 juin 2021

Bonjour,

Désolé, ma joie d'avoir résolu mon problème m'a fait oublier d'indiquer comment.
J'ai changé l'ordre d’exécution des macros et tout part de mon fichier globale où je fais un GetOpenFilename de mon fichier Datas et ensuite je travaille la feuille pour la mise en forme de mon tableau pour mon TCD.
Cela est plus facile et centralisé
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