Appliquer code vba à tous les classeurs ouverts/d'un dossier
Résolu/Fermé
Alem13
Messages postés
40
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
5 juillet 2013
-
12 juin 2013 à 10:39
Alem13 Messages postés 40 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 5 juillet 2013 - 12 juin 2013 à 13:13
Alem13 Messages postés 40 Date d'inscription jeudi 6 juin 2013 Statut Membre Dernière intervention 5 juillet 2013 - 12 juin 2013 à 13:13
A voir également:
- Enregistrer une macro pour tous les fichiers excel
- Code ascii de a - Guide
- Mettre un mot de passe sur un dossier - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Impossible de supprimer un dossier - Guide
4 réponses
rEVOLV3r
Messages postés
223
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
21 septembre 2022
28
12 juin 2013 à 10:45
12 juin 2013 à 10:45
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
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
rEVOLV3r
Messages postés
223
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
21 septembre 2022
28
12 juin 2013 à 11:33
12 juin 2013 à 11:33
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é.
___
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é.
Alem13
Messages postés
40
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
5 juillet 2013
12 juin 2013 à 11:42
12 juin 2013 à 11:42
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)
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)
Alem13
Messages postés
40
Date d'inscription
jeudi 6 juin 2013
Statut
Membre
Dernière intervention
5 juillet 2013
12 juin 2013 à 13:13
12 juin 2013 à 13:13
Cela fonctionne bien.
Je vous remercie pour votre aide.
Je vous remercie pour votre aide.
12 juin 2013 à 10:59
Pour S2, qu'entendez-vous par enregistrer une macro dans un "classeur de macros personnelles"?
Pour S3, je veux bien. Je pensais initalement ajouter un code pour qu'il s'applique à tous les classeurs ouverts mais cette solution est plus élégante.
En vous remerciant
12 juin 2013 à 11:01
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.
12 juin 2013 à 11:05
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
12 juin 2013 à 11:07
12 juin 2013 à 11:10