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 de copier coller macro VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 30
    Par défaut Problème de copier coller macro VBA
    Bonjour à tous,

    J'ai un petit problème sur une macro. en fait je veux récupérer les données d'un fichier pour les coller dans un autre.

    Je fais cela sur plusieurs fichiers donc à chaque fois que je colle de nouvelles données, je me décale d'une colonne.

    Le problème me semble assez simple mais je galère depuis tout à l'heure pour réussir à faire ce que je veux.

    J'arrive à ouvrir mon fichier où se trouve mes données, à les copier...mais je n'arrive pas à sélectionner la zone où je souhaite les coller. dès que j'arrive sur ma ligne de déclaration de la zone, j'ai le message d'erreur suivant:
    "Erreur '1004'
    Erreur définie par l'application ou par l'objet"

    Voici le début de mon code. Le message apparaît sur la dernière ligne.

    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
    Public Sub CommandButton1_Click()
     
    'L'utilisateur déclare le nombre de fichier de résultats qu'il souhaite rappatrier
    Set nb_file_Range = Worksheets("Lancement").Range("d6")
     
    fichier_courant = ActiveWorkbook.Name
    nb_file = nb_file_Range.Cells(1)
     
    ligne = 18
     
    For i = 1 To nb_file
     
        colonne = i
     
        Nom_Fichier = Application.GetOpenFilename(, , "Sélectionnez la sensibilité à extraire")
        Workbooks.Open Filename:=Nom_Fichier
     
        'Sélection du fichier de données
        'Workbooks(Nom_Fichier).Activate
        Sheets("DONNEES").Select
        'Sélection et copie des valeurs
        Range("b18:b3000").Select
        Selection.Copy
     
        'Colle les valeurs de temps dans la feuille "Results" du classeur courant
        Workbooks(fichier_courant).Activate
        Sheets("results").Range(Cells(ligne, colonne), Cells(ligne + 2982, colonne)).Paste
    Quelqu'un voit l'erreur que je fais dans ma déclaration par hasard ?

    Par la même occasion j'en profite aussi pour demander si quelqu'un sait s'il est possible de copier des valeurs dans un fichier Excel sans l'ouvrir ? En effet, le fichier où je vais récupérer mes données est assez lourd et met du temps à s'ouvrir. Comme la macro peut demander de rapatrier les données de 20 fichiers différents, je pense que je pourrais gagner pas mal de temps de calcul si je n'ai pas besoin d'ouvrir les fichiers à chaque fois

    Merci d'avance

    Pierre

  2. #2
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonjour le forum,

    Essaie ça au cas où

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Workbooks(fichier_courant).Activate
        Sheets("results").Cells(ligne + 2982, colonne).Paste

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 30
    Par défaut
    Merci Marc pour ta réponse, mais ça ne fonctionne pas non plus. Si je mets ça, j'ai désormais le message suivant:

    "Erreur d'exécution '438' :
    Propriété ou méthode non gérée par cet objet"



    Je ne comprends pas absolument pas pourquoi ça bloque. En fait, si je déclare mon range avec la syntaxe classique Range("A1") par exemple ça fonctionne. Mais vu que je dois incrémenter ma colonne de collage, il me faut pouvoir l'écrire en indexé qui pour moi est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(ligne_dbt , colonne_dbt) , Cells(ligne_fin , colonne_fin))

  4. #4
    Expert éminent 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
    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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Option Explicit
    Private Sub CommandButton1_Click()
    Dim i As Integer, nb_file As Integer, ligne As Integer, colonne As Integer
    Dim awbk As Workbook, wbk As Workbook
    Dim Nom_Fichier As Variant
     
    Application.ScreenUpdating = False
    Set awbk = ActiveWorkbook
        nb_file = awbk.Sheets("Lancement").Range("D6").Value
        If nb_file > 0 Then
            ligne = 18
            For i = 1 To nb_file
                colonne = i
                Nom_Fichier = Application.GetOpenFilename(, , "Sélectionnez la sensibilité à extraire")
                If Nom_Fichier <> False Then
                    Set wbk = Workbooks.Open(Nom_Fichier)
                        wbk.Sheets("DONNEES").Range("B18:B300").Copy awbk.Sheets("results").Cells(ligne, colonne)  'Ici était une coquille
                        wbk.Close
                    Set wbk = Nothing
                End If
            Next i
        End If
    Set awbk = Nothing
    Application.ScreenUpdating = True
    End Sub

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 30
    Par défaut
    Mercatog,

    Le code que tu m'as envoyé ne fonctionne pas non plus. J'ai toujours l'erreur 1004 lorsqu'il s'agit de coller mes cellules...

  6. #6
    Expert éminent 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
    Par défaut
    Regarde les noms que tu as donné aux feuilles de tes fichiers!
    je n'ai pas passé par un copier/coller

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

Discussions similaires

  1. [XL-2010] problème de copier coller en vba
    Par retulo dans le forum Excel
    Réponses: 6
    Dernier message: 23/06/2015, 20h39
  2. Problème de copier coller en VBA
    Par canounours dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 15/02/2015, 13h35
  3. [XL-2007] Problème de copier/coller aprés ajout d'une macro.
    Par crevette06220 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/08/2011, 22h29
  4. Problème de copier coller en vba à partir d'excel
    Par Psycho185 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/06/2011, 13h47
  5. Problème de copier/coller de valeur VBA
    Par astridlet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/12/2010, 11h31

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