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 cellules entre classeurs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 60
    Par défaut Copier cellules entre classeurs
    Bonjour,
    j'ai écrit un programme qui sert à copier des cellules d'un classeur Excel à un autre. Cà bug et je ne vois pas ce qu'il y a d'anormal. Quelqu'un pourrait m'aider svp.
    Merci d'avance.

    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 extraction() 
    Dim SearchString As String 
    Dim SearchChar As String 
    Dim MyPos As Integer 
    i = 3 
    NomFichierOrigine = "kkk" 
    Dim Wbk1 As Workbook, Wbk2 As Workbook 
    Set Wbk1 = ThisWorkbook 
    Set Wbk2 = Workbooks.Open(Filename:="C:\Users\Desktop\" & NomFichierOrigine & ".xlsx")
     
    Windows(NomFichierOrigine & ".xlsx").Activate 
    Wbk2.Sheets(1).Select 
    Wbk2.Sheets(3).Select 
     
    With Selection 
     
    For j = 3 To 28 
    Wbk1.Worksheets(1).Cells(i, j).Value = Wbk2.Worksheets(l).Cells(i, j).Value 
    Wbk1.Worksheets(3).Cells(i, j).Value = Wbk2.Worksheets(3).Cells(i, j).Value 
    j = j + 1 
     
    Next j 
    End With 
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Essaie avec ce code:
    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
    Option Explicit
     
    Public Sub Extraction()
     
        Dim i, j As Integer
        Dim NomFichierOrigine As String
        Dim Wbk1 As Workbook, Wbk2 As Workbook
     
        i = 3
        NomFichierOrigine = "kkk"
     
        Set Wbk1 = ThisWorkbook
        Set Wbk2 = Workbooks.Open(Filename:="C:\Users\Desktop\" & NomFichierOrigine & ".xlsx")
     
        For j = 3 To 28
     
            Wbk1.Worksheets(1).Cells(i, j).Value = Wbk2.Worksheets(1).Cells(i, j).Value
            Wbk1.Worksheets(3).Cells(i, j).Value = Wbk2.Worksheets(3).Cells(i, j).Value
     
        Next j
     
    End Sub
    Et vérifier bien que le le chemin 'C:\Users\Desktop\' est valide que le fichier 'kkk' existe et l'extension est bien en '.xlsx'.

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    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 : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Wbk1.Worksheets(1).Cells(i, j).Value = Wbk2.Worksheets(l).Cells(i, j).Value
    Je suppose que ce n'est pas l mais 1 qu'il fallait ou alors il faut donner une valeur à la variable l
    Petite remarque :
    Supprime toutes les instructions avec Select, Activate, Selection elles ne servent à rien dans ton code et de plus en VBA c'est à proscrire.
    Il serait bon de déclarer toutes tes variables.
    L'instruction j = j + 1 ne sert à rien non plus, la valeur de J étant affectée par la boucle.
    Je ne sais pas pourquoi tu utilises le bloc With Selection , il ne sert à rien non plus dans ton code.
    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

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 60
    Par défaut
    En effet, c'est le cas merci bien.
    sinon j'aimerai substitué une ligne par une autre.celle ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Wbk2 = Workbooks.Open(Filename:="C:\Users\Desktop\" & NomFichierOrigine & ".xlsx")
    je veux tout simplement definir Wbk2 = NomFichierOrigine sans avoir besoin de l'ouvrir car il est deja ouvert, s'il vous plait quelle commande je metterai?
    merci bien,

  5. #5
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Je fais actuellement la meme chose en faisant un fichier recapitulatif et cela fonctionne bien

    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
    Dim Fichier As String, Chemin As String
     
    Dim Wb As Workbook
    Dim Feuille As String
    Feuille = "Gestion Prix"
    Dim DerniereLigne As Integer
    Chemin = "R:\MS-SERV\Maintenance\GMAO\Contrat GMAO\"
    Dim nom As String
    Fichier = Dir(Chemin & "*.xls")
    Application.DisplayAlerts = False
    Application.AskToUpdateLinks = False
     
    Do While Fichier <> ""
        DerniereLigne = ThisWorkbook.Sheets("Extraction").Range("A" & Rows.Count).End(xlUp).Row + 1
        Set Wb = Workbooks.Open(Chemin & Fichier)
        nom = Wb.Name
        nom = Left(nom, Len(nom) - 4)
        Dim NContrat As String
        NContrat = Mid(nom, 1, 6)
     
        Dim X As Integer
        For X = 13 To 37
     
            If Wb.Sheets(Feuille).Range("C" & X).Value <> "" Then
                ThisWorkbook.Sheets("Extraction").Range("A" & DerniereLigne).Value = NContrat
                ThisWorkbook.Sheets("Extraction").Range("B" & DerniereLigne).Value = nom
                ThisWorkbook.Sheets("Extraction").Range("C" & DerniereLigne).Value = Wb.Sheets(Feuille).Range("C" & X).Value
                ThisWorkbook.Sheets("Extraction").Range("D" & DerniereLigne).Value = Wb.Sheets(Feuille).Range("I" & X).Value
                DerniereLigne = DerniereLigne + 1
            End If
     
        Next
     
    Wb.Close
     
    Set Wb = Nothing
     
    Fichier = Dir
     
    Loop
    Application.DisplayAlerts = True
    Application.AskToUpdateLinks = True
     
    End Sub

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ça dépend comment il est ouvert mais tu peux utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Wbk2 = Workbooks(NomFichierOrigine)

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 60
    Par défaut
    merci pour vos precieux conseils, ils me sont vraiments utiles.

    je souhaiterai copier la ligne x de la feuil1 du classeur1 et la ligne x de la feuil 3 du meme classeur vers les lignes 2 et 4 de la feuil 1 d'un autre classeur.

    j'ai essayé avec cette partie la mais ça marche pas, la macro me rempli que les données de la feuil1 du classeur1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For j = 3 To 28 
     
    Wbk1.Worksheets(1).Cells(2, j).Value = Wbk2.Worksheets(1).Cells(3, j).Value 
    Wbk1.Worksheets(1).Cells(4, j).Value = Wbk2.Worksheets(3).Cells(4, j).Value 
     
    Next j

Discussions similaires

  1. [XL-2007] Copier cellules depuis classeur fermé dans classeur ouvert hébergés dans lib sharepoint
    Par mattlovelara dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2014, 16h49
  2. [XL-2007] Copier cellules depuis classeur fermé dans classeur ouvert
    Par mattlovelara dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/03/2014, 09h49
  3. Copier une plage de cellule entre 2 classeurs
    Par azertym dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/02/2012, 11h11
  4. probleme de copie de valeur de cellule entre classeurs
    Par Iichham dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/06/2011, 13h32

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