Activer un bouton avec un autre bouton

Bonjour,

Je vous explique mon problème: J'ai un bouton sur ma première feuille et un autre sur ma cinquième feuille. Le bouton de la cinquième feuille a un code vba et le premier lui n'a aucun code. Ce que je souhaiterai faire c'est d'activer le bouton de la cinquième feuille en cliquant sur le bouton de la première feuille.

Merci d'avance

Bonjour,

Il serait bien de fournir les détails ! Boutons ActiveX ou boutons de formulaire ?

Si ActiveX, le code est dans la proc. évènement Click du bouton, sur le module de feuille : en faire une macro autonome dans un module Standard (et appeler cette macro dans la proc. du bouton.

Appeler la même macro dans la proc. évènement du nouveau bouton.

Si bouton de formulaire, la macro est dans un module Standard et affectée au bouton. Affecter la même macro à l'autre bouton.

Cordialement.

Merci pour la réponse, si j'ai bien compris ce que tu m'as dit j'ai pris le code du bouton, je l'ai mis dans une macro et j'ai appelé cette macro avec l'autre bouton. Mais ça ne fonctionne pas, les fichiers à importer ne se placent pas au bon endroit.

Voici le code du bouton :

Private Sub CommandButton21_Click()

' Insérer les donées du fichier SORTIE

Workbooks("TEST1.xls").Worksheets("FINAL").Range("A2:D5000").ClearContents

Workbooks.Open ("D:\Users\Remy.FINGONET\Desktop\SUIVI EQUIPEMENT\SORTIE.xls")

Windows("SORTIE.xls").Activate

Application.Goto Workbooks("SORTIE.xls").Sheets("Sheet1").Range("A3:D5000")

Selection.Copy

Windows("TEST1.xls").Activate

Application.Goto Workbooks("TEST1.xls").Sheets("FINAL").Range("A2")

ActiveSheet.Paste

Application.CutCopyMode = False

Workbooks("SORTIE.xls").Close False

' Insérer les données du fichier ETAT

Workbooks("TEST1.xls").Worksheets("ETATS").Cells.ClearContents

Workbooks.Open ("D:\Users\Remy.FINGONET\Desktop\SUIVI EQUIPEMENT\ETAT.xls")

Windows("ETAT.xls").Activate

Application.Goto Workbooks("ETAT.xls").Sheets("Sheet1").Range("A:J")

Selection.Copy

Windows("TEST1.xls").Activate

Application.Goto Workbooks("TEST1.xls").Sheets("ETATS").Range("A1")

ActiveSheet.Paste

Application.CutCopyMode = False

Workbooks("ETAT.xls").Close False

' Insérer les données du fichier INTERVENANT

Workbooks("TEST1.xls").Worksheets("INTERVENANTS").Cells.ClearContents

Workbooks.Open ("D:\Users\Remy.FINGONET\Desktop\SUIVI EQUIPEMENT\INTERVENANT.xls")

Windows("INTERVENANT.xls").Activate

Application.Goto Workbooks("INTERVENANT.xls").Sheets("Sheet1").Range("A:J")

Selection.Copy

Windows("TEST1.xls").Activate

Application.Goto Workbooks("TEST1.xls").Sheets("INTERVENANTS").Range("A1")

ActiveSheet.Paste

Application.CutCopyMode = False

Workbooks("INTERVENANT.xls").Close False

' Insérer les données du fichier METIER

Workbooks("TEST1.xls").Worksheets("METIERS").Cells.ClearContents

Workbooks.Open ("D:\Users\Remy.FINGONET\Desktop\SUIVI EQUIPEMENT\METIER.xls")

Windows("METIER.xls").Activate

Application.Goto Workbooks("METIER.xls").Sheets("Sheet1").Range("A:J")

Selection.Copy

Windows("TEST1.xls").Activate

Application.Goto Workbooks("TEST1.xls").Sheets("METIERS").Range("A1")

ActiveSheet.Paste

Application.CutCopyMode = False

Workbooks("METIER.xls").Close False

' Insérer les données du fichier MOUVEMENT

Workbooks.Open ("D:\Users\Remy.FINGONET\Desktop\SUIVI EQUIPEMENT\MOUVEMENT.xls")

Windows("MOUVEMENT.xls").Activate

Application.Goto Workbooks("MOUVEMENT.xls").Sheets("Sheet1").Range("A3:D5000")

Selection.Copy

Windows("TEST1.xls").Activate

Dim n As Long

n = Cells(Rows.Count, 1).End(xlUp).Row

Cells(n - 2, 1).PasteSpecial xlPasteValues

Application.CutCopyMode = False

Workbooks("MOUVEMENT.xls").Close False

' Renseigner le Détenteur ou le lieu de stockage

For ligne = 2 To ActiveSheet().UsedRange.Rows.Count

If Range("B" & ligne) = "Mouvement" Then

Range("F" & ligne) = "Magasin"

Else

Range("F" & ligne).FormulaR1C1 = _

"=INDEX(INTERVENANTS!C[-5],MATCH(R[0]C[-4],INTERVENANTS!C[-5],0)+2)"

End If

Next

' Renseigner le Détenteur ou le lieu de stockage

For ligne = 2 To ActiveSheet().UsedRange.Rows.Count

If Range("B" & ligne) = "Mouvement" Then

Range("G" & ligne) = ""

Else

Range("G" & ligne).FormulaR1C1 = _

"=INDEX(METIERS!C[-2],MATCH(RC[-5],METIERS!C[-6],0))"

End If

Next

' Mettre la première colonne en format date

Columns("A:A").NumberFormat = "dd-mm-yyyy hh:mm:ss"

' Trier les données

Call Trier

' Garder le dernier mouvement

Dim i, k

With Range("A2").CurrentRegion

.Sort Key1:=.Range("D2"), Key2:=.Range("A2"), Header:=xlGuess, Orientation:=xlTopToBottom

i = .Rows.Count

Application.ScreenUpdating = False

For k = 2 To i - 1

Do While .Cells(k, 4) = .Cells(k + 1, 4)

Rows(k).Delete

If .Cells(k, 4) = "" Then Exit For

Loop

Next

End With

' Aller directement à la dernière feuille

Application.Goto Workbooks("TEST1.xls").Sheets("FINAL").Range("A1")

' Définir la zone d'impression

ligne = Range("D5000").End(xlUp).Row

ActiveSheet.PageSetup.PrintArea = Range("B1", Cells(ligne, 7)).Address

End Sub

Re,

Inutile de me balancer du code hors des balises Code... c'est le minimum. Je ne lis pas !

Si le code n'est pas indenté, je ne lis pas non plus, spécialement aujourd'hui, pas de temps à perdre !

Et autant que possible un code propre, dépourvu de Select, Activate et autres joyeusetés inutiles, pas le temps de m'énerver à faire du ménage...

Cordialement.

Excuse moi, je n'ai que des bases sur vba, l'organisation c'est pas encore mon truc. J'ai essayé d'organiser un peu tous ça et j'espère que ça sera plus clair.

Private Sub CommandButton21_Click()

' Insérer les donées du fichier SORTIE

    Workbooks("TEST1.xls").Worksheets("FINAL").Range("A2:D5000").ClearContents

    Workbooks.Open ("D:\Users\Remy.FINGONET\Desktop\SUIVI EQUIPEMENT\SORTIE.xls")
        Windows("SORTIE.xls").Activate
            Application.Goto Workbooks("SORTIE.xls").Sheets("Sheet1").Range("A3:D5000")
                Selection.Copy

    Windows("TEST1.xls").Activate
        Application.Goto Workbooks("TEST1.xls").Sheets("FINAL").Range("A2")
            ActiveSheet.Paste

        Application.CutCopyMode = False

        Workbooks("SORTIE.xls").Close False

  ' Insérer les données du fichier ETAT

    Workbooks("TEST1.xls").Worksheets("ETATS").Cells.ClearContents

    Workbooks.Open ("D:\Users\Remy.FINGONET\Desktop\SUIVI EQUIPEMENT\ETAT.xls")
        Windows("ETAT.xls").Activate
            Application.Goto Workbooks("ETAT.xls").Sheets("Sheet1").Range("A:J")
                Selection.Copy

    Windows("TEST1.xls").Activate
        Application.Goto Workbooks("TEST1.xls").Sheets("ETATS").Range("A1")
            ActiveSheet.Paste

    Application.CutCopyMode = False

    Workbooks("ETAT.xls").Close False

' Insérer les données du fichier INTERVENANT

    Workbooks("TEST1.xls").Worksheets("INTERVENANTS").Cells.ClearContents

    Workbooks.Open ("D:\Users\Remy.FINGONET\Desktop\SUIVI EQUIPEMENT\INTERVENANT.xls")
        Windows("INTERVENANT.xls").Activate
            Application.Goto Workbooks("INTERVENANT.xls").Sheets("Sheet1").Range("A:J")
                Selection.Copy

    Windows("TEST1.xls").Activate
        Application.Goto Workbooks("TEST1.xls").Sheets("INTERVENANTS").Range("A1")
            ActiveSheet.Paste

    Application.CutCopyMode = False

    Workbooks("INTERVENANT.xls").Close False

' Insérer les données du fichier METIER

    Workbooks("TEST1.xls").Worksheets("METIERS").Cells.ClearContents

    Workbooks.Open ("D:\Users\Remy.FINGONET\Desktop\SUIVI EQUIPEMENT\METIER.xls")
        Windows("METIER.xls").Activate
            Application.Goto Workbooks("METIER.xls").Sheets("Sheet1").Range("A:J")
                Selection.Copy

    Windows("TEST1.xls").Activate
        Application.Goto Workbooks("TEST1.xls").Sheets("METIERS").Range("A1")
            ActiveSheet.Paste

    Application.CutCopyMode = False

    Workbooks("METIER.xls").Close False

' Insérer les données du fichier MOUVEMENT

    Workbooks.Open ("D:\Users\Remy.FINGONET\Desktop\SUIVI EQUIPEMENT\MOUVEMENT.xls")
        Windows("MOUVEMENT.xls").Activate
            Application.Goto Workbooks("MOUVEMENT.xls").Sheets("Sheet1").Range("A3:D5000")
                Selection.Copy

    Windows("TEST1.xls").Activate

    Dim n As Long
        n = Cells(Rows.Count, 1).End(xlUp).Row
            Cells(n - 2, 1).PasteSpecial xlPasteValues

    Application.CutCopyMode = False

    Workbooks("MOUVEMENT.xls").Close False

' Renseigner le Détenteur ou le lieu de stockage

    For ligne = 2 To ActiveSheet().UsedRange.Rows.Count
        If Range("B" & ligne) = "Mouvement" Then
            Range("F" & ligne) = "Magasin"
        Else
            Range("F" & ligne).FormulaR1C1 = _
                "=INDEX(INTERVENANTS!C[-5],MATCH(R[0]C[-4],INTERVENANTS!C[-5],0)+2)"

    End If
Next

' Renseigner le Détenteur ou le lieu de stockage

    For ligne = 2 To ActiveSheet().UsedRange.Rows.Count
        If Range("B" & ligne) = "Mouvement" Then
            Range("G" & ligne) = ""
        Else
            Range("G" & ligne).FormulaR1C1 = _
                "=INDEX(METIERS!C[-2],MATCH(RC[-5],METIERS!C[-6],0))"

    End If
Next

' Mettre la première colonne en format date

    Columns("A:A").NumberFormat = "dd-mm-yyyy hh:mm:ss"

' Trier les données

    Call Trier

' Garder le dernier mouvement

    Dim i, k
        With Range("A2").CurrentRegion
            .Sort Key1:=.Range("D2"), Key2:=.Range("A2"), Header:=xlGuess, Orientation:=xlTopToBottom
            i = .Rows.Count
            Application.ScreenUpdating = False

        For k = 2 To i - 1
        Do While .Cells(k, 4) = .Cells(k + 1, 4)
            Rows(k).Delete
        If .Cells(k, 4) = "" Then Exit For
            Loop
        Next
   End With

' Aller directement à la dernière feuille

    Application.Goto Workbooks("TEST1.xls").Sheets("FINAL").Range("A1")

' Définir la zone d'impression

    ligne = Range("D5000").End(xlUp).Row
    ActiveSheet.PageSetup.PrintArea = Range("B1", Cells(ligne, 7)).Address

        End Sub

Là je vois une macro sous déclaration de proc. Click du bouton21 (21 déjà ! fichtre ! )

La situation est donc en l'état initial. Je ne vois pas que tu aies déplacé du code pour en faire une procédure appelée par les 2 boutons (l'autre n'apparaît même pas).

NB- Dans les bases de la programmation VBA, il y a la façon d'écrire le code, soit l'indenter dans les règles, de façon qu'il soit particulièrement lisible pour ceux qui doivent travailler sur ce code, la distinction des différents types de procédure et leur portée selon les modules dans lesquels elles sont, le positionnement des déclarations niveau module toujours en tête de module, le positionnement des déclarations dans les procédures toujours en tête de procédure avant tout code exécutable, la déclaration de toutes les variables, autant que possible typées, etc. et l'abandon du recours à l'enregistreur pour éliminer toutes les cochonneries qu'il ne manque jamais d'insérer dans le code...

Merci pour les conseils.

Maintenant le problème, c'est que je souhaite activer le bouton de la 5ème feuille avec celui de la 1ère ou alors le supprimer et créer une macro s'activant avec un bouton sur la 1ère feuille. J'ai essayé de créer une macro avec le code actuel mais le problème c'est que lorsque je lance la macro, celle-ci essaye de réaliser les actions sur la 1ère feuille eu lieu de la 5ème. Y a t'il un moyen de déclencher une macro sur une autre feuille?

Merci d'avance

La macro fait ce que tu lui demandes ! A toi de modifier ce qui ne convient plus !

Rechercher des sujets similaires à "activer bouton"