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

Macro qui écrit d'autres macros

  • Initiateur de la discussion Philou
  • Date de début
P

Philou

Guest
bonjour,

je cherche à faire une macro qui, quand elle s'exécute, permet de créer une nouvelle macro :
je clique sur un bouton qui crée une nouvelle feuile (jusqu'ici pas de pb). sur cette nouvelle feuille, je veux créer un bouton (pas de pb) qui permet de revenir sur la feuille précédente et je n'y arrive pas...

comment puis-je faire??

merci d'avance
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:Macro qui écrit d'autres macros EXCLUSIF !!!

Bonjour Philou, le Forum

En partant du Principe que la Feuille que tu ajoutes et toujours en dernière position d'Index...

En exclusivité voici un Barbatruc qui me sert à mes Démos :



Maintenant pour ton Code voici la suite :


Et oui, j'écris jamais mes Boutons LOL

Bon Après Midi
[ol]@+Thierry[/ol]
 
P

Philou

Guest
Re:Macro qui écrit d'autres macros EXCLUSIF !!!

Merci thierry,
j'arrive à présent à créer le bouton mais j'ai des problèmes dans le code (qui permet le retour à la 1ère feuille)

la feuille surlaquelle je veux revenir en cliquant sur le bouton s'appelle 'récap'
la nouvelle feuille s'appelle 'PO'

peux-tu m'expliquer comment fonctionne ton deuxième code car je ne comprends pas tout...

merci encore
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:Macro qui écrit d'autres macros EXCLUSIF !!!

Re Philou

C'est assez simple, si tu appliques bien la logique des deux codes que je t'ai fournis comme expliqué.

L'important est de créer une Nouvelle Feuille 'After:=.Worksheets(.Worksheets.Count)'

C'est à dire en dernier de l'Ordre Index... (De Gauche à Droite dans l'ordre des Onglets)

La Variable de Type String 'WSNamePrevious' sert à récupérer dynamiquement le Nom de l'avant dernier Onglet 'Worksheets(.Worksheets.Count - 1).Name'

Voilà c'est tout simple...

Il ne reste plus qu'à envoyer ce Nom d'Onglet dans la String VBA pour écrire le Code du CommandButton.

Of course tu peux écrire une Constante plutot qu'une Variable si tel est le besoin...

Const WSName As String ='Recap'


A ce moment là la construction de la STring VBA deviendra ceci
VBA = VBA & 'Private Sub CommandButton1_Click()' & vbCrLf
VBA = VBA & 'Worksheets(''' & WSName & ''').Activate' & vbCrLf
VBA = VBA & 'End Sub' & vbCrLf

Mais bien évidemment ce ne sera plus dynamique, le retour ne se fera que sur la FEuille Spécifiée et plus sur la feuille précédente...

Bonne Fin de Journée
[ol]@+Thierry[/ol]
 

Discussions similaires

Réponses
3
Affichages
555
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…