Perte de macro
walterou
Messages postés
22
Date d'inscription
Statut
Membre
Dernière intervention
-
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
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.
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:
- Perte de macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Reinstaller windows sans perte de données - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
10 réponses
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
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
Bonjour,
Tu peux insérer un dessin. Ensuite clique droit , Affecter une macro. Tu verras ta macro et tu la sélectionnes.
Tu peux insérer un dessin. Ensuite clique droit , Affecter une macro. Tu verras ta macro et tu la sélectionnes.
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.
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.
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:
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
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
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
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
Pour aller dans les macros faire Alt F11 au clavier
http://www.cjoint.com/data3/3AElFnxvgbF.htm
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()
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()
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!
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!
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
https://www.cjoint.com/?3AEohnUuLCH
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
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
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é
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é
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
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
J'ai trouvé une combine pour supprimer tous tes boutons;
Ajoute un bouton à ton UserForm et mets ce code:
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
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.