Perte de macro

Fermé
walterou Messages postés 22 Date d'inscription mercredi 16 juillet 2014 Statut Membre Dernière intervention 23 mai 2016 - 29 janv. 2015 à 14:25
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 30 janv. 2015 à 16:14
Bonjour,
après avoir déplacé des onglets d'un classeur Excel vers un autre , j'ai perdu les liens que j'avais avec des macros.
Je m'explique : dans mes onglets j'ai créé un bouton qui active une macro.
Après le déplacement de mes onglets ces boutons ne sont plus actifs.
Existe-t-il une solution à ce problème ?
Merci d'avance de vos réponses.
A voir également:

10 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 398
29 janv. 2015 à 14:29
Bonjour
Qu'appelez vous déplacer un onglet ?
si c'est un copier coller vers un autre classeur,il faut que la macro soit aussi dans le classeur, ou la recoller dans l'onglet si elle appartient au code de la feuille
crdlmnt
0
walterou Messages postés 22 Date d'inscription mercredi 16 juillet 2014 Statut Membre Dernière intervention 23 mai 2016
29 janv. 2015 à 14:40
oui c'est bien un copier coller d'un classeur vers un autre.
La macro est visible de tous les classeurs et elle est bien active si je ne passe pas par le bouton.
Mon problème c'est que mes boutons ne sont plus actifs.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
29 janv. 2015 à 14:43
Bonjour,

Tu peux insérer un dessin. Ensuite clique droit , Affecter une macro. Tu verras ta macro et tu la sélectionnes.
0
walterou Messages postés 22 Date d'inscription mercredi 16 juillet 2014 Statut Membre Dernière intervention 23 mai 2016
29 janv. 2015 à 14:53
Bonjour,

en fait mes boutons sont déjà des dessins mais elles ne fonctionnent plus.
J'ai 160 onglets concernés...
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
29 janv. 2015 à 15:08
La macro est visible de tous les classeurs et elle est bien active

Si tu n'as qu'une seule macro et que tous tes boutons utilisent cette macro, c'est facile.Tu fait une boucle sur tous tes onglets et tu supprimes tous tes boutons. Ensuite tu mets un bouton sur ton 1er onglet, tu lui affectes ta macro. Ensuite tu fais une boucle sur tous tes onglets en copiant ce bouton. J'ai essayé manuellement sur 3 feuille cela fonctionne.
0
walterou Messages postés 22 Date d'inscription mercredi 16 juillet 2014 Statut Membre Dernière intervention 23 mai 2016 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
29 janv. 2015 à 15:24
je ne comprends pas la notion de "boucle".
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
29 janv. 2015 à 15:31
avant de continuer, as-tu qu'une seule macros et qu'un seul bouton par onglet qui agit sur cette macro?.
C'est important pour la suite
0
walterou Messages postés 22 Date d'inscription mercredi 16 juillet 2014 Statut Membre Dernière intervention 23 mai 2016 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
29 janv. 2015 à 15:33
non, en fait par onglet j'ai deux macros différentes
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
29 janv. 2015 à 15:59
Tout d'abord tu fait une copie de ton classeur. Il va falloir bien suivre la procédure .
Alt F11 pour accéder, tu inseres une UserForm avec 2 boutons, avec ce code:

Private Sub CommandButton1_Click()
'Supprime les boutons
Dim Ws As Worksheet
 'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris
'en compte.
For Each Ws In ThisWorkbook.Worksheets
ActiveSheet.Shapes.SelectAll
Selection.Delete
Next Ws
End Sub
Private Sub CommandButton2_Click()
'Copie les boutons
Dim Ws As Worksheet
 'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris
'en compte.
ActiveSheet.Shapes("Rectangle 9").Select ' a adapter au bouton que tu auras mis
Selection.Copy
For Each Ws In ThisWorkbook.Worksheets
Ws.Select
 Range("D21").Select ' a adapter
    Ws.Paste
Next Ws
End Sub
Private Sub UserForm_Initialize()
CommandButton1.Caption = "Supprimer boutons"
CommandButton2.Caption = "Copier boutons"
End Sub


Tu vas d'abord supprimer tous tes boutons

