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 cellule classeur 1 vers classeur 2 (presque arrivé) [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    re
    re est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Par défaut copier cellule classeur 1 vers classeur 2 (presque arrivé)
    Bonjour,

    je voudrais copier des cellules (A1 et B3) du classeur 1 vers C1 pour la A1 et C2 pour B3 vers un nouveau classeur.
    je me suis inspiré de ce code mais ça ne marche que pour une cellule.
    comme vous voyez je ne suis pas un spécialiste ,-)

    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
    Sub COPIES()
        Dim Sortie As Workbook
        Dim FeuilleOrigine As Worksheet, FeuilleDestination As Worksheet
     
        'Référence la feuille origine des données à copier
        Set FeuilleOrigine = ThisWorkbook.Sheets("feuil1")
     
        NomFichierSortie = Application.GetOpenFilename("Fichier Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm")
     
        ' On verifie que l'on a selectionné un nom de classeur
        If NomFichierSortie <> False Then
            ' On ouvre le classeur
            Set Sortie = Workbooks.Open(NomFichierSortie)
              Range("A1").Copy
     
    ' je veux selectionner B3 du classeur d'origne
              ' ???? Set Sortie = Workbooks.Open(NomFichierSortie)
              '???? Range("B3").Copy
     
       ' ActiveSheet.Copy
            'Référence la feuille de destination des cellules copiées
            Set FeuilleDestination = Sortie.Sheets("feuil2")
            ' On copie les cellules de la feuille désirée vers la feuille de sortie
           With FeuilleOrigine
     
        ' nouveau classeur
          Windows("Classeur2.xls").Activate
        Sheets("Feuil2").Select
        ActiveSheet.Paste Range("C1")
     
    ' je veux copier la cellule B3 du classeur d'origine
        '??? ActiveSheet.Paste Range("C2")
     
               'celui ci ne copie rien pourquoi ? => .Range("G10:G125").Copy Destination:=FeuilleDestination.Range("G10")
            End With
     
            ' On ferme le classeur
            'Sortie.Close
        End If
    End Sub
    Merci de votre aide

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    A moins que tu tiennes vraiment à faire une copie, il y a plus simple, on stocke la valeur de tes sources dans des variables, ça donne (enfin j'espère, j'avoue ne pas avoir testé):

    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
    Sub COPIES()
        Dim Sortie As Workbook
        Dim FeuilleOrigine As Worksheet, FeuilleDestination As Worksheet
        Dim val1 as variant, dim val2 as variant
     
        val1 = ThisWorkbook.Sheets("feuil1").range("A1")
        val2 = ThisWorkbook.Sheets("feuil1").range("B3")
     
        NomFichierSortie = Application.GetOpenFilename("Fichier Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm")
     
        ' On verifie que l'on a selectionné un nom de classeur
        If NomFichierSortie <> False Then
            ' On ouvre le classeur
            Set Sortie = Workbooks.Open(NomFichierSortie)
              Range("A1").Copy
     'Par défaut le fichier Sortie est le fichier actif =>
    sheets("feuil2").range("c1")=val1
    sheets("feuil2").range("c2")=val2
     
            ' On ferme le classeur
            'Sortie.Close
        End If
    End Sub
    A+

  3. #3
    re
    re est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Par défaut
    Merci pour ta reponse mais ça ne copie pas, tu as une autre idée ?

    j'ai modifié comme ceci (si non c'est en rouge)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim val1 As Variant
        Dim val2 As Variant
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim val1 as variant, dim val2 as variant
    dans d'autre tests j'avais aussi essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ThisWorkbook.Sheets("Feuil2" ).Range("A" & ligne) = Workbooks(nomfichier).Sheets("Nombre" ).Range("F3" ).Value

  4. #4
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Désolé pour le dim, en effet à main levée j'ai fait une erreur, ça devait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Val1 as variant, val2 as variant
    Sinon, n'as tu jamais essayé ceci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("TonFichierSource.xls").Sheets("Feuil1").Range("a1").Copy Destination:=Sheets("sheet2").Range("c1")
    A mettre après l'ouverture du fichier cible.

    A+

  5. #5
    re
    re est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Par défaut
    J'ai fait ça mais sans resultat, "erreur 9, l'indice n'appartient pas à la selction" me dit il...
    Merci encore de ton aide

    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
    Sub COPIES()
        Dim Sortie As Workbook
        Dim FeuilleOrigine As Worksheet, FeuilleDestination As Worksheet
        Dim val1 As Variant, val2 As Variant
     
        val1 = ThisWorkbook.Sheets("feuil1").Range("A1")
        val2 = ThisWorkbook.Sheets("feuil1").Range("B3")
     
        NomFichierSortie = Application.GetOpenFilename("Fichier Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm")
     
        ' On verifie que l'on a selectionné un nom de classeur
        If NomFichierSortie <> False Then
            ' On ouvre le classeur
            Set Sortie = Workbooks.Open(NomFichierSortie)
              'Range("A1").Copy
     'Par défaut le fichier Sortie est le fichier actif =>
    'Sheets("feuil2").Range("c1") = val1
    'Sheets("feuil2").Range("c2") = val2
    Workbooks("T1.xls").Sheets("Feuil1").Range("a1").Copy Destination:=Sheets("Feuil2").Range("c1")
        'ThisWorkbook.Sheets("Feuil2").Range("A" & ligne) = Workbooks(nomfichier).Sheets("Nombre").Range("F3").Value
            ' On ferme le classeur
            'Sortie.Close
        End If
    End Sub

  6. #6
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Vérifie bien le nom de ton fichier et feuille, j'ai adapté le code comme suit pour faire un test chez moi et tout est OK, tu verras que mes feuilles sont Sheet1 et sheet2 car je suis en version GB

    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
    Sub COPIES()
    Dim Sortie As Workbook
     
    NomFichierSortie = Application.GetOpenFilename("Fichier Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm")
     
        ' On verifie que l'on a selectionné un nom de classeur
        If NomFichierSortie <> False Then
            ' On ouvre le classeur
            Set Sortie = Workbooks.Open(NomFichierSortie)
     
                Workbooks("T1.xls").Sheets("sheet1").Range("a1").Copy Destination:=Sheets("Sheet2").Range("c1")
     
            ' On ferme le classeur
            Sortie.Close
        End If
    End Sub
    A+

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

Discussions similaires

  1. [XL-2010] Copier feuille de classeur A vers classeur B
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/08/2012, 19h03
  2. Copier/Coller Classeur 1 vers Classeur 2
    Par Charlesraheb dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/07/2012, 20h45
  3. [XL-2007] Copie lignes classeur ferme vers classeur de travail (ouvert)
    Par stephadm dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 30/06/2012, 10h50
  4. Copier un module d'un classeur A à un classeur B
    Par sweetdood dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/04/2012, 13h49
  5. Copier et coller d"un classeur Excel vers un autre
    Par Anthos59 dans le forum VB.NET
    Réponses: 7
    Dernier message: 28/01/2011, 07h36

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