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 de cellules discontinues d'un fichier à un autre [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut Copie de cellules discontinues d'un fichier à un autre
    Bonjour,

    Je sais comment copier une valeur d'une cellule d'un fichier Excel A vers un autre fichier EXcel B
    Mais je souhaiterais réaliser un code qui permettrait en une seul fois de copier des cellule discontinues de la feuil1 d'un fichier Excel A vers des cellules discontinues de la feuil2 d'un fichier Excel B :
    Exemple:
    Copier la cellule A2 et C2 de la feuil1 du fichier Excel A vers les cellules A2 et C2 de la feuil2 du fichier Excel B

    Marc_L serais tu prêt encore à me prêter quelques instants de ton temps..

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par facteur Voir le message
    Copier la cellule A2 et C2 de la feuil1 du fichier Excel A vers les cellules A2 et C2 de la feuil2 du fichier Excel B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("fichier A").Worksheets("feuil1").Range("A2:C2").Copy destination:=Workbooks("fichier B").Worksheets("feuil2").Range("A2")
    Mais perso, je préfère le faire en deux coups :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks("fichier A").Worksheets("feuil1").Range("A2:C2").Copy
    Workbooks("fichier B").Worksheets("feuil2").Range("A2").PasteSpecial(xlPasteAll)

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    salut menhir,
    dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("fichier A").Worksheets("feuil1").Range("A2:C2").Copy
    tu copie de A2 à C2 alors que je souhaite :
    copier la cellule A2 de la feuil1 du fichier A vers la cellule A2 de la feuil2 du fichier B
    copier la cellule C2 de la feuil1 du fichier A vers la cellule C2 de la feuil2 du fichier B

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Menhir,
    j'ai trouvé, mais j'aimerais simplifié mon code en affectant des variables au classeur et à la feuille.
    Ci dessous , un échantillon du code :
    J'ai un message d'erreur à la ligne 12 :
    Rune time error 438...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim wbR As Workbook
    Dim ShR As Worksheet
     
    Dim DercolDonnee As Integer
    Dim ligfin As Integer
     
    Workbooks("A.xlsm").Worksheets("feuil1").Activate
     
    Set wbR = Workbooks("A.xlsm")
    Set ShR = Worksheets("feuil1")
     
    ligfin = wbR.ShR.Range("G2").End(xlDown).Row 
    DercolDonnee = wbR.ShR.Cells(1, Columns.Count).End(xlToLeft).Column

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par facteur Voir le message
    dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("fichier A").Worksheets("feuil1").Range("A2:C2").Copy
    tu copie de A2 à C2 alors que je souhaite :
    copier la cellule A2 de la feuil1 du fichier A vers la cellule A2 de la feuil2 du fichier B
    copier la cellule C2 de la feuil1 du fichier A vers la cellule C2 de la feuil2 du fichier B
    Franchement, tu ne fais pas d'effort.
    Si tu veux traiter les deux cellules séparément, il suffit de le faire en deux fois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks("fichier A").Worksheets("feuil1").Range("A2").Copy destination:=Workbooks("fichier B").Worksheets("feuil2").Range("A2")
    Workbooks("fichier A").Worksheets("feuil1").Range("C2").Copy destination:=Workbooks("fichier B").Worksheets("feuil2").Range("C2")
    Ca, ça ne marche pas.
    Citation Envoyé par facteur Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set wbR = Workbooks("A.xlsm")
    Set ShR = Worksheets("feuil1")
     
    ligfin = wbR.ShR.Range("G2").End(xlDown).Row
    Quand une variable désigne un onglet, c'est de manière absolue et non pas relative à un classeur.
    Ton ShR ne désigne pas les onglets nommés "feuil1" mais uniquement l'onglet "feuil1" du classeur actif au moment où elle est renseigné.
    Il est donc inutile d'utiliser wbR pour la désigner.

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Bonjour mehnir

    Je fais des efforts ..je t'assure
    Ce que je souhaitais c'est de ne pas repeter des lignes de codes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks("A.xlsm")
    Workbooks("B.xlsx").Worksheets("feuil1")
    Voici la partie de codes que je voulais rendre plus agréable à lire


    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
    Dim DercolDonnee As Integer
    Dim ligfin As Integer
     
    Dim MyRangeTotal As Range
    Dim MyRangeDate As Range
    Dim MyRangeTG1 As Range
     
    Dim Rcible As Range
    Dim Dcible As Range
    Dim TG1cible As Range
     
    ........
     
     
    Set MyRangeTotal = Workbooks("A.xlsm").Worksheets("feuil1").Range(Cells(2, DercolDonnee), Cells(ligfin, DercolDonnee))
     
     
    Set MyRangeDate = Workbooks("A.xlsm").Worksheets("feuil2").Range("B7")
     
    Set MyRangeTG1 = Workbooks("A.xlsm").Worksheets("feuil2").Range("B22")
     
     
     
     
    'Opération copier/coller sur le fichier B
     
    Set Rcible = Workbooks("B.xlsx").Worksheets("feuil1").Range("D1").End(xlDown).Offset(1, 0) 'selection de la 1ere cellule non vide de la colonne D
    MyRangeTotal.Copy
    Rcible.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
     
    Set Dcible = Workbooks("B.xlsx").Worksheets("feuil1").Range("C1").End(xlDown).Offset(1, 0) 'selection de la 1ere cellule non vide de la colonne C
    MyRangeDate.Copy
    Dcible.PasteSpecial Paste:=xlPasteValues
     
    Set TG1cible = Workbooks("B.xlsx").Worksheets("feuil1").Range("V1").End(xlDown).Offset(1, 0) 'selection de la 1ere cellule non vide de la colonne V
    MyRangeTG1.Copy
    TG1cible.PasteSpecial Paste:=xlPasteValues
    .....
    End Sub
    Menhir,

    J'ai un soucis que je n'aie pas pris en compte.

    Pour résume , le classeur Workbooks("A.xlsm") va prendre un autre nom du type "Rapport aammjj" (aammjj étant une date) avant que je lance le code vba de copier/coller.
    J'ai trouvé sur le form un code vba ( merci pour le propriétaire de ce code ) qui permet d'activer le classeur dont le nom commence par toto


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'ACTIVER Rapport aammjj
     
        For Each wbR In Workbooks
            If Left(wbR.Name, 10) = "Rapport 16" Then
                wbR.Activate
                ok = True
            End If
            If ok Then Exit For
        Next wbR
        If ok Then
            ' suite du traitement
        Else
            MsgBox "Fichier non trouve"
        End If
    le code est pas mal, mais je crains par la suite d'avoir d'autre fichier dont le nom commence par "Rapport " et dont je ne souhaite pas activer.
    Y a t il une autre moyen d'y pallier ?
    Pour l'instant, pour éviter toutes confusion j'ai rajouter dans le code l'année 16 ( qui correspond à 2016)
    L'idéal serait de pouvoir inserer dans la ligne 4 du code ci dessous le format date aammjj
    merci d'avance

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

Discussions similaires

  1. [WD-2003] Copie d'une sélection d'un fichier à un autre
    Par naunau31 dans le forum VBA Word
    Réponses: 1
    Dernier message: 22/04/2012, 19h19
  2. [XL-2003] copie de cellules d'une feuille sur une autre
    Par jlppap dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/08/2009, 16h44
  3. Copie de cellules d'un onglet dans un autre
    Par sebicool dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/01/2009, 12h23
  4. Trie & copie de cellules d'une feuille vers une autre feulle
    Par DomVenesmes dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2008, 10h26
  5. Copy / Paste de Range d'un fichier à un autre
    Par hochimi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/07/2007, 14h15

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