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 :

Aide sur code vba copier/coller [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Points : 26
    Points
    26
    Par défaut Aide sur code vba copier/coller
    Bonsoir à tous

    Je suis actuellement entrain de travailler sur un projet
    mon soucis est que j'ai des données qui proviennent d'une première feuille et que je souhaiterais les coller sur une seconde. Après avoir regardé sur certains message, il s'avererait que mon souci provienne des cellules fusionnées... Y a t'il un moyen de détourner ce problème ?

    Merci de votre aide

    Voici mon code, ainsi une copie du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Copier()
    Sheets("Feuil1").Range("F4", Range("F4").End(xlDown)).Copy
    Sheets("Feuil2").Range("C4", Range("F4").End(xlDown)).PasteSpecial Paste:=xlPasteFormats
    Sheets("Feuil2").Range("C4", Range("F4").End(xlDown)).PasteSpecial Paste:=xlPasteValues
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Bonjour
    La formulation est incorrecte, essayer avec ceci. Mais je doute que le résultat obtenu soit celui qui est attendu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Copier()
    Sheets("Feuil1").Range("F4", Sheets("feuil1").Range("F4").End(xlDown)).Copy
    Sheets("Feuil2").Range("C4", Sheets("Feuil2").Range("F4").End(xlDown)).PasteSpecial Paste:=xlPasteFormats
    Sheets("Feuil2").Range("C4", Sheets("Feuil2").Range("F4").End(xlDown)).PasteSpecial Paste:=xlPasteValues
    End Sub

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Bonsoir Keygen08,

    Merci pour ta réponse mais effectivement cela ne marche pas, le code me défusionne les cellules fusionnées de la feuille 2 mais par contre me colle bien les cellules en C4 jusqu'à C9 mais me rajoute à des cases encadrées jusqu'à l'infini ???

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2013
    Messages : 18
    Points : 27
    Points
    27
    Par défaut
    Hello,

    Ton souci, comme tu le dis, c'est que tu ne peux pas copier/coller tes cellules dans des cellules fusionnées; Parce qu'Excel le refuse.
    Pour contourner ce problème, tu peux opter pour un copier/coller "pas à pas", c'est-à-dire cellule par cellule, l'une après l'autre, en copiant d'abord le contenu puis le format.

    Voici un début de réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Copier2()
        Plage = Sheets("Feuil1").Range("F4", Sheets("Feuil1").Range("F4").End(xlDown))
        Sheets("Feuil2").Range("C4").Select
        For Each Cellule In Plage
            ActiveCell = Cellule
            '
            '
            '
            '
            ActiveCell.Offset(1, 0).Select
        Next
    End Sub

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Bonsoir Kitty,

    Alors là, je sèche ... Je ne vois pas comment compléter ce code... par une boucle ?

  6. #6
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Pourquoi tu n'essaie pas le code de Kitty au lieu de dire des sottises.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2013
    Messages : 18
    Points : 27
    Points
    27
    Par défaut
    Dans la boucle "For ... Next", tu insères autant de lignes correspondants aux informations que tu souhaites dupliquer. Dans mon exemple, je ne copie que le contenu de la cellule d'origine.
    Pour dupliquer également le format numérique, tu insères la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.NumberFormat = Cellule.NumberFormat
    et ainsi de suite pour toutes les infos à dupliquer.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Bonsoir Kitty,

    Merci pour tes réponses.

    Ton code fonctionne bien lorsque je suis positionné sur la feuille 2 et que j'active la macro à partir de visual basic.
    Mais dés que je suis positionné sur la feuille 1 et que j'active la macro soit par visual basic, soit par bouton, j'ai un défaut "erreur 1004 :la méthode select de la classe Range a échoué".
    Peux tu me dire d'où cela peut provenir ?

    Merci d'avance

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2013
    Messages : 18
    Points : 27
    Points
    27
    Par défaut
    Hello youlig,

    Si tu positionnes ta macro dans la feuille 1, le code associé est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub Copier2()
        Plage = Range("F4", Range("F4").End(xlDown))
        Sheets("Feuil2").Range("C4").Select
            '
            '
    End Sub
    Si tu positionnes ta macro dans la feuille 2 ...:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub Copier2()
        Plage = Sheets("Feuil1").Range("F4", Sheets("Feuil1").Range("F4").End(xlDown))
        Range("C4").Select
            '
            '
    End Sub
    Et si tu positionnes ta macro dans un module ...:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub Copier2()
        Plage = Sheets("Feuil1").Range("F4", Sheets("Feuil1").Range("F4").End(xlDown))
        Sheets("Feuil2").Select
        Range("C4").Select
            '
            '
    End Sub

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup Kitty, Ca marche !!! Je vais pouvoir avancer sur la suite...

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

Discussions similaires

  1. [XL-2013] Erreur sur code pour copier-coller en valeur
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/01/2015, 09h55
  2. [XL-2003] Aide sur code VBA sur Excel
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/03/2013, 17h14
  3. [XL-2007] Besoin d aide sur code vba
    Par alexandrek dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/01/2011, 17h10
  4. [XL-2000] Aide sur Code VBA
    Par Dan21 dans le forum Excel
    Réponses: 3
    Dernier message: 08/02/2010, 14h38
  5. code VBA copier coller
    Par AVNAIM dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 01/06/2008, 12h22

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