Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Modification d'un Code automatiquement

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

WDAndCo

XLDnaute Impliqué
Bonjour le Forum

J'ai ce code sur un onglet :
Code:
Private Sub Worksheet_Activate()
MAJ
ActiveWindow.View = xlPageBreakPreview
     Columns("A:I").Select
    ActiveWindow.Zoom = True
Range("H12").Select

End Sub
Cet onglet me sert a en créer d'autres. Mais lors de la copie de cet onglet à l'aide d'une Macro, j'ai un message d'erreur que je n'ai plus si je mets un ' devant MAJ.
Ma question est comment enlever ce ' dans le code de l'onglet après l'avoir copié et traité ?
Ou écrire Call MAJ dans le code

D'avance merci.
Dominique.
 
Dernière édition:
Re : Aide sur un code

Bonjour,
place la Sub MAJ dans le même module de feuille que celui dans lequel tu as la Private Sub Worksheet_Activate ou copie le code de la Sub MAJ dans la Private Sub Worksheet_Activate.
A+
 
Re : Aide sur un code

Bonjour le Forum, et merci David84

J'ai pas compris !
L' onglet (Référence) le code est 'MAJ car la Sub MAJ ne doit pas être utilisé à chaque ouverture.

Par contre sur les onglets copiés qui sont des copies de l'onglet (Référence) avec quelques modifs, la Sub MAJ doit être utilisé à chaque ouverture.

J'ai bien sur la solution d'enlever le ' dans le code de chaque onglet copiés, mais comment rendre cela automatique ?
 
Re : Aide sur un code

Re
Si je comprends bien tu utilises une Sub appelée MAJ uniquement dans un classeur mais le problème est que tu lances par macro une copie d'une feuille de ce classeur et que tu ne veux pas que la Sub MAJ soit appelée dans les copies que tu fais, est-ce cela ?
Si c'est le cas la solution simple peut être de lancer MAJ uniquement si le nom du classeur est celui de ton classeur initial.
Donc en mettant une condition telle que
Code:
If ThisWorkbook.Name like "le nom de mon classeur initial" then call MAJ
dans la Private Sub Worksheet_Activate cela devrait fonctionner (non testé mais je te livre l'idée).
Espérant avoir compris ton problème.
A+

Edit : attention je pense tout de même qu'il faut placer la Sub MAJ dans le module de feuille : la sub sera copiée mais non lancée (car sinon VBA ne trouvera pas MAJ et plantera, à moins de placer On Error Resume next devant, enfin bref à toi de tester et de nous dire.
 
Dernière édition:
Re : Aide sur un code

Bonjour et merci David

L'onglet référent se nomme "Compte Rendu" il ne doit pas lancer MAJ
Les autres seront nommés "XX 2013-NNN" ou NNN est le jours dans l'année soit de 1 à 365

Code:
If not ThisWorkbook.Name like "Compte Rendu" then MAJ

Cela ne fonctionne toujours pas.

Je vais rajouter
Code:
If not ThisWorkbook.Name like "Compte Rendu (2)" then MAJ

Non ce ne marche pas il faudrait pouvoir l’écrire en dur dans le code mais je ne sais pas le faire
 
Dernière édition:
Re : Aide sur un code

Re
Tu connais le nom de ton fichier référent non ? Donc si c'est le cas je ne vois pas où est le problème...
place-toi dans ton fichier référent et lance cette macro
Code:
Sub NomClasseur()
MsgBox ThisWorkbook.Name
End Sub
Il te suffit ensuite de copier ce nom.
Et pourquoi if Not ThisWorkbook.Name ?
C'est
Code:
If ThisWorkbook.Name like "le nom" then MAJ
il me semble (sous-entendu si tu te trouves dans ton classeur référent la macro est lancée sinon MAJ n'est pas lancée).
A+
 
Re : Aide sur un code

Bonsoir le Forum et David

Le référent est 'Compte Rendu' la macro MAJ ne doit pas être lancer donc dans le code il y 'MAJ
lors de la copie, la copie prends le nom de 'Compte Rendu (2)' la Macro MAJ ne doit pas être lancer donc dans le code il y 'MAJ
Puis cette copie prends son nom définitif comme expliqué plus haut 'XX 2013 NN' la Macro MAJ doit être lancer donc dans le code il faut enlever le ' de 'MAJ ou écrire Call MAJ
 
Re : Aide sur un code

Bonsoir le Forum et David

Le référent est 'Compte Rendu' la macro MAJ ne doit pas être lancer donc dans le code il y 'MAJ
lors de la copie, la copie prends le nom de 'Compte Rendu (2)' la Macro MAJ ne doit pas être lancer donc dans le code il y 'MAJ
Puis cette copie prends son nom définitif comme expliqué plus haut 'XX 2013 NN' la Macro MAJ doit être lancer donc dans le code il faut enlever le ' de 'MAJ ou écrire Call MAJ
 
Re : Aide sur un code

Re
Désolé mais là j'ai du mal à te suivre. Peux-tu nous fournir un petit fichier test avec uniquement les macros dont tu as besoin et réexpliquer ce que tu cherches à faire exactement ?
A+
 
Re : Aide sur un code

Bonjour le Forum

Je reprends depuis le début : un code fait planter Excel si il est lancer a un certain moment, par contre il doit être lancer à d'autres.
Ce code est sur un onglet à l'ouverture, cet onglet est copié juste en valeur sans les formules, le référant reste avec ses formules pour la confection d'autre onglets. Ces onglet sont nommés automatiquement.

La partie du code qui m'embête est Call MAJ, pour éviter les plantantes j'ai donc mis ´Call MAJ puis une fois copié sur la copie j'enlève le ´

Ma question est comment modifier le code sur l'onglet copié en enlevant le ´ ou en écrivant Call MAJ et cela de façon automatique ?

J'espère avoir été plus clair.
 
Re : Modification d'un Code automatiquement

Bonjour WDAndCo, david84 et le Forum,

Si je ne me trompe pas, lorsqu'il est sur un autre onglet que celui de "Compte Rendu", il réutilise cette même macro mais aimerait que celle-ci appelle la macro MAJ.

Dans ce cas, cela devrait faire l'affaire :

Code:
Private Sub Worksheet_Activate()
If ActiveSheet.Name <> "Compte Rendu" Then call MAJ
ActiveWindow.View = xlPageBreakPreview
     Columns("A:I").Select
    ActiveWindow.Zoom = True
Range("H12").Select

End Sub
 
Dernière édition:
Re : Modification d'un Code automatiquement

Bonsoir le Forum et Sourcier08

Merci beaucoup, j'essaie cela, mais je pense que l'idée est très bonne.
Le seul souci peut être seras lors de la copie, la feuille s'appelle pendant un court instant "Compte Rendu (2)" et il ne faut pas que la Macro se lance. Il faudrait un truc qui bloque la Macro MAJ si le nom de la feuille commence pas "Compte Rendu" si c'est possible.
Je vais quand même essayé.
 
Dernière édition:
Re : Modification d'un Code automatiquement

Alors ce sera :
Code:
If Not ActiveSheet.Name Like "Compte Rendu*" Then Call MAJ

Ainsi, toute feuille active ne commençant pas par "Compte Rendu" exécutera la macro MAJ.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…