Se connecter avec
S'enregistrer | Connectez-vous

Macro - copie dans un autre classeur

Dernière réponse : dans Programmation

escusez moi, mais je n'arrive pas à réécrire un code que m'avais fait l'enregistreur de macro d'excel :

code départ (il marche...)
  1. Sub nbr_coup()
  2. Workbooks.Open Filename:= "....\suivi prod presses 2007.xls"
  3. ActiveWindow.SmallScroll Down:=24
  4. Range("B38:E43").Select
  5. Selection.Copy
  6. Windows("new_graph_TRG.xls").Activate
  7. Range("I15").Select
  8. ActiveSheet.Paste
  9. Windows("suivi prod presses 2007.xls").Activate
  10. Application.DisplayAlerts = False
  11. ActiveWindow.Close
  12. Application.DisplayAlerts = True
  13. End Sub

ma réécriture :(  (qui ne marche pas !!)
  1. Sub nbr_coup()
  2. Workbooks.Open Filename:= "...\suivi prod presses 2007.xls"
  3. Worksheets(Worksheets.Count).Range("B38:E43").Copy
  4. Workbooks("new_graph_TRG.xls").Worksheets("350t").Range("I15").Paste
  5.  
  6. ' pour fermer le document source sans enregistrer
  7. Windows("suivi prod presses 2007.xls").activate
  8. Application.DisplayAlerts = False
  9. ActiveWindow.Close
  10. Application.DisplayAlerts = True
  11. End Sub

je suis désoler (pour ZEB), mais il reste un activate... la comme ça, je ne sais pas comment l'enlever...

j'ai aussi essayé une autres méthode, mais qui ne marche pas non plus :
  1. Workbooks("....\suivi prod presses 2007.xls").Worksheets(Worksheets.Count).Range("B38:E43").Copy
  2. Workbooks("new_graph_TRG.xls").Worksheets("350t").Range("I15").Paste

c'est sur que la, je simplifie... mais cela ne marche pas !!

je ne comprend pas ce qui ne marche pas et je n'arrive pas a trouver la solution

Autres pages sur : macro copie classeur

Lassé par la pub ? Créez un compte
Expert Programmation

  1. ' Ouvrir un classeur
  2. Workbooks.Open Filename:= "....\suivi prod presses 2007.xls"
  3. ' scroller un peu
  4. ActiveWindow.SmallScroll Down:=24
  5.  
  6. ' sélectionner une zone
  7. Range("B38:E43" ).Select
  8.  
  9. ' la copier dans le presse-papier
  10. Selection.Copy
  11.  
  12. ' mettre au premier plan la fenêtre qui s'appele new_graph_TRG
  13. Windows("new_graph_TRG.xls" ).Activate
  14.  
  15. ' choisir la cellule I15
  16. Range("I15" ).Select
  17.  
  18. ' coller depuis le presse-papier
  19. ' (en espérant que par ailleurs, rien d'autres ne soit aller s'y copier)
  20. ActiveSheet.Paste
  21.  
  22. ' Activer la première fenêtre
  23. Windows("suivi prod presses 2007.xls" ).Activate
  24.  
  25. ' Virer les alertes
  26. Application.DisplayAlerts = False
  27.  
  28. ' Fermer la fenêtre active
  29. ActiveWindow.Close
  30.  
  31. ' Remettre les alertes
  32. Application.DisplayAlerts = True

T'a raison, c'est pa bô :( 

On recommence :
  • Créer un objet classeur en ouvrant un fichier.
  • Copier (sans passer par le presse-papier) dans la cellule I15 (et suivante) de la feuille ? du classeur new_graph_TRG la zone B38:E43 de la feuille ? du classeur ci-avant ouvert.
  • Fermer le classeur.

    1. Dim classeurA As WorkBook
    2. Dim classeurB As WorkBook
    3.  
    4. Set classeurA = WorkBooks.Open("suivi prod presses 2007.xls")
    5. Set classeurB = WorkBooks("new_graph_TRG.xls")
    6.  
    7. classeurA.Worksheets(?).Range("B38:E43").Copy Destination:=classeurB.Worksheets(?).Range("I15")
    8.  
    9. classeurA.Close

    L'est où le blème ???????
    (C'est ton paste qui n'a rien à foutre là ;)  )

    Ici, je mets toujours le Destination après Copy. C'est pour fixer les idées. Dans la vraie vie, je ne le fais pas, pas besoin ;) 

    ok merci, cela marche et c'est plus jolie.

    juste pour info, si je met simplement "close"... il me demande si je veux enregistrer ou non...
    du coup, il faut que je laisse en fin du code
    1. Windows("suivi prod presses 2007.xls" ).activate
    2. Application.DisplayAlerts = False
    3. ActiveWindow.Close
    4. Application.DisplayAlerts = True
    5. End Sub
    Expert Programmation

    :fou:  Pourquoi ce Windows, cet activate et ce ActiveWindow sont-ils revenus :fou: 

    Workbooks("suivi prod presses 2007.xls").Close

    Et si Excel pose des questions stupides :
    Application.DisplayAlerts = False
    Workbooks("suivi prod presses 2007.xls").Close
    Application.DisplayAlerts = True


    Ou encore, on va lire l'aide de Close et on y découvre le paramètre SaveChanges.
    Ou encore mieux encore en plus en plus (merci crétin.fr), on va lire l'aide de Open et on y découvre le paramètre ReadOnly.
    Lassé par la pub ? Créez un compte