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-E copie de cellules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut VBA-E copie de cellules
    Bonjour,
    Je n'ajoute pas une réponse, mais une question.
    J'ai un code qui copie une plage de cellulles de la feuille 1 vers la feuille 2. Cette plage est une série de cellules de la même colonne. J'ai essayé 3 formules (2 conseillées par le message d'erreurs de VBA-E, la 3ème d'après le code que Bbil a proposé le 18.12.06 à 9 h. 41):
    a) sur la feuille 2, je sélectionne, dans la colonne de destination, exactement le même nombre de cellules qu'il y en a dans ma sélection à copier à partir de la 1ère feuille. Erreur: "La zone de destination n'a pas la même forme que la zone de copie"
    b) sur la feuille 2, je sélectionne la 1ère cellule de la colonne de destination. Erreur: comme avec l'autre méthode.
    c) J'adapte (maladroitement ?)la ligne de code de Bbil à mon contexte. Celle-ci donne Erreur définie par l'application ou par l'objet.

    Je précise que mes références sont des index. D'ailleurs voici le
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     'Range("B1").Activate
     'ActiveCell.EntireColumn.Select
     '                 Application.CutCopyMode = False
     '                 Selection.Copy
    'ActiveWorkbook.Sheets("entrepot").Activate
    'Range("A1").Select
    '                pas = 1
    '                Do Until Selection = ""
    '                    Selection.Offset(0, pas).Select
    '
    ''                Loop
     '                   'Cells(1, pas + 2).Select
     '                 ActiveCell.EntireColumn.Select
     '                 ActiveSheet.Paste
     
     
     
     'Variante de la section transitoire
      pas = 1
     ''Range(Cells(1, 2), Cells(20, 2)).Select
     ''       Application.CutCopyMode = False
     ''      Selection.Copy
     
      ''       ActiveWorkbook.Sheets("entrepot").Activate
      ''       Range("A:A").Value = Empty
      ''       Range("B1").Select
     
       ''             Do Until Selection = ""
       ''                 Selection.Offset(0, pas).Select
       ''                 pas = pas + 1
        ''            Loop
        ''               Cells(1, pas + 1).Select
             'Range(Cells(1, 1 + pas), Cells(20, 1 + pas)).Select
     
             'Variante:
        ''      ActiveSheet.Cells(1, 1 + pas).Activate
        ''     r = 1 + pas
        ''     ActiveSheet.Paste
     
     
             '2ème variante d'après Développeurs.com
      ActiveWorkbook.Sheets("entrepot").Activate
             Range("A:A").Value = Empty
             Range("B1").Select
     
                    Do Until Selection = ""
                        Selection.Offset(0, pas).Select
                        pas = pas + 1
                    Loop
    ThisWorkbook.Sheets("entrepot").Range(Cells(1, pas), Cells(20, pas)).Copy ThisWorkbook.Sheets _
        ("feuille_syntagmes").Range(Cells(1, 2), Cells(20, 2))
             'Range(Cells(1, 1 + pas), Cells(20, 1 + pas)).Select
     
             'fin de la Variante N° 1:
            ''  ActiveSheet.Cells(1, 1 + pas).Activate
           ''  r = 1 + pas
           ''  ActiveSheet.Paste


    La moulinette Do Until vise à décaler la copie vers la prochaine colonne si la première sélectionnée n'est pas vide. Les diverses variantes cherchent à éviter l'erreur que je viens de mentionner mais donnent aussi des erreurs.
    Merci de vos lumières
    Cordialement
    Pierre

  2. #2
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut Copie de (plages de) cellulles
    Bonsoir,
    Si c'est moi qui ai déclaré ce fil Résolu, c'était par accident. Entre temps, ma question s'est précisée. En fait de "cellules", il s'agit d'un copier-coller entre 2 plages indexées de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(a, x), Cells(b, x)).Copy
    où a est la première ligne et b la dernière, déterminées par la procédure, et x la colonne. Les index gardent la même valeur pendant toutes l'opération. les 2 plages ont donc les mêmes dimensions.
    Ca ne marche pas (Erreur liée à l'application...). Ma conclusion: la méthode Paste ne fonctionne pas avec une plage indexée. C'est bien ça ou j'ai fait une autre erreur ? Si c'est ce dernier cas, je vous montrerai mon code.
    Merci d'avance de vos observations.
    Cordialement
    Pierre.

  3. #3
    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 : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Où se trouve ton code de copie, dans une feuille ou dans un module standard?

    Pour tout ce qui concerne les manipulations de plusieurs feuilles, il vaut mieux mettre le code dans un module.

    Tu as tout intérêt à utiliser des instances de feuilles plutôt que des Select et Activate.
    Un petit exemple (à compléter) adapté à ton cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim wksSource As Worksheet
    Dim wksDest As Worksheet
    Set wksSource = ThisWorkbook.Sheets("entrepot")
    Set wksDest = ThisWorkbook.Sheets("feuille_syntagmes")
    Range(wksSource.Cells(1, pas), wksSource.Cells(20, pas)).Copy wksDest.Cells(1, 2)
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  4. #4
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut Copie de plages de cellules
    Bonjour,
    Merci à AlainTech,
    Mon code est dans un module et j'ai créé des instances des classeurs et des feuilles mais je crois que je ne sais pas bien m'en servir.
    D'autre part, il serait peut-être plus simple de réunir toutes mes feuilles dans un seul classeur, n'est-ce pas ?
    Je vais revoir mon code en m'inspirant de ton exemple et on verra plus tard si j'ai encore des question .
    Cordialement
    Pierre

  5. #5
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut Copie de plages de cellules
    Rebonjour,
    J'ai essayé d'adapter à mon problème l'exemple d'AlainTech sous forme d'une petite sub mais elle me donne une erreur. Qu'est-ce que j'ai fait faux ?
    La voilà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub exemplealaintech()
     
    'Exemple d'AlainTech
     
    Dim Origine As Workbook
    Set Origine = Workbooks("saisiepoemes.xls")
    pas = 4
     
    Dim wksSource As Worksheet
    Dim wksDest As Worksheet
    Set wksSource = Origine.Sheets("feuille_saisie_syntagmes")
    Set wksDest = Origine.Sheets("entrepot")
    Range(Origine.Cells(1, pas), Origine.Cells(20, pas)).Copy wksDest.Range(Cells(1, pas), Cells(20, pas))
    End Sub
    Texte du message d'ereur: "Propriété ou méthode non gérée par cet objet."
    Merci d'avance d'y jeter un oeil.
    Cordialement
    Pierre

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Mars 2007
    Messages : 56
    Par défaut
    Cette erreur se produit sur quelle ligne dans le débogueur ?

  7. #7
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut Copie de cellules
    Sais pas où est allée ma réponse.
    Je recommence:
    euhhhh désolé, parlé pour ne rien dire.
    J'ai cherché et trouvé l'erreur et ça marche. merci bcp.
    Cordialement
    Pierre

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

Discussions similaires

  1. [XL-2003] VBA routine copie de cellule à une heure précise
    Par neofalken dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/01/2015, 14h44
  2. [VBA-E] Copie de cellules
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/12/2006, 11h51
  3. [VBA-E]Copie de cellule
    Par Wilgard dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 29/05/2006, 09h29
  4. [VBA-E]récup controle copie de cellules de fichiers
    Par Chin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2006, 10h26
  5. [VBA-E]Erreur lors d'une copie de cellules
    Par illight dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/02/2006, 11h22

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