Copie feuille dans un autre classeur

Résolu
diabolo162 Messages postés 1039 Statut Membre -  
diabolo162 Messages postés 1039 Statut Membre -
Bonjour,

Je sollicite votre aide sur une macro que j'ai composé...
Elle permet de choisir un classeur ("MenuNormalPrintemps")et de choisir aussi une feuille("feuil1"). Elle copie la feuille sélectionner et la colle dans mon dossier de destination ("Menu")sur la feuille ("Menu Normal").
ps :J'utilise cette méthode car le classeur et les feuilles changent souvent de nom.
La macro s'exécute bien mais ne colle pas le texte sur la feuille("Menu Normal")
Il y a t'il une solution pour corriger le probleme?

Merci de votre aide
Je poste mes deux fichiers :https://www.cjoint.com/?BCfqfM2oiQt

25 réponses

  • 1
  • 2
Résumé de la discussion

Problème rencontré avec une macro Excel qui ouvre un classeur choisi et copie une feuille vers Menu, sur la feuille Menu Normal, mais le collage échoue.
Plusieurs réponses suggèrent d'améliorer la gestion d'annulation si la feuille n'est pas choisie, d'utiliser On Error, et d'exécuter Activer/Coller puis enregistrer et fermer le classeur.
Par ailleurs, l'utilisateur rapporte que le collage se fait sous forme d'image et que CutCopyMode semble mal interprété; des retours évoquent des divergences entre Office 2003 et 2007/2010.
D'autres échanges soulignent qu'aucun consensus clair n'émerge sur la cause, avec des hypothèses couvrant l'ordre des commandes, l'état du presse-papier et le comportement d'Office selon la version.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,
    Vous ouvrez quel classeur en premier???
    0
  2. diabolo162 Messages postés 1039 Statut Membre 29
     
    le classeur "Menu" puis la commande du bouton "copie"(pour la macro...
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      merci
      0
  3. diabolo162 Messages postés 1039 Statut Membre 29
     
    Euhhh c'est pas le bouton "copie" mais plutot le bouton "Nouveau menu" dsl
    0
  4. diabolo162 Messages postés 1039 Statut Membre 29
     
    je m'aperçois que ma macro ne copie pas les liaisons....

    peut etre 2 possibilités :

    - comment utiliser la fonction "ActiveCell.FormulaR1C1 " mais je ne sais pas la mettre en place et de plus il me demande le chemin d'acces alors que mon classeur et la feuille peuvent changer de nom
    ou
    -transformer la liaison en texte....avec l'enregistreur de macro ca ne fonctionne pas
    ou
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Pour ne pas tout refaire votre code, je vous propose de passer par le presse-papier pour faire vos copier/coller.

    Code pour Menu.xls bouton "Nouveau menu"

    Private Sub CommandButton3_Click()
    Dim Classeur
    Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
    If Classeur = False Then Exit Sub
    Workbooks.Open Filename:=Classeur
    On Error Resume Next
    'Passe par le presse-papier pour restituer
    Windows("Menu.xls").Activate
    Sheets("Menu Normal").Select
    Range("B1").Select
    ActiveSheet.Paste

    'mise en forme largeur colonne
    Cells.Select
    Cells.EntireColumn.AutoFit
    'vider presse-papier
    Application.CutCopyMode = False
    Application.DisplayAlerts = False
    End Sub

    Code pour Menu Normal Printemps.xls Bouton UserForm "Valider"

    Private Sub CommandButton1_Click()
    Sheets(ComboBox1.Value).Select
    Sheets(ComboBox1.Value).Range("A1:C100").Select
    'copy selection dans presse-papier
    Selection.Copy
    Unload Me
    End Sub

    Bonne suite
    0
  7. diabolo162 Messages postés 1039 Statut Membre 29
     
    ok merci la macro s'execute et met une valeur text mais le soucis est que ca me decale tout d'une colonne (c et d) au lieu de (b et c).
    voici le résultat :https://www.cjoint.com/?3Cfvc5QXxKV

    J'ai aussi l'impression que qq chose tourne en boucle et ma feuille "Menu Normal printemps est figé???? tant que je ne ferme pas le 1er doc et second reste bloqué
    Peut etre mieux vaut refaire tout le code?
    0
  8. diabolo162 Messages postés 1039 Statut Membre 29
     
    Help...
    0
  9. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,
    Le decalage, c'est pour moi: B1 au lieu de A1

    Private Sub CommandButton3_Click()
    Dim Classeur
    Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
    If Classeur = False Then Exit Sub
    Workbooks.Open Filename:=Classeur
    On Error Resume Next
    'Passe par le presse-papier pour restituer
    Windows("Menu.xls").Activate
    Sheets("Menu Normal").Select
    Range("A1").Select
    ActiveSheet.Paste

    'mise en forme largeur colonne
    Cells.Select
    Cells.EntireColumn.AutoFit
    'vider presse-papier
    Application.CutCopyMode = False
    Application.DisplayAlerts = False
    End Sub

    Pour le reste, je regarde.

    A plus
    0
  10. diabolo162 Messages postés 1039 Statut Membre 29
     
    Bonjour,

    merci pour le coup de pouce....

    En fait c'est le classeur "MenuNormalPrintemps"qui plante tout à la fermeture.
    D'ailleurs si j'ajoute la fonction "ActiveWindow.Close" la macro ne s'execute pas
    0
  11. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Private Sub CommandButton3_Click()
    Dim Classeur
    Dim Wb As Workbook

    Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
    If Classeur = False Then Exit Sub
    'arret raffraichisement ecran
    Application.ScreenUpdating = False
    'arret alertes excel
    Application.DisplayAlerts = False

    Set Wb = Workbooks.Open(Filename:=Classeur)
    On Error Resume Next
    'Passe par le presse-papier pour restituer
    Windows("Menu.xls").Activate
    Sheets("Menu Normal").Select
    Range("A1").Select
    ActiveSheet.Paste

    'fermeture Classeur
    Wb.Close

    'mise en forme largeur colonne
    Cells.Select
    Cells.EntireColumn.AutoFit

    'vider presse-papier
    Application.CutCopyMode = False
    'activation alertes EXCEL et raffraichissement
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    End Sub

    Cela devrait le faire

    A bientot
    0
  12. diabolo162 Messages postés 1039 Statut Membre 29
     
    Encore mille fois merci pour ton aide...c'est bien plus pratique avec ta macro...
    j'ai du insérer la macro sur une nouvelle feuille et pour le moment ca l'air de fonctionner... En revanche j'ai toujours le message "image trop grande, la feuille va etre tronquée" sur le classeur "Menu Normal printemps" puis apres tout excel se ferme.

    Sans vouloir abuser de ton aide j'aurais une dernière petite question...

    Est il possible de copier ce userform avec son module qui se trouve dans "Menu Normal printemps" vers le dossier "Menu Normal" mais sachant que les autres userform je n'en veux pas?

    Private Sub CommandButton1_Click()
    'Sheets(ComboBox1.Value).Activate
    'Unload Me

    Sheets(ComboBox1.Value).Select
    Sheets(ComboBox1.Value).Range("B1:C65").Select
    'copy selection dans presse-papier
    Selection.Copy
    Unload Me
    'ActiveWindow.Close
    End Sub

    Private Sub CommandButton2_Click()
    Unload Me
    End Sub

    Private Sub UserForm_Initialize()
    Dim WK As Worksheet
    For Each WK In ThisWorkbook.Worksheets
    ComboBox1.AddItem WK.Name
    Next

    End Sub

    Sub go()
    UserForm1.Show
    End Sub
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Passez moi le fichier.
      0
  13. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,
    J'ai perdu le fil de notre affaire, rappellez moi ce que vous voulez
    0
  14. diabolo162 Messages postés 1039 Statut Membre 29
     
    1/Le fichier "Menu Normal printemps" plante à la fermeture après l'utilisation de la macro

    2/dans le fichier "Menu Normal Printemps" je souhaiterais que Userform1 se copie dans le fichier "Menu Normal" avec son exécutable dans Thisworkbook. est ce réalisable?

    fichiers ci joint :
    https://www.cjoint.com/?3CgqofEBgcc
    0
  15. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    1/
    'ce que vous avez ajoute, qui ne peut pas marcher
    Windows("Menu Normal Printemps.xls").Activate
    ActiveWindow.Save
    ActiveWindow.Close

    'fermeture Classeur
    'ce que vous avez enlevez
    'Wb.Close

    pourquoi avez vous fait cette modif.

    2/ Un UserForm ne peut pas etre mis dans ThisWorkbook

    A+
    0
    1. diabolo162 Messages postés 1039 Statut Membre 29
       
      Wb.Save et Wb.Close ne fonctionne pas.
      Mon fichier "Menu Normal Printemps" ne se ferme pas et je reste bloqué sur ce fichier et me plante excel.
      0
    2. diabolo162 Messages postés 1039 Statut Membre 29
       
      je voudrai copier le userform qui s'execute à l'ouverture du fichier....voila ce que je voulais dire désolé.
      0
  16. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Sub Copie4()
    Dim Classeur
    Dim Wb As Workbook

    Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
    If Classeur = False Then Exit Sub
    'arret raffraichisement ecran
    Application.ScreenUpdating = False
    'arret alertes excel
    Application.DisplayAlerts = False

    Set Wb = Workbooks.Open(Filename:=Classeur)

    On Error Resume Next
    'Passe par le presse-papier pour restituer
    Windows("Menu.xls").Activate
    Sheets("Menu Normal").Select
    Range("B1").Select
    ActiveSheet.Paste

    'Sauvegarde et fermeture Classeur
    Wb.Save
    Wb.Close

    'mise en forme largeur colonne
    Cells.Select
    Cells.EntireColumn.AutoFit

    'vider presse-papier
    Application.CutCopyMode = False
    'activation alertes EXCEL et raffraichissement
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    End Sub

    Ajoute sauvegarde Menu Normal Printemps.xls

    A+
    0
    1. diabolo162 Messages postés 1039 Statut Membre 29
       
      merci pour ta solution mais comme ci dessus la fonction "Wb.Save et
      Wb.Close" ne fonctionne pas.
      si j'ai bien compris ta macron, le fichier "Menu Normal Printemps devrait s'éxécuter en arriere plan...mais en réalité après l'execution de la macro elle s'affiche est me bloque tout
      0
  17. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Chez moi, pas de probleme pour fermer le fichier.

    Essayez ca

    Sub Copie4()
    Dim Classeur, Nom_Fichier
    Dim Wb As Workbook

    Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
    If Classeur = False Then Exit Sub
    'arret raffraichisement ecran
    Application.ScreenUpdating = False
    'arret alertes excel
    Application.DisplayAlerts = False

    Set Wb = Workbooks.Open(Filename:=Classeur)
    Nom_Fichier = Wb.Name
    On Error Resume Next
    'Passe par le presse-papier pour restituer
    Windows("Menu.xls").Activate
    Sheets("Menu Normal").Select
    Range("B1").Select
    ActiveSheet.Paste

    'Save et fermeture Classeur
    Workbooks(Nom_Fichier).Activate
    Workbooks(Nom_Fichier).Save
    Workbooks(Nom_Fichier).Close

    'mise en forme largeur colonne
    Cells.Select
    Cells.EntireColumn.AutoFit

    'vider presse-papier
    Application.CutCopyMode = False
    'activation alertes EXCEL et raffraichissement
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    End Sub

    A+
    0
  18. diabolo162 Messages postés 1039 Statut Membre 29
     
    Désolé de revenir à la charge mais ca fonctionne pas non plus.....
    J'ai bien l'impression qu'il ne se passe plus rien après "ActiveSheet.Paste" et mon second fichier plante toujours avec le message "cette image est trop grande et elle va etre tronquée"
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      Mettez les lignes:
      Application.ScreenUpdating = False
      Application.DisplayAlerts = False
      et
      On Error Resume Next
      en commentaire

      mettez un point d'arret a la ligne
      Windows("Menu.xls").Activate


      lancez et a suivre
      0
    2. diabolo162 Messages postés 1039 Statut Membre 29
       
      Ok il me selectionne les colonnes B1 àC65......dans le fichier "Menu Normal Printemps" et il reste ouvert sur ce fichier
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      Est ce que le programme de Menu.xls s'arrete au point d'arret. Si oui, appuyez sur F8 (impultion) pour faire deroulez le programme en pas a pas.
      0
    4. diabolo162 Messages postés 1039 Statut Membre 29
       
      oui le programme s'arrete sur le point d'arret...ensuite j'arrive jusqu'a "ActiveSheet.Paste" puis c'est le bug!
      -"erreur d'execution'-2147417848...la méthode 'Paste de l'objet'_Worksheet à échoué

      Quelque chose de Bizarre, entre "Range("B1").Select" et "ActiveSheet.Paste" la fonction F8 passe par une autre macro qui se situe sur la Feuil 3
      Je la place ci dessous :
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Intersect(Range("B9:C13,B17:C21,B25:C29,B33:C37,B41:C45,B49:C53,B57:C61"), Target) Is Nothing And Target.Count = 1 Then
      adrcelmemu = Target.Address
      colcelmenu = Target.Column
      UFplat_menu.Show
      End If
      End Sub

      j'ai essayé en enlevant la macro ci dessus mais c toujours pareil.
      0
    5. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,


      Si vous annuler lors du choix de la feuille dans Menu Normal Printemps.xls alors oui il y a :
      -"erreur d'execution'-2147417848...la méthode 'Paste de l'objet'_Worksheet à échoué .
      Je regarde cde que je peux faire

      Pour la macro feuil3
      C'est normal, puisque l'objet de cette macro est d'intercepter les changements de selection cellule sur cette feuille.
      Qui a ecrit tout ca? Il faudrait faire un peu de menage.

      A+
      0
  19. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Je n'avais pas traite l'annulation et fermeture sans choix feuille (fais plusieurs chose a la fois donc...)

    Sub Copie4()
    Dim Classeur, Nom_Fichier
    Dim Wb As Workbook

    Classeur = Application.GetOpenFilename("Classeurs Excel , *.xls")
    If Classeur = False Then Exit Sub
    'arret raffraichisement ecran
    Application.ScreenUpdating = False
    'arret alertes excel
    Application.DisplayAlerts = False

    Set Wb = Workbooks.Open(Filename:=Classeur)
    Nom_Fichier = Wb.Name
    'pour annuler ou fermeture sans choix feuille
    On Error GoTo suite
    'Passe par le presse-papier pour restituer
    Windows("Menu.xls").Activate
    Sheets("Menu Normal").Select
    Range("B1").Select
    ActiveSheet.Paste

    suite:
    'Save et fermeture Classeur
    Workbooks(Nom_Fichier).Activate
    Workbooks(Nom_Fichier).Save
    Workbooks(Nom_Fichier).Close

    'mise en forme largeur colonne
    Cells.Select
    Cells.EntireColumn.AutoFit

    'vider presse-papier
    Application.CutCopyMode = False
    'activation alertes EXCEL et raffraichissement
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    End Sub

    Nous devrions y arriver

    A+
    0
  20. diabolo162 Messages postés 1039 Statut Membre 29
     
    Le fichier "Menu Normal Printemps" plante toujours avec le message "cette image est trop grande et elle va etre tronquée" puis fermeture de toute application excel.
    Sur le fichier ca tourne en boucle et c'est impossible de le fermer...
    Je te fais confiance pour y arriver!!!
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,
      Merci de votre confiance, mais je ne vois pas ce qui ne va pas. Mon PC est en XP, vos fichiers tournent sans probleme. J'ai fait des essais sur un autre PC en W7, sans probleme. La seule difference avec vous, c'est que je ne peux pas faire les mises a jour de liaisons classeurs a cause des repertoires qui n'existe pas sur mon PC. En principe, cela ne devrait pas etre la cause de nos soucis.
      A defaut de trouver le pourquoi du comment (je seche pour l'instant), dites moi s'il ne serait pas possible batir votre application differemment. Est-ce-que tout le code du fichier "Menu Normal Printemps" est utile, ainsi que tous les liens de classeurs??

      A+
      0
    2. diabolo162 Messages postés 1039 Statut Membre 29
       
      non les liens ne sont pas du tout utile...le texte suffirait amplement .

      C'est une macro qui me génère automatiquement le classeur "Menu Normal printemps". Je ne sais pas comment on fait pour modifier format "liens" par un format "texte" par macro
      0
  • 1
  • 2