Création par copie d'une feuille ayant un bouton macro

Bonsoir le forum

Avec Excel 2013 Pro 32bits, sous Win 7 Pro 64bits, j’ai un souci dans un fichier.

Celui-ci se compose d’une feuille ACCUEIL, de feuilles au nom de CLIENTxx et une feuille MATRICE.

La feuille MATRICE comporte un bouton avec une macro renvoyant à la feuille ACCUEIL.

La feuille ACCUEIL comporte un bouton avec une macro CREER UNE NOUVELLE FICHE CLIENT, pour créer une copie de la feuille MATRICE.

Le problème est qu’à la suite de la création de la nouvelle feuille, dans MATRICE, il y a eu création d’un nouveau bouton par-dessus le bouton ACCUEIL, avec pour nom BOUTON xx.

Ceci se passe aussi dans la feuille créée par copie !

Par contre, à l’enregistrement de la macro, la feuille se duplique sans création de nouveaux boutons !

Ce n’est qu’à l’utilisation de la macro que le problème survient.

Si quelqu’un a une idée pour la solution ……..

Ci-joint un fichier exemple

Merci pour l’intérêt qui sera porté à mon souci

Cordialement

Bonsoir,

C'est à toi de savoir ce que tu fais ! Si avant de faire une copie de ta feuille tu ajoutes un bouton au même emplacement, ils vont s'empiler !

Si tu te contentes de copier la feuille, il n'y aura toujours qu'un seul bouton.

NB- Et si tu oubliais l'enregistreur pour écrire ton code, cela t'éviterais de nous infliger des Select inutiles...

Merci MFerrand de ta réponse...... mais elle m'inquiète un peu: je ne pensais pas être sénile au point de ne plus savoir ce que je faisais ! ! !

Ma feuille MATRICE a un bouton ACCUEIL et j'en fais une copie.... point !

Quant à ton NB-, je ne cherche pas à compliquer pour le plaisir, mais comme cette facilité existe dans Excel, il serait dommage qu'un ignare en VBA comme moi, n'en profite pas..... et ce n'est pas pour t'infliger je ne sais quelle torture!

As-tu testé le fichier exemple, pour prendre connaissance du problème?

J'ai parfaitement vu le problème ! VBA fait ce que tu lui demande. Le problème n'est pas de son côté. Relis ton code !

Quant à l'avantage que procurerait l'usage de l'enregistreur, tu me persuaderas difficilement que :

  • produire un code mauvais, toujours nettement plus long que nécessaire, et plus lent qu'un code écrit en connaisance de cause,
  • inciter ses utilisateurs à imiter cette façon d'écrire, donc prendre au départ de très mauvaises habitudes, à l'encontre d'une écriture de code optimisé,
  • ne pas inciter les mêmes à apprendre plutôt à coder correctement en VBA, effet anti didactique donc,
puisse receler un quelconque avantage !

Bonjour et merci

1 - Je n'ai écrit AUCUN code, ne connaissant rien en VBA, donc je ne pouvais pas savoir qu'il fallait douter de celui rédigé par l'enregistreur automatique de macro. J'ai douté des actions faites pendant l'enregistrement, et refaites plusieurs fois !

Ta réflexion narquoise m'a amené quand même à douter de la rédaction du code VBA. N'y connaissant rien, j'ai essayé d'analyser et j'en suis arrivé à la conclusion qu'il fallait supprimer la ligne ActiveSheet.Buttons.Add(150, 29.25, 120, 15.75).Select.

Le test qui a suivi m'a montré que c'était bien cette ligne la source du problème.

2 - je n'ai jamais eu la prétention de vouloir démontrer quoi que ce soit à quiconque, dans aucun des domaines de la vie, et surtout pas sur les avantages éventuels de telles ou telles procédures avec Excel, par rapport à une autre. Bien prétentieux celui qui oserait avoir un tel comportement !

En tout cas merci pour ton aide indirect.

Cordialement

Bonjour,

Ne me fais pas dire ce que je ne dis pas ! Le code enregistré est certes mauvais, mais sauf cas particulier (opération qu'il ne peut enregistrer, ou utiilisation dans un contexte qui ne permet plus au code de s'exécuter...) il fonctionne, en reproduisant très exactement les manipulations que tu as enregistré. Ce qui n'est pas forcément ce que tu voudrais qu'il fasse.

On n'a pas besoin d'être mécanicien pour utiliser une voiture, il convient de savoir toutefois où aller enfiler la clé de contact, où se trouve le réservoir, et quelques autres petites choses...

Tu enregistres pour que l'enregistreur traduise en code des manipulations que tu ne sais écrire directement. Soit ! Pour autant, tu sais ce que tu fais. Si tu enregistres l'ajout d'un bouton, c'est bien pour pouvoir reproduire cet ajout de bouton à chaque exécution du code. Et donc tu ne saurais t'étonner qu'un bouton se crée à chaque fois !

En te signalant que tu ajoutais un bouton, cela devait au moins te faire remémorer ta manipulation d'ajout enregistrée... et dans ce cadre, ce n'est pas une aide indirecte que j'apportais, mais tout à fait directe !

Pour créer ma macro, j'ai cliqué sur ENREGISTRER UNE MACRO, puis clic droit sur l'onglet MATRICE. Sélectionné DEPLACER OU COPIER, puis cocher la case COPIE et laissé "Avant la feuille ACCUEIL".

Et fini par clic sur ARRETER L'ENREGISTREMENT.

Je ne vois pas à quel moment j'ai pu demander une copie spécifique du bouton, en plus de la copie de la feuille contenant ce bouton !

Rechercher des sujets similaires à "creation copie feuille ayant bouton macro"