IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème pour copier une feuille


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2013
    Messages : 88
    Points : 52
    Points
    52
    Par défaut Problème pour copier une feuille
    Bonjour à tous,

    j'ai écrit une macro pour créer un fichier avec 5 onglets et nommer les différents onglets.
    voici ma macro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If Workbooks(book1).Sheets("P1").Cells(ligne, 1).Value = 0 Then
    For n = 1 To 5 - Worksheets.Count
        Sheets.Add after:=Worksheets(Worksheets.Count)
    Next
        Worksheets(1).name = ("Achat")
     
        worksheets(2).name=("vente")
     
        worksheets(3).name=("avoir")
    toutefois sur le worksheets crée, j aimerai copier une feuille d un fichier nomme str, feuille ("achat 1") et la coller sur le worksheets(1).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        'Workbooks(str).Sheets("achat 1").Copy
        'Worksheets(1).Sheets("achat").Paste
    j ai essayé ca mais ca ne marche pas.

    Sauriez vous comment remédier à cela?

    bien cordialement,

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour essai de voir comment tu peux adapter ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim wk1 As Workbook, wk2 As Workbook
     
    'classeur qui lance la macro et dans lequel je colle ma feuille
    Set wk1 = ThisWorkbook
     
    'classeur qui contient le feuille que je veux copier
    Set wk2 = Workbooks("Test.xlsx")
     
    'je copie ma feuille dans mon classeur avant la feuille 1
    wk2.Sheets("Mafeuille").Copy Before:=wk1.Sheets(1)
     
    'je copie toutes les cellules de ma feuille dans mon classeur
    'wk2.Sheets("Mafeuille").Cells.Copy wk1.Sheets("Feuil1").Range("A1")
    Attention cela nécessite que les deux classeurs soient ouvert.
    Ici j'insére une copie de ma feuille dans mon classeur 1.
    Avec l'autre ligne que j'ai mis en commentaire, je copie toutes les cellules de ma feuille dans mon autre feuille.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Plutôt que de créer une feuille et de vouloir insérer du contenu, pourquoi ne pas copier ta feuille du document 'str' dans ton fichier et la renommer ?

    Voici le code pour le copier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(File1).Sheets(XXX).Copy Before:=Workbooks(File2).Sheets(YYY)

  4. #4
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2013
    Messages : 88
    Points : 52
    Points
    52
    Par défaut
    merci pour ta réponse,

    le problème est que le classeur ou je colle ma feuille est le classeur que je crée à partir de la macro.

    du coup je ne sais pas comment le définir

  5. #5
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    peux tu mettre le code entier stp.

  6. #6
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2013
    Messages : 88
    Points : 52
    Points
    52
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Sub create_report(nom, str, Book1, resultat_p, resultat_o, resultat_i, resultat_a, ligne)
    On Error Resume Next
    Workbooks.Add
     
     
     If Workbooks(Book1).Sheets("P1").Cells(ligne, 1).Value = 0 Then
    For n = 1 To 12 - Worksheets.Count
        Sheets.Add after:=Worksheets(Worksheets.Count)
    Next
        Worksheets(1).name = ("Achat")
     
        'Workbooks(str).Sheets("Achat 1").Copy
        'Worksheets(1).Sheets("Achat").Paste

  7. #7
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    ou tu peux essayer ceci:
    remplace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Workbooks(str).Sheets("achat 1").Copy
        'Worksheets(1).Sheets("achat").Paste
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(Str).Sheets("achat 1").Cells.Copy ThisWorkbook.Sheets("achat").Range("A1")
    cela implique que tu as défini ta variable str en string avec comme nom de fichier quelque chose comme "yyyy.xls" (ou une autre extension)

  8. #8
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2013
    Messages : 88
    Points : 52
    Points
    52
    Par défaut
    je ne vois pas quand vous avez collé dans le code

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Bonjour,

    je comprends pas l'utilité de ta boucle FOR ...



    tiens pour créer une feuille "Achat" et y copier les données de la feuille "Achat 1" .. ( un seul classeur celui contenant ce code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Dim shDest As Worksheet
        Dim shSource As Worksheet
     
       'Création nouvelle feuille
        Set shDest = ThisWorkbook.Sheets.Add
        shDest.Name = "Achat"
     
       'Définition de la feuille à copier (source)
        Set shSource = ThisWorkbook.Sheets("Achat 1")
     
       'Copie..
        shSource.Cells.Copy shDest.Cells

  10. #10
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Workbooks(Str).Sheets("achat 1").Cells.Copy ThisWorkbook.Sheets("achat").Range("A1")
    cette ligne indique que tu veux copier toutes les cellules de la feuille achat 1 du classeur str dans la feuille achat du classeur qui lance la macro.
    ici pas besoin de paste.

    toutefois je rejoins bbil je ne vois pas vraiment l'utilité de la boucle

  11. #11
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2013
    Messages : 88
    Points : 52
    Points
    52
    Par défaut
    c est parce qu il y a la création de 12 onglets dans le fichier

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par bentor22 Voir le message
    c est parce qu il y a la création de 12 onglets dans le fichier
    ok. .. mais 12 onglets "Achats" ?

Discussions similaires

  1. [XL-2007] Problème pour copier une tâche project dans un fichier Excel
    Par Miguel973 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 21/04/2011, 11h58
  2. Réponses: 2
    Dernier message: 20/10/2008, 10h32
  3. problème pour lire une feuille excel a partir d'Access
    Par h_adil dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/07/2008, 23h44
  4. [E-03] Erreur pour copier une feuille
    Par yoannbdxafr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/01/2008, 05h39
  5. [VBA-E] Erreur pour copier une feuille
    Par Persons dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/06/2006, 22h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo