Desavtiver les macros dun classeur apartir dun autre classeur
Fermé
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
-
5 juin 2019 à 16:26
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020 - 6 juin 2019 à 11:19
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020 - 6 juin 2019 à 11:19
A voir également:
- Desavtiver les macros dun classeur apartir dun autre classeur
- Classeur numérique gratuit - Télécharger - Bureautique
- Fusionner classeur excel - Guide
- Appliquer mise en forme conditionnelle sur tout le classeur ✓ - Forum Bureautique
- Étiquette classeur a imprimer gratuit excel - Forum Excel
- Modèle Etiquettes?? ✓ - Forum Bureautique
2 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
6 juin 2019 à 10:38
6 juin 2019 à 10:38
Bonjour,
La programmation exige beaucoup de rigueur, je vais commencer par quelques conseils qui t'éviterons bien des déboires :
• commences tous les modules par Option Explicit, cela oblige à déclarer toutes les variables
• déclares les variables avec le type ad hoc (i.e. pas toutes en Variant)
• limites leur portée au strict nécessaire (i.e. locale, privée, publique ou globale) ;
• envisages tous les types potentiels de chaque variable pour éviter les erreurs ;
• dans le doute prévois un gestionnaire d"erreur ;
• n'utilises jamais .Select, évites d'utiliser les objets actifs : Selection, Activecell, Activesheet, ... ;
• évites les références implicites(i.e. partielles), privilégies les références explicites (i.e. suffisamment complètes),
--- par exemple, au lieu de
donc, précises toujours la feuille pour un objet Range (Cells, Rows, ...) et la propriété cible (Value, Text, ...)
• n'hésites pas à utiliser des variables pour représenter les objets, ça facilite l'écriture et la lecture du code,
--- par exemple :
• pour les mêmes raisons, n'hésites pas à utiliser aussi
• évites d'utiliser des propriétés ou méthodes d'objet héritées qui pourraient ne pas exister,
--- par exemple, au lieu de :
en effet l'objet Range n'appartient pas à Sheet mais à Worksheet ;
• éviter d'utiliser le Presse-Papier, préfères la copie directe avec une destination
bien, pour copier uniquement les valeurs :
Voila du pain sur la planche ....
Ceci dit, pour éviter le 1° message d'erreur, il suffit de désactiver les liaisons à l'ouverture du classeur, au lieu de :
J'aurais écrit :
La programmation exige beaucoup de rigueur, je vais commencer par quelques conseils qui t'éviterons bien des déboires :
• commences tous les modules par Option Explicit, cela oblige à déclarer toutes les variables
• déclares les variables avec le type ad hoc (i.e. pas toutes en Variant)
• limites leur portée au strict nécessaire (i.e. locale, privée, publique ou globale) ;
• envisages tous les types potentiels de chaque variable pour éviter les erreurs ;
• dans le doute prévois un gestionnaire d"erreur ;
• n'utilises jamais .Select, évites d'utiliser les objets actifs : Selection, Activecell, Activesheet, ... ;
• évites les références implicites(i.e. partielles), privilégies les références explicites (i.e. suffisamment complètes),
--- par exemple, au lieu de
= Cells(1,2)écrire
= Worksheets(1).Cells(1,2).Value,
donc, précises toujours la feuille pour un objet Range (Cells, Rows, ...) et la propriété cible (Value, Text, ...)
• n'hésites pas à utiliser des variables pour représenter les objets, ça facilite l'écriture et la lecture du code,
--- par exemple :
Set MaPlage = Me.Range("B2:C8");
• pour les mêmes raisons, n'hésites pas à utiliser aussi
Withet
End With;
• évites d'utiliser des propriétés ou méthodes d'objet héritées qui pourraient ne pas exister,
--- par exemple, au lieu de :
Sheets(1).Range("A1")écrire
Workheets(1).Range("A1"),
en effet l'objet Range n'appartient pas à Sheet mais à Worksheet ;
• éviter d'utiliser le Presse-Papier, préfères la copie directe avec une destination
Source.Copy Destinationou
bien, pour copier uniquement les valeurs :
Destination.valeur = Source.Valeur.
Voila du pain sur la planche ....
Ceci dit, pour éviter le 1° message d'erreur, il suffit de désactiver les liaisons à l'ouverture du classeur, au lieu de :
Workbooks.Open Filename:=Chemin & NomFichier ' .... ' .... Windows(wb1).Activate ActiveWorkbook.Close False
J'aurais écrit :
Dim monClasseur As Workbook Set monClasseur = Workbooks.Open(Filename:=Chemin & NomFichier, UpdateLinks:=0) ' .... ' .... monClasseur.Close False
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
5 juin 2019 à 16:51
5 juin 2019 à 16:51
Bonjour,
Avec :
Avec :
Application.AutomationSecurity = msoAutomationSecurityForceDisable
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
Modifié le 5 juin 2019 à 16:56
Modifié le 5 juin 2019 à 16:56
Bonjour
ce code fonctionne que pour les evenements qui se declancheront lors de louerture de fichier mais pas pour tt les autres evenement
merci
ce code fonctionne que pour les evenements qui se declancheront lors de louerture de fichier mais pas pour tt les autres evenement
merci
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 5 juin 2019 à 19:50
Modifié le 5 juin 2019 à 19:50
msoAutomationSecurityForceDisable. Désactive toutes les macros contenues dans tous les fichiers ouverts par programmation sans afficher d'avertissement de sécurité.
Y compris les macros évènementielles de ces classeurs !
Y compris les macros évènementielles de ces classeurs !
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
6 juin 2019 à 09:20
6 juin 2019 à 09:20
Bonjour
merci pour votre reponse mais ca ne marche tjrs pas
voici e code que jai mis , peut etre ca vas vous donner une idee
merci encore
merci pour votre reponse mais ca ne marche tjrs pas
voici e code que jai mis , peut etre ca vas vous donner une idee
Sub feuil_macro_1()
Dim test2, test3, test4, test5, test6, test7, test8, test9, test10, test11 As Integer
wsh1 = Worksheets("NEW_VB_config").Range("o2") 'nom de la 1ere feuille
wsh2 = Worksheets("NEW_VB_config").Range("o3") 'nom de la 2eme feuille
wsh3 = Worksheets("NEW_VB_config").Range("o4") 'nom de la 3eme feuille
wsh4 = Worksheets("NEW_VB_config").Range("o5") 'nom de la 4eme feuille
wsh5 = Worksheets("NEW_VB_config").Range("o6") 'nom de la 5eme feuille
wsh6 = Worksheets("NEW_VB_config").Range("o7") 'nom de la 6eme feuille
wsh7 = Worksheets("NEW_VB_config").Range("o8") 'nom de la 7eme feuille
wsh8 = Worksheets("NEW_VB_config").Range("o9") 'nom de la 8eme feuille
wsh9 = Worksheets("NEW_VB_config").Range("o10") 'nom de la 9eme feuille
wsh10 = Worksheets("NEW_VB_config").Range("o11") 'nom de la 10eme feuille
wsh11 = Worksheets("NEW_VB_config").Range("o12") 'nom de la 11eme feuille
wb = ActiveWorkbook.Name
wsh = Workbooks(wb).Worksheets("NEW_VB_config").Range("o13")
wb1 = Workbooks(wb).Worksheets(wsh).Range("a2")
Workbooks(wb1).Application.AutomationSecurity = msoAutomationSecurityForceDisable
chemin_1 = Workbooks(wb).Worksheets(wsh).Range("a9")
'chemin
Chemin = chemin_1
NomFichier = wb1
Workbooks.Open Filename:=Chemin & NomFichier
Call Feuil_1(wsh1, test2, last1)
Call Feuil_1(wsh2, test3, last2)
Call Feuil_1(wsh3, test4, last3)
Call Feuil_1(wsh4, test5, last4)
Call Feuil_1(wsh5, test6, last5)
Call Feuil_1(wsh6, test7, last6)
Call Feuil_1(wsh7, test8, last7)
Call Feuil_1(wsh8, test9, last8)
Call Feuil_1(wsh9, test10, last9)
Call Feuil_1(wsh10, test11, last10)
Call Feuil_1(wsh11, test12, last11)
Windows(wb1).Activate
ActiveWorkbook.Close
End Sub
merci encore
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
6 juin 2019 à 09:57
6 juin 2019 à 09:57
Re
effictivement ca desactive les macros
excusez moi jai confondu les messages des macros avec ceux de la fermeture des classeur
je ne sais pas si ya moyen de desactiver ces 2 messages :
le premier a chque louverture a cause des laisons
le 2 eme a la fermeture des classeur ou il demade si jenrigistre les modif ou nn
merci davance
effictivement ca desactive les macros
excusez moi jai confondu les messages des macros avec ceux de la fermeture des classeur
je ne sais pas si ya moyen de desactiver ces 2 messages :
le premier a chque louverture a cause des laisons
le 2 eme a la fermeture des classeur ou il demade si jenrigistre les modif ou nn
merci davance
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
6 juin 2019 à 10:09
6 juin 2019 à 10:09
jai trouver un code pour fermer le classuer sans que le 2 eme message (message de demande d'enregistrement) s'affiche
Workbooks("NomFichier").Close SaveChanges:=False
jai une autre question
quand je mis le code en haut pour desactiver les macro je soiuhaiterais que avant la fermeture de mon classeur activer les macros parceque au 2 eme essai il ya un message derrure parceque les macros desactive sont enregisteree
merci et excusez moi pour ces messages
Workbooks("NomFichier").Close SaveChanges:=False
jai une autre question
quand je mis le code en haut pour desactiver les macro je soiuhaiterais que avant la fermeture de mon classeur activer les macros parceque au 2 eme essai il ya un message derrure parceque les macros desactive sont enregisteree
merci et excusez moi pour ces messages
6 juin 2019 à 10:40
ftp://ftp-developpez.com/bidou/Cours/VBA/formationVBA.pdf
6 juin 2019 à 11:19
merci bcp pour ts ces conseils
merci encore une fois et excellente journée