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 donnée d'une feuille vers d'autres feuilles d'un autre classeur sous conditions


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut Copie de donnée d'une feuille vers d'autres feuilles d'un autre classeur sous conditions
    Salut le forum

    Le problème que je sollicite de l'aide est l'inverse du post ci-dessous:
    http://www.developpez.net/forums/d14...e-differentes/
    J'ai essayé à partir de la solution du post ci-dessus pour adapter le code mais j'arrive pas.
    Voici le code et juste en bas du code je vous explique ce que je souhaite réellemnt aboutir:
    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
    Option Explicit
     
    Sub Obj_credit()
    Dim Rng_source As Range
    Dim Rng_cible As Range
    Feuille As Worksheet
    Dim I As Integer
     
    Dim Classeur_source As String
    Dim Classeur_cible As String
     
    Classeur_source = "OBJECTIFS 15 RECAP REAL 2014.xlsx"
    Classeur_cible = "Maquette Obj_2015.xlsm"
     
    With Workbooks(Classeur_cible)
        With Worksheets("OBJ 15 CPTES")
            Set Rng_source = .Range("C6")
            For I = 0 To .Feuille.Find("*", , , , , xlPrevious).Row
                With Workbooks(Classeur_source)
                    If FeuilleExiste(Classeur_source, Rng_source.Offset(I, 2)) Then
                        With .Worksheets(CStr(Rng_source.Offset(I, 2)))
                            .Range("D6").Value = Rng_source.Offset(I, 1)
     
                        End With
                    End If
                End With
            Next I
        End With
    End With
    End Sub
     
    Public Function FeuilleExiste(strNomClasseur As String, strNomFeuille As String) As Boolean
     
    FeuilleExiste = Not (IsError(Evaluate("='[" & strNomClasseur & "]" & strNomFeuille & "'!A1")))
     
    End Function
    En effet, j'ai 2 classeurs excel.
    Le premier classeur contient les données que je souhaite copier vers le 2è classeur.
    Les données à copier se trouvent sur la feuille "Objectifs2".
    les conditions du copiage sont les suivantes:
    - la colonne C de la feuille "Objectifs2" contient dans la plage C6 :C40 le nom des agences.
    si je prend la première agence dont le nom se trouve en C6, ces données se trouvent sur la ligne D6:M6, la 2ème agence se trouve en C7 donc ces données se trouvent sur la ligne D7:M7 et ainsi de suite...
    Le deuxième classeur contient les feuilles comportant le nom des agences issue de la plage C6:C40.
    Si je copie une donnée de la feuille "Objectifs2" du premier classeur correspondant à celle d’une agence, cette donnée devra être collée sur le nom de la feuille du 2è classeur et ayant le même nom d’agence que celle de la source de donnée.
    Exemple 1 : si je copie D6 qui correspondant à une donnée de l’agence dont le nom est en C6 (SIEGE), cette donnée devra être collée sur la cellule définie de la feuille (SIEGE) du 2è classeur .
    Si d'autres informations vous seront utile pour pouvoir m'aider, merci de me faire un feedback car le traitement est fastidieux manuellement et récurrent.

    Merci

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour capi81,

    Tout d'abord, d'après tes explications, je te propose de mettre With Worksheets("Objectifs2") au lieu de With Worksheets("OBJ 15 CPTES").
    Ensuite, si toutes tes feuilles se trouvent sur la colonne C, met plutôt If FeuilleExiste(Classeur_source, Rng_source.Offset(I, 0)) Then au lieu de If FeuilleExiste(Classeur_source, Rng_source.Offset(I, 2)) Then.
    Essaye déjà ça !

    Cordialement,
    Kimy

    EDIT : Idem pour l'offset ici : With .Worksheets(CStr(Rng_source.Offset(I, 0))) au lieu de With .Worksheets(CStr(Rng_source.Offset(I, 2))).

Discussions similaires

  1. [XL-2003] Copié des données dans une feuille vers une autre
    Par guillaumepops dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/03/2012, 15h43
  2. Copie de données d'une table vers une autre en récupérant les ID
    Par NabuchodonosorII dans le forum Développement
    Réponses: 1
    Dernier message: 11/12/2011, 15h23
  3. Réponses: 3
    Dernier message: 15/10/2008, 09h24
  4. Transfert des données d'une boucle vers une feuille
    Par chelmi95 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/09/2007, 13h03
  5. copie données d'une table vers une autre
    Par wasaa dans le forum Access
    Réponses: 5
    Dernier message: 14/09/2006, 17h04

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