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 des données d'un classeur et les coller dans un autre


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Points : 478
    Points
    478
    Par défaut Copier des données d'un classeur et les coller dans un autre
    Bonjour,

    Dans une macro, je souhaite :

    1/ Effacer les données d'entrée précédentes (pas de problème)

    2/ Ouvrir un classeur Excel et copier des données (jusque là ça va)

    3/ Aller coller ces données dans mon premier classeur sur l'onglet dans lequel j'ai effacé les données précédentes (là, je coince)

    Que dois-taper pour arriver à ce résultat ?

    Ci-dessous le code que j'ai tapé pour l'instant :

    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
    Sub ClearPreviousData()
     
    'Permet de réinitialiser l'onglet contenant les données de départ et d'aller coller les nouvelles données à traiter
     
    Dim LR1 As Long
     
    Application.ScreenUpdating = False
     
        With Sheets("ORIGINAL DATA")
     
        .Range("A1:M1").EntireColumn.Delete
     
        End With
     
        Workbooks.Open Filename:="\\lithine2000\users$\071858\Bureau\Auveille\present.xls"
     
        With Workbooks("present.xls")
     
            With Sheets("Feuil1")
     
            LR1 = .Range("A" & .Rows.Count).End(xlUp).Row
     
            .Range("A1:M" & LR1).Copy 'et là j'imagine qu'il va falloir que je tape quelque chose du genre Destination: = ???
     
            End With
     
        End With
     
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
     
    End Sub
    Merci d'avance !

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    pour ce faciliter les choses il faut identifier les classeurs. j'utilise les variables wk1 et wk2 pour cela.

    ensuite comme ceci:
    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
    Sub ClearPreviousData()
     
    'Permet de réinitialiser l'onglet contenant les données de départ et d'aller coller les nouvelles données à traiter
     
    Dim LR1 As Long, wk1 As Workbook, wk2 As Workbook
     
    Application.ScreenUpdating = False
     
    'je définie le classeur 1
    Set wk1 = ThisWorkbook
     
        With Sheets("ORIGINAL DATA")
     
        .Range("A1:M1").EntireColumn.Delete
     
        End With
     
    'j'ouvre le classeur 2
    Workbooks.Open Filename:="\\lithine2000\users$\071858\Bureau\Auveille\present.xls"
     
    'je définie le classeur 2
    Set wk2 = Workbooks("present.xls")
     
        With wk2.Sheets("Feuil1")
            LR1 = .Range("A" & .Rows.Count).End(xlUp).Row
     
            'je copy
            .Range("A1:M" & LR1).Copy wk1.Sheets("ORIGINAL DATA").Range("A1")
        End With
     
    wk2.Close ' je ferme le classeur 2
     
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
     
    End Sub

  3. #3
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    essayes la modification dans la deuxième fenêtre
    je n'ai pas tester en vrai grandeur
    il te faut renseigner le nom du classeur dans la commande Windows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub ClearPreviousData()
    'Permet de réinitialiser l'onglet contenant les données de départ et d'aller coller les nouvelles données à traiter
    Dim LR1 As Long
    Application.ScreenUpdating = False
        With Sheets("ORIGINAL DATA")
        .Range("A1:M1").EntireColumn.Delete
        End With
        Workbooks.Open Filename:="\\lithine2000\users$\071858\Bureau\Auveille\present.xls"
        With Workbooks("present.xls")
            With Sheets("Feuil1")
            LR1 = .Range("A" & .Rows.Count).End(xlUp).Row
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    tabl = .Range("A1:M" & LR1).Value '
            End With
        End With
       Windows("ton_classeur_de_destination").Activate
       With Sheets("ORIGINAL DATA")
       .Range("A1:M" & LR1).Value = tabl
       End With
    End Sub[/code]

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par rvtoulon Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'j'ouvre le classeur 2
    Workbooks.Open Filename:="\\lithine2000\users$\071858\Bureau\Auveille\present.xls"
     
    'je définie le classeur 2
    Set wk2 = Workbooks("present.xls")
    Juste pour info
    tu peux directement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wk2 = Workbooks.Open Filename:="\\lithine2000\users$\071858\Bureau\Auveille\present.xls"

  5. #5
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    bonjour fring,
    merci pour la précision.
    j'en prends note.

  6. #6
    Membre confirmé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Points : 478
    Points
    478
    Par défaut
    Bonjour,

    Voilà le code écrit avec les modifs apportées sur vos bons conseils :

    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
    Sub ClearPreviousData()
     
    'Permet de réinitialiser l'onglet contenant les données de départ et d'aller coller les nouvelles données à traiter
     
    Dim ClasCible As Workbook, ClasSource As Workbook, LR1 As Long
     
     
    Application.ScreenUpdating = False
     
    Set ClasCible = ThisWorkbook
     
        With Sheets("ORIGINAL DATA")
     
        .Range("A1:M1").EntireColumn.Delete
     
        End With
     
    Set ClasSource = Workbooks.Open Filename:="\\lithine2000\users$\071858\Bureau\Auveille\present.xls"
     
        With ClasSource.Sheets("Feuil1")
     
            LR1 = .Range("A" & .Rows.Count).End(xlUp).Row
     
            .Range("A1:M" & LR1).Copy ClasCible.Sheets("ORIGINAL DATA").Range("A1")
     
            End With
     
        End With
     
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
     
    End Sub
    Malheureusement, j'ai une erreur de syntaxe sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set ClasSource = Workbooks.Open Filename:="\\lithine2000\users$\071858\Bureau\Auveille\present.xls"
    Savez-vous pourquoi et comment corriger cette erreur SVP ?

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Il manque les parenthèses pour le(s) paramètre(s) de Open.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/01/2014, 19h13
  2. [XL-2003] copier des données d'un classeur à un autre à l'aide d'une macro
    Par tottiasr dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/05/2011, 14h19
  3. copier des données d'un classeur à un autre
    Par jbggg dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/11/2009, 16h08
  4. copier des données d'un classeur vers un autre
    Par jackall dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 01/08/2008, 17h20
  5. Réponses: 3
    Dernier message: 11/04/2007, 14h01

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