Appliquer code vba à tous les classeurs ouverts/d'un dossier [Résolu/Fermé]

Signaler
Messages postés
40
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
5 juillet 2013
-
Alem13
Messages postés
40
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
5 juillet 2013
-
Bonjour à tous,

Je cherche à appliquer une macro à tous les classeurs d'un dossier ou à défaut à tous ceux qui sont ouverts.

Quelqu'un a voit-il comment faire?

Merci d'avance

4 réponses

Messages postés
221
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
5 juillet 2019
23
Bonjour,

Plusieurs solutions s'offrent à vous.

1) Pour chaque fichier excel, créer un module et copier la macro pour l'activer.
2) Aller dans un fichier Excel, enregister une macro bidon mais dans un "classeur de macros personnelles". Ensuite copier le contenu de votre macro dedans. Vous n'avez plu qu'à activer la macro de ce classeur lorsque vous avez sélectionner un autre classeur excel.
Cette solution crée une fichier Personal.xlsb qui s'ouvre à chaque fois quand excel se charge et cela est légèrement gavant a la longue, cependant vous pouvez le supprimer.
3) Créer une macro qui va ouvrir tous les classeurs excel d'un certain dossier (chemin) et appliquer une macro à la suite puis les fermer.
- si vous voulez la 3eme solution j'ai déjà certaines macros faites maison que je peux poster ici.

Amicalement,
rEVOLV3r
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 87808 internautes nous ont dit merci ce mois-ci

rEVOLV3r
Messages postés
221
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
5 juillet 2019
23
Lorsque vous enregistrez une macro vous pouvez l'enregister dans un classeur, dans ce classeur ou dans un classeur de macro personnelles, voila ;-)

Je vous la macro de S3 tout de suite, par contre quel genre de macro voulez vous activer sur vos classeur ? il faut qu'elle soit codée en "relatif" afin de pouvoir s'activer sur tous vos classeurs.
Alem13
Messages postés
40
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
5 juillet 2013

En fait, je ne sais pas enregistrer une macro; habituellement, j'enregistre un classeur avec une macro mais jamais une macro seule.


Il s'agit simplement d'une macro effaçant tous les noms d'un classeur:

Sub suppression_nom()
Dim N As Name
For Each N In Names: N.Delete: Next
End Sub


Merci pour votre aide
Alem13
Messages postés
40
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
5 juillet 2013

Pardon, je sais comment enregistrer une macro. Par contre, je ne sais enregistrer un code VBA ce qui est le cas ici.
Alem13
Messages postés
40
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
5 juillet 2013

Pardon, en relisant vous répondez à mes questions concernant S2.
Alem13
Messages postés
40
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
5 juillet 2013

Votre 2ème fonctionne bien et permet un gain de temps non négligeable, merci.

Je serais curieux de votre 3ème solution qui semble encore plus efficace.
Messages postés
221
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
5 juillet 2019
23
Essayez cela.

___

Sub ApplicationMacro()

Dim ClasseurSource As Workbook
Set ClasseurSource = ThisWorkbook

Dim N As Name


Dim chemin As String
chemin = "C:\Users\re...\Desktop\test"
chemintypedonnees = "C:\Users\...\Desktop\test\*.*"

ChDir chemin
RetVal = Application.Dialogs(xlDialogOpen).Show(chemin & "\*.*")
'ouverture de la boite de dialogue
'Ce bout de code sert à montrer à la macro le chemin du dossier des fichiers
If RetVal = True Then Exit Sub 'Pressez "annuler" si le chemin est CORRECT


' Turn off screen updating.
Application.ScreenUpdating = False

'Y a t'il des fichiers dans le répertoire ?

If Dir(chemintypedonnees) <> "" Then
ClasseurSource.Activate

'Gérer le répertoire de fichiers excel
fichier = Dir(chemintypedonnees)
Do While fichier <> ""
Set wbsource = Workbooks.Open(fichier) 'open the file
'activation de la première feuille du fichier excel. Cela peut etre modifié
Sheets(1).Activate

For Each N In Names: N.Delete: Next

wbsource.Close True 'close the current source file and save
fichier = Dir 'go to next file in the directory
Loop 'restart the process with next file

Else
Application.ScreenUpdating = True
MsgBox "Aucun fichier présent!!!"
Exit Sub
End If

Application.ScreenUpdating = True

End Sub

____

Par contre je n'ai pas très bien compris votre macro.
N est défini comme un nom. Names est le nom des onglets ? Car je n'ai pas vu de changement dnas mes fichiers test excel dans lesquels j'ai appliqué la macro.

Il vous faut mettre pour chemin : le chemin de votre dossier contenant vos fichiers excel
et pour chemintypedonnee : juste rajouter \*.* ou \*.xlsm ou \*.xls à choix. Il vaut mieux garder la première extension mais il ne faut pas qu'il y ait des fichiers excel qui ne doivent pas etre modifiés, ou encore des fichiers qui ne sont pas excel !

copier tous les fichiers excel dans un répertoire test avant de lancer la macro, par sécurité.
Messages postés
40
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
5 juillet 2013

D'accord merci, j'essaie cela.

En fait, il s'agit d'une macro qui supprimer les noms que l'on trouve dans "Gestionnaire de noms" dans Formule.
Les supprimer permet de ne pas avoir de problèmes de liaisons lors de compilations de classeurs. (redondance de certains noms sinon)
Messages postés
40
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
5 juillet 2013

Cela fonctionne bien.

Je vous remercie pour votre aide.