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 :

Erreur '1004' sur objet un Range lors d'un .copy [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Erreur '1004' sur objet un Range lors d'un .copy
    Bonjour,

    Depuis un moment je cherche une solution au problème suivant :

    Je cherche à créer une macro qui ouvre un fichier excel et qui effectuer un copier/coller des valeurs contenues dans toutes les feuilles (en fait à partir de la deuxième feuille) car il me faut supprimer toutes les formules.
    Voici mon code :

    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
            Dim ClasseurR As Workbook
            Dim i As Integer
            Dim numcol As Integer
            Dim jdeb As Integer, jfin As Integer
            Set ClasseurR = Application.Workbooks.Open(message)
            message = ""
            NumFeuille = ClasseurR.Worksheets.Count
            i = 2
            For i = 2 To NumFeuille Step 1
                numcol = ClasseurR.Worksheets(i).Range("B1").SpecialCells(xlCellTypeLastCell).Column
                jdeb = numcol + 1
                jfin = numcol * 2
                ClasseurR.Worksheets(i).Range(Columns(1), Columns(numcol)).Copy
                'ClasseurR.Worksheets(i).Cells(1, jdeb).Select
                ClasseurR.Worksheets(i).Range(Columns(jdeb), Columns(jfin)).PasteSpecial Paste:=xlPasteValues
                ClasseurR.Worksheets(i).Range(Columns(1), Columns(numcol)).Delete
                Application.CutCopyMode = True
            Next i
    Lors du premier passage dans la boucle for tout se passe comme prévu.

    Mais lors du deuxième passage j'ai un message d'erreur : erreur '1004' Erreur définie par l'application ou par l'objet sur la ligne ClasseurR.Worksheets(i).Range(Columns(1), Columns(numcol)).Copy
    Je me suis dit que l'objet Range avait peut-être besoin d'être réinitialisé (indice limite par exemple) mais je n'ai rien trouvé à ce sujet.

    Si l'un ou l'une d'entre vous avez déjà rencontré et solutionné ce problème, merci à l'avance.

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With ClasseurR.Worksheets(i)
        .Range(.Columns(1), .Columns(numcol)).Copy
        '....
     
    End With
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut merci.
    Je viens de tester la correction que tu m'as envoyé et cela fonctionne parfaitement.

    Pour info, mon erreur provenait de ne pas utiliser With... End with ou parce que ma syntaxe .Range(Columns doit être remplacé par .Range(.columns)

    En tout cas un grand merci.

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu devais faire. Il faudra indiquer les parents des plages pour éviter de contrôler quelle feuille est la feuille active
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ClasseurR.Worksheets(i).Range(ClasseurR.Worksheets(i).Columns(1), ClasseurR.Worksheets(i).Columns(numcol)).Copy
    le With/End With c'est pour compacter l'écriture
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

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

Discussions similaires

  1. [XL-2007] Erreur 1004 sur Range
    Par Ranei dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/01/2011, 12h31
  2. Erreur 1004 sur Range(cells,cells).copy
    Par Sebastien57 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/10/2009, 11h33
  3. Réponses: 8
    Dernier message: 25/01/2008, 11h48
  4. erreur 1004 sur un range
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/11/2007, 16h35
  5. Erreur 1004 sur une boucle simple
    Par ruzakruzak dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 06/07/2007, 09h00

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