Simplifier une fonction entre deux classeurs

Bonjour,

Je recherche à simplifier une fonction entre deux classeurs genre:

ActiveSheet.Shapes.Range(Array("Bevel 1")).Select Copy .Sheets("b").Range("B1")

Je joins deux classeurs pour explication.

Ouvrir le classeur MENU 2 en premier.

En vous remerciant.

Bien cordialement.

4menu2.xlsm (35.58 Ko)
3sauve-devis2.xlsm (29.74 Ko)

Bonjour Bejouette

Si j'ai bien compris, vous voulez copier la feuille "a" du premier classeur dans le 2ème !?

Si c'est bien ça, voici le code

Sub Bouton1_Cliquer()
    Dim Wbk1 As Workbook, Wbk2 As Workbook
    Dim CheminWbk2 As String
    ' Définir le classeur actif
    Set Wbk1 = ThisWorkbook
    ' Définir et ouvrir le 2ème classeur
    CheminWbk2 = ThisWorkbook.Path & "\" & "SAUVE DEVIS2" & ".xlsm"
    Set Wbk2 = Workbooks.Open(CheminWbk2)
    ' Copier la feuille a dans le 2ème classeur
    Wbk1.Sheets("a").Copy Before:=Wbk2.Sheets(1)
    ' Effacer les variables objet
    Set Wbk1 = Nothing: Set Wbk2 = Nothing
End Sub

@+

Bonjour BrunoM45,

En vous remerciant de vous êtes penché sur ma demande.

Votre réponse n'est pas exactement ce que je recherche.

Je recherche juste à copier le bouton du classeur "menu2" dans onglet "a" sur le classeur "sauve devis2" sur onglet "b".

En revanche, je vous remercie pour la fonction que vous m'avez faite parvenir.

Elle est superbe et va m'être d'une grande utilité.

Bonne réception.

Bien cordialement.

Re,

Attention une erreur c'est glissée (code corrigé dans le précédent post) pour le chemin c'est un slash "\" à moins que vous soyez sur mac

Sinon pour copier/coller le bouton

Sub Bouton1_Cliquer()
    Dim Wbk1 As Workbook, Wbk2 As Workbook
    Dim CheminWbk2 As String
    ' Définir le classeur actif
    Set Wbk1 = ThisWorkbook
    ' Définir et ouvrir le 2ème classeur
    CheminWbk2 = ThisWorkbook.Path & "\" & "SAUVE DEVIS2" & ".xlsm"
    Set Wbk2 = Workbooks.Open(CheminWbk2)
    ' Copier la feuille a dans le 2ème classeur
    Wbk1.Sheets("a").Shapes("Bevel 1").Copy
    With Wbk2.Sheets("b")
      .Activate
      .Range("A1").Select
      .Paste
    End With
    ' Effacer les variables objet
    Set Wbk1 = Nothing: Set Wbk2 = Nothing
End Sub

@+

re,

Je ne suis pas sur mac et, pas de problème ou niveau de "/" ou "\". le classeur sauve devis2 s'ouvre bien dans les deux cas.

Sur la deuxième proposition, il ne copie pas le bouton, ce qui fait que j'ai une erreur d'exécution '424' objet requis à la ligne .Range ("a1").select

Lorsque j'exécute la macro pas à pas, à ce niveau:

Wbk1.Sheets("a").Shapes("Bevel 1").Copy

le bouton n'est pas sélectionné et ne copie pas

je vais de ce pas

Re,

Alors, essayez cette méthode

1) sélectionner le bouton

2) le nommer "Bevel 1"

2021 07 29 11h01 29

Ensuite le code devrait fonctionner sans souci... du moins cela fonctionne également de mon côté

@+

Re

En ayant changé le nom du bouton, cela fonctionne.

Merci.

En revanche, si je ne suis pas sur la page b dans mon classeur sauve devis 2 (plusieurs onglets dans ce classeur) cela ne fonctionne pas.

J'ai essaye:

With Wbk2.Sheets("b").Select

Je vais bien sur la feuille b, mais erreur execution '424' objet requis

J'ai selectionné la feuille b par un .select de cette feuille avant la copie du bouton et rajouté un end with ce qui donne:

CheminWbk2 = ThisWorkbook.Path & "\" & "SAUVE DEVIS2" & ".xlsm"
Set Wbk2 = Workbooks.Open(CheminWbk2)
'SELECTION DE LA FEUILLE B
With Wbk2.Sheets("b").Select

' Copier la feuille a dans le 2ème classeur
Wbk1.Sheets("a").Shapes("bevel 1").Copy
With Wbk2.Sheets("b")
.Range("A1").Select
.Paste
End With
End With
' Effacer les variables objet
Set Wbk1 = Nothing: Set Wbk2 = Nothing

Et.................................

QUE DU BONHEUR mon bouton est bien collé

UN GRAND MERCI A TOI POUR CETTE AIDE

SUPER GENIAL

MERCI BEAUCOUP

Bien cordialement.

Rechercher des sujets similaires à "simplifier fonction entre deux classeurs"