Copier 2 feuilles dans un autre fichier

Salut, le code ci-dessous enregistre 2 feuilles du fichier excel ouvert, vers 2 feuilles de meme nom d'un fichier ferme. Il faudrais le modifier pour qu'il n'enregistre pas les 2 premieres lignes de ces 2 feuilles.

Dim adr$, fichier$
    adr = ThisWorkbook.Path
      Sheets(Array(Feuil1.Name, Feuil2.Name)).Copy   'nom des feuilles à enregistrer

    fichier = Mid(OpenFile, 1, Len(OpenFile) - 4)
    If CheckBox1 Then fichier = fichier Else fichier = TextBox1.Value

    ActiveWorkbook.SaveAs adr & "\" & fichier & ".ass"

Merci!

Bonjour

Dans le code rajoutes (pas testé)

Dim adr$, fichier$
  adr = ThisWorkbook.Path
  Sheets(Array(Feuil1.Name, Feuil2.Name)).Copy   'nom des feuilles à enregistrer
  Sheets(1).Rows("1:2").Delete
  Sheets(2).Rows("1:2").Delete
  fichier = Mid(OpenFile, 1, Len(OpenFile) - 4)
  If CheckBox1 Then fichier = fichier Else fichier = TextBox1.Value

  ActiveWorkbook.SaveAs adr & "\" & fichier & ".ass"

parfait! On vient d'enregistrer une feuille moins les 2 premieres lignes vers une feuille d'un autre fichier.

