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 :

Copier coller ne marche pas


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Juin 2013
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 81
    Points : 45
    Points
    45
    Par défaut Copier coller ne marche pas
    Bonjour,

    J'aurais voulu copier-coller les informations d'un fichier journalier dans un fichier de référencement global (c'est à dire que ce que je copie dans le fichier quotidien se mette en dessous de ce que j'avais déjà).


    Je sais que mon code peut s'avérer compliqué (et pas forcément optimal d'ailleurs...), mais je bloque juste sur le copier-coller (ligne en rouge). A chaque fois que je le lance, je reçois le message "erreur définie par l'application ou par l'objet".
    Si j'ai mis tout ce code, c'est dans l'espoir que quelqu'un verrait où il y a un problème. Je ne comprends vraiment pas. D'autant que le reste du code pourra toujours servir à quelqu'un plus tard.


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub récupération_quotidien()
    Dim j As Date
    Dim LastDate As Date
    
    'Récupération de la dernière date des fichiers (les fichiers sont triés par date du plus ancien au plus récent)
    Worksheets("Général").Activate
    NbLigneGénéralavant = Range(Cells(4, 2), Cells(4, 2).End(xlDown)).Rows.Count
    LastDate = Cells(NbLigneGénéralavant + 3, 6)
    
    'Pour chacune de ces dates (jusqu'à aujourd'hui):
    For j = LastDate To Date
        'conversion j en bon format
        année = Mid(j, 9, 2)
        mois = Mid(j, 4, 2)
        jour = Mid(j, 1, 2)
        Dates = Format(DateSerial(année, mois, jour), "ddmmyy")
        
        'Sur les jours qui comportent des relevés :
        If Dir("chemin_d'accès\Exportquotidien" & Dates & ".xls") <> "" Then
            ' ouverture du quotidien et récupération du nombre de lignes
            Workbooks.Open Filename:="chemin_d'accès\Exportquotidien" & Format(Dates, "000000") & ".xls"
            nbLignequotidien = Range(Cells(2, 2), Cells(2, 2).End(xlDown)).Rows.Count
            
            ' recopiage
            Workbooks("Exportquotidien" & Format(Dates, "000000") & ".xls").Sheets(1).Range(Cells(2, 1), Cells(nbLignequotidien + 1, 25)).Copy Workbooks("Classeur1.xlsm").Worksheets("Général").Cells(NbLigneGénéralavant + 3, 1)
    
    
            're-récupération du nombre de lignes du congloméré
            NbLigneRelevé = Range(Cells(2, 2), Cells(2, 2).End(xlDown)).Rows.Count
    
            ' fermeture du quotidien
            Workbooks("Exportquotidien" & Dates & ".xls").Close False
    
        End If
    Next j
    
    End Sub

    Quelqu'un saurait-il m'aider ?

    Novice_vba

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        With Workbooks("Exportquotidien" & Format(Dates, "000000") & ".xls").Sheets(1)
            .Range(.Cells(2, 1), .Cells(nbLignequotidien + 1, 25)).Copy _
            Workbooks("facture1.xlsm").Worksheets("Relevé").Cells(NbLigneRelevéavant + 3, 1)
        End With
    avec ta syntaxe, "Cells(2, 1)" et "Cells(nbLignequotidien + 1, 25)" se réfèrent à la feuille active puisqu'elles ne sont pas qualifiées.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2013
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 81
    Points : 45
    Points
    45
    Par défaut
    Bonjour Daniel.C,
    Merci beaucoup ! Je bloquais dessus depuis un certain temps déjà.

    Grâce à toi, mon code marche enfin !

    J'ai également modifié quelques trucs. Je le poste ici, si quelqu'un veut l'utiliser ensuite :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Sub récupération_trucs()
    Dim j As Date
    Dim LastDate As Date
     
    'Récupération de la dernière date des Trucs (trier par date)
    Worksheets("Truc").Activate
    NbLigneTrucavant = Range(Cells(4, 2), Cells(4, 2).End(xlDown)).Rows.Count
    LastDate = Cells(NbLigneTrucavant + 3, 6)
     
    'Pour chacune de ces dates (jusqu'à aujourd'hui):
    For j = LastDate + 1 To Date
        'conversion j en bon format
        année = Mid(j, 9, 2)
        mois = Mid(j, 4, 2)
        jour = Mid(j, 1, 2)
        Dates = Format(DateSerial(année, mois, jour), "ddmmyy")
     
        'Sur les jours qui comportent des Trucs :
        If Dir("\\chemin\ExportTRUC1" & Dates & ".xls") <> "" Then
     
        'POur TRUC1
            ' ouverture du Trucs et récupération du nombre de ligne
            Workbooks.Open Filename("\\chemin \ExportTRUC1" & Format(Dates, "000000") & ".xls"
            nbLigneTrucquotidienTRUC1 = Range(Cells(2, 2), Cells(2, 2).End(xlDown)).Rows.Count
     
            ' recopiage
            With Workbooks("ExportTRUC1" & Format(Dates, "000000") & ".xls").Sheets(1)
                Range(Cells(2, 1), Cells(nbLigneTrucquotidienTRUC1 + 1, 25)).Copy _
                Workbooks("facture1.xlsm").Worksheets("Truc").Cells(NbLigneTrucavant + 4, 1)
            End With
     
     
        'POur TRUC2
            ' ouverture du Trucs et récupération du nombre de ligne
            Workbooks.Open Filename:= ("\\chemin \ExportTRUC2" & Format(Dates, "000000") & ".xls"
            nbLigneTrucquotidienTRUC2 = Range(Cells(2, 2), Cells(2, 2).End(xlDown)).Rows.Count
     
            'recopiage
            With Workbooks("ExportTRUC2" & Format(Dates, "000000") & ".xls").Sheets(1)
                Range(Cells(2, 1), Cells(nbLigneTrucquotidienTRUC2 + 1, 25)).Copy _
                Workbooks("facture1.xlsm").Worksheets("Truc").Cells(NbLigneTrucavant + 4 + nbLigneTrucquotidienTRUC1, 1)
            End With
     
     
            're-récupération du nombre de lignes du Truc congloméré
            Workbooks("facture1.xlsm").Worksheets("Truc").Activate
            NbLigneTrucavant = Range(Cells(4, 2), Cells(4, 2).End(xlDown)).Rows.Count
     
            ' fermeture des Trucs quotidiens
            Workbooks("ExportTRUC1" & Dates & ".xls").Close False
            Workbooks("ExportTRUC2" & Dates & ".xls").Close False
        End If
    Next j
     
    End Sub

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

Discussions similaires

  1. [XL-2007] Copier-Coller ne marche pas
    Par mohaciss dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/01/2011, 18h35
  2. Réponses: 5
    Dernier message: 14/07/2010, 06h26
  3. Réponses: 1
    Dernier message: 20/04/2009, 15h22
  4. Ne pas recoder le copier/coller qui marche en standard
    Par cdtkoenig dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 22/10/2007, 18h29
  5. Le copier coller ne marche pas
    Par Cazaux-Moutou-Philippe dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 21/03/2006, 10h53

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