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 avec un range


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Janvier 2020
    Messages : 11
    Points : 11
    Points
    11
    Par défaut copier avec un range
    Bonjour tout le monde!

    J'essaye de copier une colonne sous son titre jusqu'au dernier element d'un workbook ouvert vers le workbook actuel mais jai toujours un erreur j'tuilise excel 2013 voici mon code:
    La fonction range_finer me donne le numero de la colonne selon le titre recherché. Ensuite je trouve la derniere ligne non vide avec une loop rng est un range et quand je veux copier j'obtient l'erreur 1004? quelqu'un a une idée.
    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
     
     colonne = range_finder(OpenBook, ThisWorkbook, wscopy, wsdest, Titrecolonne(13))
        ligne = 1
        Do While (IsEmpty(wscopy.Cells(ligne, colonne).Value)) = VRAI
            ligne = ligne + 1
        Loop
     
        ligne = ligne - 1
     
        'ligne = Cells(1, 1).End(xlDown).Row
     
        'Ligne = Cells(Rows.Count, Colonne).End(x1down).Row
        Set Rng = Range(Cells(2, colonne), Cells(ligne, colonne))
        OpenBook.Activate
        OpenBook.Sheets(2).Range("Rng").Copy

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Janvier 2020
    Messages : 11
    Points : 11
    Points
    11
    Par défaut code changé
    j'ai changer mon code et le copy semble marcher mais le paste ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Set Rng = Range(Cells(2, colonne), Cells(ligne, colonne))
        OpenBook.Activate
        Sheets(2).Select
        Range(Cells(2, colonne), Cells(ligne, colonne)).Copy
        ThisWorkbook.Activate
        Sheets(1).Select
        ThisWorkbook.Sheets(1).Range("A30").Paste

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Janvier 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Janvier 2020
    Messages : 11
    Points : 11
    Points
    11
    Par défaut code changé encore
    Avec ce code je reussi a paste sur le bon document mais il copy du meme document au lieu du document OpenBook?

    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
    colonne = range_finder(OpenBook, ThisWorkbook, wscopy, wsdest, Titrecolonne(13))
        ligne = 1
        Do While (IsEmpty(wscopy.Cells(ligne, colonne).Value)) = VRAI
            ligne = ligne + 1
        Loop
     
        ligne = ligne - 1
     
        'ligne = Cells(1, 1).End(xlDown).Row
     
        'Ligne = Cells(Rows.Count, Colonne).End(x1down).Row
        Set Rng = Range(Cells(2, colonne), Cells(ligne, colonne))
        OpenBook.Activate
        Sheets(2).Select
        Range(Cells(2, colonne), Cells(ligne, colonne)).Copy
        ThisWorkbook.Activate
        Sheets(1).Select
        ActiveSheet.Paste Destination:=Range("A30")

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Eternel problème.
    Une cellule a comme parent sa feuille qui elle même a comme parent son classeur donc en utilisant l'objet Range sans préciser sa parentalité complète VBA va choisir par défaut la cellule de la feuille active (qui fait partie du classeur actif)

    Si vous avez deux lieux de résidence et qu'à la personne au téléphone, vous dites "je suis dans mon salon", il ne saura pas si vous parlez du salon de la maison A ou de la maison B
    En revanche, si vous dites, "je suis dans le salon de ma maison de campagne". Il y a des chances de lever toute ambiguïté sur le lieu où vous vous trouvez.

    Donc avec le VBA, le code ci-dessous ne laisse pas la place au hasard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("Compta2019.xlsx").Worksheets("Budget").Copy After:=Workbooks("ComptaRecap").Worksheets("Sommaire")
    Et bien entendu Workbooks("Compta2019.xlsx") comme Worksheets("Budget") et les autres peuvent être remplacés par des variables objets
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [XL-2016] VBA : Copier variable tableau 1 dimension vers feuille excel avec un range
    Par windsor dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/03/2019, 09h24
  2. [XL-2010] VBA copier avec un range
    Par Fackem dans le forum Excel
    Réponses: 2
    Dernier message: 04/08/2014, 14h49
  3. [XL-2007] VBA Copier Coller vers cellules precises avec des ranges aleatoires
    Par thibault12500 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/12/2013, 16h47
  4. Comment récuperer la position d'une cellule avec un Range.
    Par branqueira dans le forum VBA Access
    Réponses: 1
    Dernier message: 28/05/2007, 11h39
  5. [VBA-E]Pb avec objet Range
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/07/2006, 16h02

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