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 :

Add Worksheet et Copy d'un range


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 22
    Par défaut Add Worksheet et Copy d'un range
    Bonjour à tous

    j'ai une erreur sur le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub test()
     
    Dim Wb As Workbook
    Dim Ws As Worksheet
    Set Wb = ThisWorkbook
    Set Ws = Wb.ActiveSheet
    Dim nombre_de_lignes As Integer
    nombre_de_lignes = Ws.Range("A65536").End(xlUp).Row
    Dim ligne_debut As Integer
    ligne_debut = 2
    Dim ligne_fin As Integer
    ligne_fin = 10
     
    Wb.Sheets.Add(After:=Sheets(Wb.Sheets.Count)).Name = Ws.Cells(ligne_debut, 1)
    'ou
    'Wb.Sheets.Add After:=Sheets(Wb.Sheets.Count)
    'Wb.Sheets(Wb.Sheets.Count).Name = Ws.Cells(ligne_debut, 1)
     
    Ws.Range(Cells(ligne_debut, 1), Cells(ligne_fin, 4)).Copy
    ThisWorkbook.Worksheets("test").Paste Destination:=ThisWorkbook.Worksheets("test").Range("A1")
     
    End Sub
    Mon problème :

    La ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Wb.Sheets.Add(After:=Sheets(Wb.Sheets.Count)).Name = Ws.Cells(ligne_debut, 1)
    marche mais le programme bloque à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ws.Range(Cells(ligne_debut, 1), Cells(ligne_fin, 4)).Copy
    Si je n'insére pas de feuille mon code .Copy marche...

    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Mai 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 22
    Par défaut
    Finalement j'ai trouvé
    Il faut écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ws.Range(Ws.Cells(ligne_debut, 1), Ws.Cells(ligne_fin, 8)).Copy

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    La référence des ranges est importante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub test()
     
        'ne sert à rien si le travail se fait seulement sur le classeur actif
        'Dim Wb As Workbook
     
        Dim Ws As Worksheet
        Dim Ws_Add As Worksheet
        Dim nombre_de_lignes As Integer
        Dim ligne_debut As Integer
        Dim ligne_fin As Integer
     
        'Set Wb = ThisWorkbook
     
        Set Ws = Wb.ActiveSheet
     
        ''préférable depuis Excel 2007
        With Ws
     
            nombre_de_lignes = Ws.Cells(.Rows.Count, 1).End(xlUp).Row
     
        End With
     
        ligne_debut = 2
        ligne_fin = 10
     
        'utilise une variable feuille
        Set Ws_Add = Wb.Sheets.Add(, Sheets(ThisWorkbook.Sheets.Count))
     
        'défini son nom
        Ws_Add.Name = Ws.Cells(ligne_debut, 1)
     
        ' la référence est bien faite sur la feuille active
        With Ws
     
            .Range(.Cells(ligne_debut, 1), .Cells(ligne_fin, 4)).Copy Ws_Add.Cells(1, 1)
     
        End With
     
    End Sub
    Hervé.

    Oups,

    Pas rafraîchi :o((

  4. #4
    Membre averti
    Inscrit en
    Mai 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 22
    Par défaut
    Super, merci pour ces précisions !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Copie d'un range d'un workbook vers un autre
    Par magikmed dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/04/2015, 11h06
  2. [E-00] "worksheets(i)"-->subscript out of range
    Par anyah dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/11/2008, 13h54
  3. Copy / Paste de Range d'un fichier à un autre
    Par hochimi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/07/2007, 13h15
  4. Méthode worksheets.copy : excel stop
    Par agro dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 22/12/2006, 20h25
  5. VBA Excel (débutant) - problème avec la copie d'un range
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/01/2006, 16h32

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