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 de cellules de différents fichiers excel dans un même fichier excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 20
    Points
    20
    Par défaut Copier de cellules de différents fichiers excel dans un même fichier excel
    Bonjour à tous


    J'ai une question pourtant qui me parait être assez simple: Copier une valeur d'un fichier excel et la copier dans un autre fichier excel.

    Cette macro se situe dans mon fichier de sortie qui va ouvrir d'autre fichiers excels et rappatrier certaines cellules.

    J'ai fait ce code en essayant de décomposer le plus en fonction/procédure car j'ai beaucoup de cellules à copier dans mon fichier de sortie "sortie.xls".Malheureusement j'ai des problèmes d'activation de feuilles et d'ouverture de fichiers...

    Si vous pouviez m'aider se serait super

    Ps: Si vous avez une solution encore plus simple, je suis preneur!

    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
    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
    58
    59
    60
    61
    62
    63
    64
     
    Function Ouvre(CheminClasseur As String) As Workbook
     
       Dim ClasseurSource As Workbook, ClasseurCible As Workbook
     
        Ouvre = Null
       If VerifOuvertureClasseur(CheminClasseur) Then
           MsgBox "Classeur " & CheminClasseur & " déja ouvert." 'Que faire si déjà ouvert?
       Else
           Set ClasseurSource = Application.Workbooks.Open(CheminClasseur)
           Application.DisplayAlerts = False
           Ouvre = ClasseurCible
     
     
       End If
    End Function
     
    Function VerifOuvertureClasseur(Fichier As String) As Boolean
       Dim x As Integer
     
       On Error Resume Next
       x = FreeFile()
     
       Open Fichier For Input Lock Write As #x 'préciser les options d'accès au fichier, ici verouillé en écriture...
       Close x
     
       If Err.Number = 0 Then VerifOuvertureClasseur = False
       If Err.Number = 70 Then VerifOuvertureClasseur = True
     
       On Error GoTo 0
    End Function
     
     
     
    Sub CopierCellule(FichierSource As String, NbLigneSource As Integer, NbColonneSource As Integer, NbLigneDest As Integer, NbColonneDest As Integer)
     
    Dim valeur As Integer
    Dim classeur As Workbook
     
     
    classeur = Ouvre(FichierSource)
    classeur.Worksheets(1).Activate 'j active la page   ICI EST LE PB 
    valeur = Workbooks(FichierSource).Sheets("XXX").Cells(NbLigneSource, NbColonneSource).Value ' je cherche dans longlet XXX la valeur de la cellule
    Workbooks("sortie.xls").Worksheets("XXX").Cells(NbLigneDest, NbColonneDest).Value = valeur
    Workbooks("sortie.xls").close
     
     
     
     
     
    End Sub
     
     
    ' Recherche des éléments nécessaires dans le fichier Excel d'analyses
     
    Sub OnCopie()
     
    ' ici on essaie de copier différents fichier1 dans sortie.xls mon fichier courant qui contient la macro
     
    Call CopierCellule("fichier1.xls", 5, 5, 2, 5)
    Call CopierCellule("fichier2.xls", 5, 5, 3, 8)
     
     
    End Sub

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    N'oublie pas le Set pour les objets WorkBook
    Sans tester, essaies ceci
    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
    Function Ouvre(CheminClasseur As String) As Workbook
     
    If VerifOuvertureClasseur(CheminClasseur) Then
        MsgBox "Classeur " & CheminClasseur & " déja ouvert."    'Que faire si déjà ouvert?
    Else
        Set Ouvre = Workbooks.Open(CheminClasseur)
    End If
    End Function
     
    Sub CopierCellule(FichierSource As String, NbLigneSource As Integer, NbColonneSource As Integer, NbLigneDest As Integer, NbColonneDest As Integer)
    Dim valeur As Double
    Dim Classeur As Workbook
     
     
    Set Classeur = Ouvre(FichierSource)
    If Not Classeur Is Nothing Then
        valeur = Classeur.Worksheets("XXX").Cells(NbLigneSource, NbColonneSource).Value    ' je cherche dans longlet XXX la valeur de la cellule
        ThisWorkbook.Worksheets("Synthèse RBU3").Cells(NbLigneDest, NbColonneDest).Value = valeur
        Set Classeur = Nothing
        MsgBox "Import réussi"
    Else
        MsgBox "Import failed"
    End If
    End Sub

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 97
    Points : 135
    Points
    135
    Par défaut
    Salut,

    J'ai écrit un petit code, qui fonctionne aussi, et que me parait plus simple.

    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
     
    Public Type Tampon
        Tmp1 As String
        Tmp2 As String
        Tmp3 As Integer
        Tmp4 As Integer
    End Type
     
     
     
    Public Sub Transfert()
     
        Dim fichier As String
        Dim T As Tampon
     
        fichier = ThisWorkbook.Path & "\FeuilleTransfert.xls"
     
        T.Tmp1 = Range("A1")
        T.Tmp2 = Range("A2")
        T.Tmp3 = Range("A3")
        T.Tmp4 = Range("A4")
     
        Workbooks.Open Filename:=fichier
     
        Workbooks("FeuilleTransfert.xls").Activate
     
        Range("A1") = T.Tmp1
        Range("A2") = T.Tmp2
        Range("A3") = T.Tmp3
        Range("A4") = T.Tmp4
     
     
    End Sub
    Tu crées une variable public "type" dans un module. Dans ta macro, tu entres les données de ta feuille d'origine, t'ouvre ton autre classeur et tu bennes tout ce qu'il y a dans ta variable "type" dans ton nouveau classeur. Tu peux faire çà aussi avec un module de classe, si tu veux élaborer un peu plus ton programme. Chez moi çà marche très bien ce système. J'espère t'avoir aidé.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    Merci pour vos réponses

    Ca marche nickel

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/07/2014, 17h20
  2. Copier des données excel dans un autre fichier excel
    Par titemireille dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/10/2007, 20h57
  3. Copier une cellule XL pour l'insérer dans un document Word
    Par COCONUT2 dans le forum Contribuez
    Réponses: 1
    Dernier message: 19/07/2007, 09h50
  4. [DOM] (org.w3c.dom) copier un noeud d'un fichier XML dans un autre fichier XML
    Par snoop dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 13/02/2007, 17h22
  5. Réponses: 28
    Dernier message: 22/05/2006, 16h25

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