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 dans un autre classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    technicien
    Inscrit en
    Septembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Septembre 2015
    Messages : 13
    Par défaut Copier dans un autre classeur
    Bonjour, à tous
    Etant débutant, j'aurais besoin d'un coup de main sur ma macro, car quand je l'exécute, ca bloque aux lignes 23 et 24 et je ne sais pas pourquoi...Le but de cette macro est de copier la ligne si la cellule C de cette ligne est égale à "PAL", puis dans un autre classeur qu'elle aura ouvert auparavant, d'effacer la feuille et de coller les lignes copiées. Le soucis arrive au moment ou la macro doit coller dans le classeur de destination, ca indique erreur 9 . Si vous voyer des choses pour optimiser la macro ou qu'elle tourne mieux, je suis preneur aussi! Merci


    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
    Sub Copie()
    Dim lig As Long
    Dim CD As Workbook ' classeur de destination
    Dim CS As Workbook 'classeur source
     
    Set CS = ThisWorkbook 'defini le classeur source
    Set CD = Application.Workbooks.Open(Filename:="H:PAL.xlsm") 'defini le classeur destination
     
     
    'Efface le contenu de PAL
    Sheets("Maintenance_PAL").Select
    Range("A2:J18").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.ClearContents
    Range("A1").Select
     
    'Active le fichier Maintenance
    CS.Activate
    ' Copie les lignes ou la colonne C =PAL et les collles dans CD
    With Sheets("Maintenance")
            For lig = 2 To .Cells(Rows.Count, "C").End(xlUp).Row
            If .Cells(lig, "C") = "PAL" Then
                .Range("A" & lig & ":H" & lig).Copy _
                Destination:=CD.Sheets("Maintenance_PAL").Cells(Sheets("Maintenance_PAL").Cells(Rows.Count, "A2").End(xlUp).Row + 1, 1)
     
            End If
        Next lig
    End With
    CS.Activate
    End Sub

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 946
    Par défaut
    Salut, ne faudrait-il pas ajouter la barre oblique au chemin destination ? "H:\PAL.xlsm"

  3. #3
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    beaucoup de select - par définition inutiles - dans tout ça...

    Essaye ça :

    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
    Sub Copie()
    Dim lig As Long, LigMax As Long, Ldest As Long
    Dim CD As Workbook ' classeur de destination
     
    Set CD = Application.Workbooks.Open(Filename:="H:PAL.xlsm") 'définit le classeur destination
     
    'Efface le contenu de PAL
    With CD.Sheets("Maintenance_PAL").Range("A2")
        .Range(.Cells, .SpecialCells(xlLastCell)).ClearContents
    End With
    Ldest = 2
    ' Copie les lignes où la colonne C =PAL et les colle dans CD
    With ThisWorkbook.Sheets("Maintenance")
        LigMax = .Cells(Rows.Count, "C").End(xlUp).Row
        For lig = 2 To LigMax
            If .Cells(lig, "C") = "PAL" Then
                .Range("A" & lig & ":H" & lig).Copy _
                Destination:=CD.Sheets("Maintenance_PAL").Cells(Ldest, 1)
                Ldest = Ldest + 1
            End If
        Next lig
    End With
    ThisWorkbook.Activate
    End Sub
    Inutile de mon point de vue d'instancier CS=Thisworkbook puisque ThisWorkBook est déjà un objet très honorable.
    J'ai un peu simplifié le clearcontents ; attention il est un peu plus large que celui d'origine, peut être à retoucher
    J'ai instancié une variable pour la dernière ligne de départ; inutile de refaire le même end à chaque boucle
    J'ai instancié une variable pour la ligne de destination ; inutile de lancer un end à chaque fois puisqu'on maitrise parfaitement le remplissage

  4. #4
    Membre habitué
    Homme Profil pro
    technicien
    Inscrit en
    Septembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Septembre 2015
    Messages : 13
    Par défaut
    Merci beaucoup, ca fonctionne!

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

Discussions similaires

  1. [XL-2003] Copier Colonnes, faire des modifications et le coller dans un autre classeur?
    Par lele79 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 07/11/2010, 13h29
  2. [XL-2010] copier un tableau excel dans un autre classeur
    Par mc guill dans le forum Excel
    Réponses: 1
    Dernier message: 15/08/2010, 13h13
  3. [XL-2003] Copier une feuille dans un autre classeur
    Par mistermail dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/10/2009, 19h06
  4. Réponses: 2
    Dernier message: 15/02/2008, 10h24
  5. [VBA-E] copier une fiche active dans un autre classeur.
    Par Little-Freud dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 15/03/2006, 11h51

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