Je dois maintenant ouvrir cet autre fichier et le copier vers mon application a partir de la ligne 3 (place d'origine).

Il faudrais changer "wbkc.Sheets("ASS").Cells pour que la destination soit la ligne 3 et plus.

Je dois proceder ainsi car dans les 2 premieres lignes de mon tableau, j'ai des boutons de macro et des dessins.

wbks.Sheets("ASS").Cells.Copy  wbkc.Sheets("ASS").Cells

Bonjour Capucin banzai le forum

wbks.Sheets("ASS").Range("A1:V" & wbks.Sheets("ASS").Range("A" & Rows.Count).End(xlUp).Row).Copy wbkc.Sheets("ASS").Range("A3")

a +

Papou

BONJOUR PAPOU ca fonctionne. Par contre j'aurais du te mentionner que les 2 feuilles a copier se trouve sur 2 lignes de codes separes. J'ai essaye de separe le code, mais j'obtiens une erreur pour la premiere feuille a copier avec :

'wbks.Sheets("ASS").Range("A" & Rows.Count).End(xlUp).Row.Copy wbkc.Sheets("ASS").Range("A3")

Private Sub CommandButton1_Click() 'bouton <open>    (Papou)
    Dim adr$, wbks As Workbook, wbkc As Workbook
    adr = ThisWorkbook.Path
    If ListBox1.ListIndex = -1 Then Exit Sub
    Set wbkc = ThisWorkbook
    Set wbks = Workbooks.Open(adr & "\" & ListBox1.List(ListBox1.ListIndex, 0))
    OpenFile = ListBox1  'variable public
    If Not Estlà("ASS") Then
        MsgBox "La feuille ASS n'existe pas dans le classeur: " & wbks.Name, , "Feuille ASS absente": wbks.Close 0: Exit Sub
    Else
        'wbks.Sheets("ASS").Cells.Copy wbkc.Sheets("ASS").Cells
            wbks.Sheets("ASS").Range("A1:V" & wbks.Sheets("DONNEES").Range("A" & Rows.Count).End(xlUp).Row).Copy wbkc.Sheets("ASS").Range("A3")
            'wbks.Sheets("ASS").Range("A" & Rows.Count).End(xlUp).Row.Copy wbkc.Sheets("ASS").Range("A3")
    End If
    wbks.Sheets("DONNEES").Cells.Copy wbkc.Sheets("DONNEES").Cells
    wbks.Close
    wbkc.Sheets("ASS").Select
    Cells(1, 1) = "FICHIER: " & OpenFile
    Me.Hide  'On cache le userform
    ActiveCell.Select 'truc pour enlever le focus au bouton
End Sub

Bonjour Capucin le forum

Michel, ce qui caractérise tes demandes c'est le fait que rien n'est jamais demandé complètement,

tu demandes mais c'est de l'improvisation, un coup une feuille un coup deux feuilles puis on retires deux lignes puis etc etc....

Un fichier exemple, des explications du but recherché et on répond en 1 seule fois à tout

Mais en lisant tes posts j'ai le sentiments que tu découvres ce que tu veux au fur est à mesure des posts

enfin bref

si tu obtiens une erreur déjà est-ce que tu as dans ton fichier une feuille nommée ASS ?

deuxièmement je ne vois à aucun moment le fait que tu renommes la feuil1 ou 2 en ASS alors la macro il faut l'adapter et surtout deviner ce que tu veux alors un fichier exemple avec ce que tu veux et je ferai

a+

papou

Papou, je dois te donner raison, mes demandes change au fur et a mesure, malheureusement. Je tente d'atteindre l'objectif finale d'un coup mais mon application est pas mal grosse et une modification en amene un autre.

Il y a eu pas mal de developpement alors beaucoup d'essai.

Si souvent, je n'envoi qu'un bout de code, c'est que je crois que ce sera plus simple pour vous, mais de toute evidence, je me trompe..

Depuis que je met mes boutons de macros et dessin dans les 2 premieres lignes de mes tableaux "feuille ASS" et feuille"DONNEES", je me suis retrouver avec des problemes lorsqu'apres avoir sauvegarder ces 2 feuilles, je les ouvres a nouveaux dans mon application. D'ou la demande de ne pas tenir compte des 2 premieres lignes lors de l'enregistrement et et de la recuperation.

En ce moment, puisque je travaille sur l'enregistrement et la recuperation de fichier, ca va m'obliger a fournir le dossier au complet, je peux essayer de le faire en moins de 300K, mais on ne pourra pas faire "compiler" car la feuille"ASS" devra etre reduite. A moins que je t'envoi ca par veritable couriel a l'avenir. Par contre je ne sais pas si les autres membres du Forum accepterais ca?

Reviens-moi la dessus!

Pour resumer: j'essai de recuperer les feuilles ASS et DONNEES d'un fichier et de les mettre dans feuilles ASS et DONNEES de mon fichier ouvert. Ta ligne de code fonctionne mais c'est etonnant puisqu'on ne specifie que la feuille "ASS" pour la copie ???

j'obtiens l'erreur : "erreur defini par l'object ou l'application" lorsque j'essai de splitter ta ligne de code (qui est fonctionnel) en 2 (1 pour la feuille ASS et une pour la feuille Donnees). Vois-tu mon erreur pour la feuille "ASS" ?

'wbks.Sheets("ASS").Range("A1:V" & wbks.Sheets("DONNEES").Range("A" & Rows.Count).End(xlUp).Row).Copy 
wbkc.Sheets("ASS").Range("A3")
wbks.Sheets("ASS").Range("A1:V").Copy wbkc.Sheets("ASS").Range("A3")

Re Capucin le forum

Ok Michel j'ai compris mais ce que toi tu ne comprend pas c'est que sans fichier on imagine mais on est jamais sur

wbks.Sheets("ASS").Range("A1:V").Copy wbkc.Sheets("ASS").Range("A3")

comment veux tu que cela marche?? tu veux copier A1:V et tu ne mets pas la ligne de fin de plage, excel ne peut pas la deviner!!!

wbks.Sheets("ASS").Range("A1:V" & wbks.Sheets("DONNEES").Range("A" & Rows.Count).End(xlUp).Row).Copy wbkc.Sheets("ASS").Range("A3")

Ce code c'est tout sur la même ligne pas comme tu as fait, mais là aussi sans fichier !!! ???,

Avec un dossier avec deux fichiers un pour la copie et pour la commande comme moi je t'avais fait un dossier Capucin mais tu n'as pas continué( c'était trop bien je suppose?)

Alors on va avancer mais pas à pas de géant

a+

Papou

La fin de plage, je n'avais pas remarque ca! erreur de debutant. Merci!

Papou je vais essayer de te concocter un beau dossier. Le dossier capucin, n'est plus a jour, donc si tu ne vois pas trop d'inconvenient, il sera different! Ca devrais t'aider.

J'essaierai de te l'envoyer malgre la grosseur, meme compresse!

Par contre, j'aimerais que tu comprenne les occasionnelles changements de direction dans mon developpement. Dis toi, qu'environ 80% du code que les membres m'ont envoyes sont la pour rester. Donc tes travaux ne sont jamais inutiles.

Voila je t'envoi un dossier Capucin v3 qui contient tout ce que tu as besoin pour mon probleme. J'ai compris ton explication sur mon erreur, mais il y a trop de code sur la meme ligne, je ne m'y retrouve plus. Si tu peux corriger la ligne et l'ecrire en 2 lignes, ce serais mieux pour moi.

Les instructions se trouve sur la feuille "ASS".

86capucin-v3.zip (187.39 Ko)

Bonjour Capucin le forum

bon alors voilà le dossier en retour avec la copie des deux feuilles ASS et DONNEES mais la feuille DONNEES commence à la ligne 2 et non la 3 comme tu avais dit

J'ai désactivé la macro événementielle de la feuille ASS pour que tu vérifies si la copie que tu souhaites et bien complète

J'ai rajouté aussi un effacement de la feuille ASS et DONNEES avant la copie au cas ou les plages copiées seraient plus petite que les plages remplacées.

Voilà a toi de tester

a+

papou

PS: tes feuilles sans numéro de lignes et sans entête de colonne, c'est une SUPER IDEE, super bien pour s'y retrouver!!

32capucin-v4.zip (278.42 Ko)

La, j'arrive a comprendre les formules.

Les index de ligne et colonne sont maintenant la!

Belle initiative de faire un clear des 2 tableaux avant la copie. Par contre, j'ai deja mis ca a l'ouverture, dans "thisworksheet". Tu peux confirmer?

Le tableau "donnees" commence effectivement a la 2 ieme ligne. J'esperais qu'on puisse separe la ligne de code en 2 pour que je le laisse comme ca. C'est parfait comme tu l'as ecris.

Par contre, j'ai un petit probleme avec la feuille "DONNEES", le resultat est tres bizarre, tu as peut etre remarque. Pour regler ca, il faut que je desactive le sub evenementielle de la feuille donnees. Je peux la reactiver seulement apres le transfert des fichiers. Tu peux aller voir ce code. Y aurait il un moyen pour activer cette macro par macro?

20capucin-v5.zip (215.45 Ko)

Bonjour Capucin le forum

oui on peut séparer et mettre la macro dans un module mais tu veux la lancer quand ?

Pourquoi avoir mis une procédure événementielle ??

cette macro devra être lancée quand?

chez moi elle bug sur le hex !!

a+

papou

C'est Banzai qui l'a place la, si je me souviens.

Cette macro ne sert que lorsque je veut aller editer le contenu de cette feuille (DONNEES), dont elle peut etre lance que lorsque j'irai dedans, peut etre avec un bouton, pour le moment je clic sur l'onglet "DONNEES".

Le but de cette macro est de pouvoir ajouter des valeurs hexa dans la colonne A par un glisser de la souris. Elle fonctionne tres bien. Par contre, je me suis rendu compte que je ne peut plus faire de copier coller sur cette feuille, mais je peux vivre avec.

Re Capucin le forum

Oui Michel tu peux vivre avec mais on va faire pour que cela marche tout le temps

je cherche le pourquoi de mon bug sur hex et je modifierai la macro enfin si j'arrive à trouver le pourquoi du bug

il est sur que les macro événementielle lorsque l'on fait des copiés collés c'est pas le top

a+

papou

Parfait! de mon cote, j'investigue encore. Je me demande presentement si le fait d'avoir des cellules fusionnee dans la colonne C de la feuille DONNEES, nous causerais pas des problemes.

J'ai trouve quelque chose d'important en rapport avec la macro evenementilelle. Le tableau "DONNEES" qu'on veut recuperer doit absolument avoir une entete ou du moins une ligne vide, si non le resultat est bizarre. Par contre l'entete aparait a ce moment la 2 fois dans la feuille du fichier ouvert!!!

Je t'envoi Capucin 6 avec un fichier avec entete. Je crois que le fichier "DONNEES" de la version 5 que je t'ai envoye etait alterer, justement pas le fichier d'application, j'ai du faire un enregistrement avant la fermeture par erreur.

Voici donc le dossier Capucin 6 .

28capucin-v6.zip (240.02 Ko)

Re Capucin le forum

oui si tu ne me donne pas les bonnes armes pour me battre je perd à coup sur

je regarde

a+

papou

Peut etre cela pourra t'aider:

pour reproduire le probleme il faut mettre une valeur hexa dans A1 (feuille donnee du fichier), le resultat devient alors erronne dans l'application. Cette valeur se retrouve dans A2 de l'application, ce qui est normal. On dirait que la macro evenementiel n'aime pas avoir une valeur hexa dans A2, du moins lorsque ca vient d'une recuperation.

Si je met autre chose dans A1 et meme si je laisse la cellule vide, ca fonctionne bien!

Re Capucin le forum

alors à ce moment là dans la feuille DONNEES on peut coller la plage en A3 au lieu de coller en A2?

ou supprimer la valeur en A1 car moi je n'arrive pas à faire fonctionner la macro le hex bug j'ai une référence manquante et je ne la trouve pas!!

a+

papou

Rechercher des sujets similaires à "copier feuilles fichier"