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 :

Copie lignes classeur ferme vers classeur de travail (ouvert) [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Points : 62
    Points
    62
    Par défaut Copie lignes classeur ferme vers classeur de travail (ouvert)
    Bonjour au forum,

    J'essaie de copier des lignes d'un classeur fermé vers le classeur actuellement ouvert
    Un début de code que j'ai mis dans Feuil20(Trésorerie)
    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
    Private Sub ImportTresorerie()
    Dim WbkSource As Workbook, LigSource As Integer, LigDest As Integer
     
    Application.ScreenUpdating = False
     
    Set WbkSource = Workbooks.Open("D:\Gestion\Gest-Fo.xls")
     
    With ThisWorkbook.Sheets("Tresorerie")
        LigDest = .Range("c15")
    End With
     
    With WbkSource.Sheets("Tresorerie")
        .Range("c6:016").Copy Destination:=WbkSource.Sheets("Tresorerie").Range("C" & LigDest)
        Application.CutCopyMode = False
    End With
     
    WbkSource.Close True
    Set WbkSource = Nothing
     
    Application.ScreenUpdating = True
    End Sub
    J'ai une erreur encadré en jaune
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("c6:016").Copy Destination:=WbkSource.Sheets("Tresorerie").Range("C" & LigDest)
    Pouvez-vous me dire pourquoi ça ne fonctionne pas ?

    J'espère que je suis clair dans la description de ce que je veux faire.

    Merci

    Stephanie

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut Stephandm

    D'après ton code tu veux copier le Wbk source dans le wbk source !?
    De plus tu ne définit pas correctement ta ligne de destination,
    tes déclarations de ligne sont en Integer au lieu d'être en Long,
    ta 2ème colonne source est 0 (zéro) au lieu de O (la lettre)

    Mets plutôt ç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
    Private Sub ImportTresorerie()
    Dim WbkSource As Workbook, LigSource As Long, LigDest As Long
     
    Application.ScreenUpdating = False
     
    Set WbkSource = Workbooks.Open("D:\Gestion\Gest-Fo.xls")
     
    LigDest = 15
     
    With WbkSource.Sheets("Tresorerie")
        .Range("C6:O16").Copy Destination:=ThisWorkbook.Sheets("Tresorerie").Range("C" & LigDest)
        Application.CutCopyMode = False
    End With
     
    WbkSource.Close True
    Set WbkSource = Nothing
     
    Application.ScreenUpdating = True
    End Sub
    A+
    Dernière modification par Invité ; 12/05/2012 à 20h39.

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Points : 62
    Points
    62
    Par défaut
    Bonjour BrunoM45 et au forum,

    BrunoM45, c'est l'inverse que je veux.

    Il faut copier les valeurs uniquement du classeur Gest-Fo.xls fermé dans Feuil20(Trésorerie) les cellules C6:O16 vers classeur ouvert dans Feuil20(Trésorerie) les cellules C15:O25. Ceci s'effectue des que je clique sur l'onglet Tresorerie.

    Avec le code ci-dessus, la copie s'effectue de Gest-Ent.xls vers Gest-Fo.xls !

    Merci

    Stephanie

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re,

    Je ne sais pas ce qui c'est passé le code que j'avais mis n'a pas été modifié !?

    Il faut modifier la destination par ThisWorkbook ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Destination:=ThisWorkbook.Sheets("Tresorerie").Range("C" & LigDest)
    A+

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Points : 62
    Points
    62
    Par défaut
    bonsoir BrunoM45 et au forum,

    J'ai des fenêtres de demande confirmation pour le déplacement avec des noms (Gestionnaire de noms dans Formules sur bandeau excel 2007). En effet, j'utilise dans mon classeur des plage dynamique.

    Comment peut-on éviter ces messages et de valider à chaque fois ? Peut-etre utiliser la copie de valeurs

    Merci

    Stephanie

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re,

    Essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    application.DisplayAlerts = False
    ... le code
    application.DisplayAlerts = True
    A+

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Points : 62
    Points
    62
    Par défaut
    re bonsoir BrunoM45 et au forum,

    Je pense que mon probleme vient de la copie, il faut copier simplement les valeurs comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With WbkSource.Sheets("Tresorerie")
        .Range("C6:O16").Copy Destination:=ThisWorkbook.Sheets("Tresorerie").Range("C" & LigDest).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End With
    mais j'ai une erreur sur Merci

    Stephanie

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Pourquoi garder les messages d'erreurs pour toi ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Points : 62
    Points
    62
    Par défaut
    bonsoir bbil

    Je n'ai pas compris votre message. Comme, je l'ai indiqué dans le post précédent , le message d'erreur apparait sur le mot paste: avec la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        .Range("C6:O16").Copy Destination:=ThisWorkbook.Sheets("Tresorerie").Range("C" & LigDest).PasteSpecial Paste:=xlPasteValues
    souligne en rouge. Il est vrai que je suis seule devant mon écran et que les membres du forum ne voit pas ce qui y apparait, d'où l'importance de la précision des explications.

    Stephanie

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Et donc le message il dit quoi ? : "erreur"

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Points : 62
    Points
    62
    Par défaut
    re bbil

    Le message

    "Erreur de compilation:
    Attendu : fin d'instruction"

    Stephanie

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Moi j'aurais ecris cela sur deux lignes remplace destination:= par un retour chariot

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Points : 62
    Points
    62
    Par défaut
    re bbil

    Merci,

    c'était tellement simple que je ne l'avais même pas pensé.
    Par compte lors de la copie, il me garde la couleur du fond et le caractère gras de la première ligne,
    en principe avec la copie de valeur, la mise en forme n'est pas conservé ?

    Une idée ?

    Stephanie

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Points : 62
    Points
    62
    Par défaut Résolu
    bonjour BrunoM45, bbil et au forum

    Désolée de ne pas avoir répondue plus tôt, j'ai eu quelques soucis de santé maintenant en forme. Je reviens vers vous pour vous faire part de ma solution.

    Voici le résultat final que j'attendais et qui fonctionne
    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
    Dim WbkSource As Workbook, WbkDest As Workbook, LigSource As Long, LigDest As Long
     
    Application.ScreenUpdating = False
     
    Set WbkSource = Workbooks.Open("D:\Gestion\Gest-Fo.xls")
     
    LigDest = 15
     
    With WbkSource.Sheets("Tresorerie")
        .Range("C6:N16").Copy
        ThisWorkbook.Sheets("Tresorerie").Range("C" & LigDest).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End With
     
    WbkSource.Close True
    Set WbkSource = Nothing
     
    Application.ScreenUpdating = True
    Merci à vous

    Stéphanie

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 23/05/2013, 19h33
  2. [XL-2007] envoi vers classeur fermé
    Par grisan29 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/07/2011, 18h02
  3. Requete SQL d'un classeur fermé vers une listebox
    Par steph77 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/09/2009, 09h59
  4. Copier données vers classeur fermé
    Par andy38 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/06/2008, 23h35
  5. Copie de données depuis un classeur fermé
    Par kiki29 dans le forum Contribuez
    Réponses: 0
    Dernier message: 15/03/2008, 18h36

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