Ensuite dans ton 1er onglet tu mets un bouton affecté à une 1ere macro

Tu rectifies dans le code copier les boutons le nom du bouton et eventuellement sa position

Ensuite dans ton 1er onglet tu mets un second bouton affecté à une 2eme macro

Tu rectifies dans le code copier les boutons le nom du bouton et sa position

Bon courage

@+ Le Pivert
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
29 janv. 2015 à 16:09
J'ai oublié de te dire que la copie des boutons se fait en 2 fois!

Ensuite dans ton 1er onglet tu mets un bouton affecté à une 1ere macro
Tu rectifies dans le code copier les boutons le nom du bouton et eventuellement sa position
Copie boutons

Ensuite dans ton 1er onglet tu mets un second bouton affecté à une 2eme macro
Tu rectifies dans le code copier les boutons le nom du bouton et sa position
Copie boutons
0
walterou Messages postés 22 Date d'inscription mercredi 16 juillet 2014 Statut Membre Dernière intervention 23 mai 2016 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
29 janv. 2015 à 16:40
merci à toi pour toutes ces informations.
Je ne vais pas pouvoir tester ce soir mais je mets ça en place dès demain matin
merci encore pour ton aide
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
30 janv. 2015 à 08:18
Si tu as d'autres shapes (bouton, graphique etc) sur tes feuilles ils vont être effacer. Pour éviter cela il ne faudrait effacer que les boutons concernés. Mais ils faut qu'ils aient le même nom. Si c'est le cas voici le code:

Option Explicit
Private Sub CommandButton1_Click()
'Supprime les boutons
Dim Ws As Worksheet
 'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris
'en compte.
For Each Ws In ThisWorkbook.Worksheets
Ws.Select
ActiveSheet.Shapes("Rectangle 10").Delete 'a adapter au nom du bouton
Next Ws
End Sub
Private Sub CommandButton2_Click()
'Copie les boutons
Dim Ws As Worksheet
 'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris
'en compte.
ActiveSheet.Shapes("Rectangle 10").Select ' a adapter au bouton que tu auras mis
Selection.Copy
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name = "Feuil1" Then ' a adapter au 1er onglet pour éviter un 2ème bouton sur la feuille1
'rien
Else
Ws.Select
 Range("D21").Select ' a adapter
    Ws.Paste
    End If
Next Ws
End Sub
Private Sub UserForm_Initialize()
CommandButton1.Caption = "Supprimer boutons"
CommandButton2.Caption = "Copier boutons"
End Sub

0
walterou Messages postés 22 Date d'inscription mercredi 16 juillet 2014 Statut Membre Dernière intervention 23 mai 2016
30 janv. 2015 à 10:26
Bonjour,

Merci encore de ton aide précieuse mais je ne sui pas assez calé en macro pour mettre en application tous tes conseils.
Ci dessous un lien vers une partie de ce fichier, si tu peux procéder à la modification je t'en remercie par avance. Je ferai ensuite la modification à l'ensemble de mon classeurs.
https://www.cjoint.com/?3AEkHCgSYC7
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
30 janv. 2015 à 11:23
Voici ton classeur, mais il n'y a qu'une macro Test CM2 seulement

Pour aller dans les macros faire Alt F11 au clavier


http://www.cjoint.com/data3/3AElFnxvgbF.htm
0
walterou Messages postés 22 Date d'inscription mercredi 16 juillet 2014 Statut Membre Dernière intervention 23 mai 2016
30 janv. 2015 à 11:50
Je ne vois pas ta macro qui a généré tout ça dans le fichier que tu m'as retourné.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
30 janv. 2015 à 11:57
Quand tu es dans l'éditeur, il y a en haut à gauche les feuilles, en dessous il y a Feuille tout seul, tu cliques dessus tu verras l'UserForm1, tu cliques dessus. Ensuite pour allez dans le code tu doublecliques sur un bouton.
En dessous Feuille il y a Modules, tu cliques dessus il y a ton module, tu cliques dessus et tu verras le code de ta macro: Sub impression_test_CM2()

