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 :

VBA: Copier/coller une plage de valeur [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut VBA: Copier/coller une plage de valeur
    Bonjour,

    J'essaye de copier/coller une plage de valeur d'une feuille d'un classeur vers une feuille d'un classeur différent mais ca ne fonctionne pas.

    Pourtant en pas à pas, je vois bien la sélection se copier et la cellule où les donner doivent être collées, s'activer mais elle reste vierge.

    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
    Public DatFvi As Workbook
    Public Inv As Workbook
    Sub NBBASE()
           Dim fin As Integer
           Dim plage As Range
     
           Set Inv = Workbooks.Open(Filename:="C:\Users\kguesmia\Documents\Casse du Havre\Inv Appro B90.xls")
           Set DatFvi = Workbooks.Open(Filename:="C:\Users\kguesmia\Documents\Casse du Havre\Foto Infolog.xls")
     
            fin = DatFvi.Sheets(1).Cells(1, DatFvi.Sheets(1).Cells.Columns.Count).End(xlToLeft).Column
     
          Set plage = DatFvi.Sheets(1).Range(DatFvi.Sheets(1).Cells(1, 31), DatFvi.Sheets(1).Cells(1, fin))
                plage.Copy
                Inv.Sheets(1).Activate
                Inv.Sheets(1).Range("Y3").Select
                ActiveSheet.Paste
    Si vous pourriez m'aider à comprendre ce qu'il ne convient pas, ça serait sympa

    Merci

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    As-tu un message d'erreur?
    Dans l'affirmative, lequel?

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    en remplaçant ta ligne 13 par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plage.Copy Inv.Sheets(1).Range("Y3")
    et en supprimant les 3 dernières lignes de ton code, c'est toujours pas ok ?

  4. #4
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    Non pas de message d'erreur, c'est ce qui complique un peu l'analyse car j'ai l'impression qu'au niveau du code, ca a l'air d’être bon mais c'est peut-être mes variables qui sont mal déclarées.

  5. #5
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    Bravo mister Joe ! ca fonctionne.

    Merci

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut

    Quelques conseils

    Pour alléger le code, utiliser la méthode "With" en évitant les redondances

    D'autre part, plutôt nommer les feuilles que leur rang dans l'éditeur VBE

    Enfin, il peut être utile de vider le presse-papier et libérer la mémoire des variables affectées

    Pour être complet en reprenant la solution de Joe qui s'impose


    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
    Sub Macro2()
     
    Dim plage As Range
    Dim fin As Integer
    Dim plage As Range
     
    Set Inv = Workbooks.Open(Filename:="C:\Users\kguesmia\Documents\Casse du Havre\Inv Appro B90.xls")
    Set DatFvi = Workbooks.Open(Filename:="C:\Users\kguesmia\Documents\Casse du Havre\Foto Infolog.xls")
     
    With DatFvi.Worksheets("mawks")
          fin = .Cells(1, .Columns.Count).End(xlToLeft).Column
          Set laplage = .Range(.Cells(1, 31), .Cells(1, fin))
          laplage.Copy Destination:=Inv.Worksheets("lautrewks").Range("Y3")
          'vider le presse-papier      
           Application.CutCopyMode = False 
           'Libérer la mémoire     
           Set laplage = Nothing
    End With
     
    End Sub

  7. #7
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 74
    Par défaut
    Merci Marcel pour tes conseils !

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 11/12/2013, 11h20
  2. [XL-2010] Copier coller une plage de cellules
    Par mariecaro dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/07/2013, 10h09
  3. [XL-2010] Pb pour copier coller une plage de cellule variable
    Par eglantine217 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/05/2012, 12h10
  4. Copier/coller une plage de cellules
    Par Pastore dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/04/2012, 23h06
  5. Copier/coller une plage de cellules pleine de trous
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 0
    Dernier message: 21/05/2008, 18h57

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