Perte de macro

walterou Messages postés 22 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
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.

10 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
    1. walterou Messages postés 22 Statut Membre
       
      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
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Tu peux insérer un dessin. Ensuite clique droit , Affecter une macro. Tu verras ta macro et tu la sélectionnes.
    0
    1. walterou Messages postés 22 Statut Membre
       
      Bonjour,

      en fait mes boutons sont déjà des dessins mais elles ne fonctionnent plus.
      J'ai 160 onglets concernés...
      0
    2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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
    3. walterou Messages postés 22 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
       
      je ne comprends pas la notion de "boucle".
      0
    4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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
    5. walterou Messages postés 22 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
       
      non, en fait par onglet j'ai deux macros différentes
      0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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
      1. walterou Messages postés 22 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        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
  4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. walterou Messages postés 22 Statut Membre
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. walterou Messages postés 22 Statut Membre
       
      Je ne vois pas ta macro qui a généré tout ça dans le fichier que tu m'as retourné.
      0
  7. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. walterou Messages postés 22 Statut Membre
       
      J'ai bien réussi à visualiser la code mais comment puis je l'actionner sur mon fichier complet ?
      0
  8. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. walterou Messages postés 22 Statut Membre
       
      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
    2. walterou Messages postés 22 Statut Membre
       
      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
  9. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. walterou Messages postés 22 Statut Membre
       
      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
  10. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
  11. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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