0
walterou Messages postés 22 Date d'inscription mercredi 16 juillet 2014 Statut Membre Dernière intervention 23 mai 2016
30 janv. 2015 à 12:06
J'ai bien réussi à visualiser la code mais comment puis je l'actionner sur mon fichier complet ?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
30 janv. 2015 à 12:18
Pour lancer l'UserForm1

Tu sélectionnes d'abord ton 1er onglet et ensuite Alt F11 pour allez dans l'éditeur

ensuite quand tu es sur l'UserForm1 tu fait F5 au clavier , elle va s'afficher sur ton onglet



Dans le code il faut d'abord que tu suivent les instructions que je t'ai données!
Tu supprimes d'abord Ellipse 1, quand c'est fait tu fermes l'UserForm pour revenir au code, tu changes Ellipse 1 en Ellipse 2 et relance ton UserForm et tu supprimes ton 2ème bouton. tu fermes l'UserForm1

Ensuite dans ton 1er onglet tu mets un bouton affecté à une 1ere macro
Tu rectifies dans le code copier les boutons le nom du bouton et eventuellement sa position
Copie boutons

Ensuite dans ton 1er onglet tu mets un second bouton affecté à une 2eme macro
Tu rectifies dans le code copier les boutons le nom du bouton et sa position
Copie boutons

Mais je n'ai pas trouvé de 2ème macro!

0
walterou Messages postés 22 Date d'inscription mercredi 16 juillet 2014 Statut Membre Dernière intervention 23 mai 2016
30 janv. 2015 à 13:50
Je suis désolé mais mes compétences sontQa trop limitées pour comprendre la procédure !
Quand je parviens à faire apparaitre l'UserForm sur mon onglet et que je clic sur supprimer un code d'erreur apparait : erreur d'exécution 1004
0
walterou Messages postés 22 Date d'inscription mercredi 16 juillet 2014 Statut Membre Dernière intervention 23 mai 2016
30 janv. 2015 à 13:58
je viens de refaire un lien avec le fichier allégé qui comporte bien les deux boutons et les deux macros
https://www.cjoint.com/?3AEohnUuLCH
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
30 janv. 2015 à 15:31
Voilà, je t'ai fait une interface avec un bouton approprié à chaque action. Tu n'auras même pas besoin d'allez modifier le code.

La seule obligation:

Après avoir supprimé tous les boutons. Il n'en restera que 2 sur l'onglet 1. Il faudra que tu leur affectes une macro à chacun avant de copier tous les boutons

http://www.cjoint.com/data3/3AEpL4QMP0w.htm
0
walterou Messages postés 22 Date d'inscription mercredi 16 juillet 2014 Statut Membre Dernière intervention 23 mai 2016
30 janv. 2015 à 15:47
j'ai ouvert mon fichier Excel et me suis positionné sur le 1er onglet.
Comme précisé, j'ai ouvert l'UserForm (alt F11) puis F5
les 4 boutons de commande apparaissent sur mon onglet.
Quand je clic sur "supprimer test ce1" j'ai un message d'erreur "erreur d'exécution 1004 : la méthode 'select de l'objet'_worksheet'a échoué
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
30 janv. 2015 à 16:06
Le classeur que je t'ai transmis ne peux plus être modifier. Les nouveaux boutons ne sont plus Ellipse 1 et 2, mais 3 et 4. C'est un exemple!

Il faut prendre ton classeur original après avoir fait une copie (important) et mettre une UserForm et des boutons et recopier le code.

Je tiens aussi à te signaler que tes 2 macros buggées. J'ai corrigé, ceux sont les lignes qui sont en vert. Il faudra aussi les corriger sur ton classeur original, en mettant une apostrophe devant ces lignes.

Je ne peux pas faire plus. Je sais que c'est compliqué pour un néophyte en vba!

Bon courage
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
30 janv. 2015 à 16:14
J'ai trouvé une combine pour supprimer tous tes boutons;
Ajoute un bouton à ton UserForm et mets ce code:

Private Sub CommandButton5_Click()
'Supprime les boutons
Dim Ws As Worksheet
 'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris
'en compte.
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name = "1" Then
'rien
Else
Ws.Select
ActiveSheet.Shapes.SelectAll
Selection.Delete
End If
Next Ws
End Sub

0