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 d'une feuille dans un autre classeur suivant une date [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Novembre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 32
    Par défaut Copie d'une feuille dans un autre classeur suivant une date
    Bonjour a tous,

    J'ai récupérée une macro que je vous joint ci-dessous dans le code, qui été prévus pour faire une copie d'une feuille en fonction que si la date en en "A" de la première feuille soit identique à la deuxième sinon il ce passe rien. Je les modifiés pour ouvrir un classeur et faire la copie suivant les dates, et la est mon problème. La macro vas chercher une date dans une cellule donnée sur le classeur Etape 1 et vas chercher dans le classeur etape 2 une autre cellule donnée pour vérifier si les deux dates sont identique elle copie, alors que moi dans mon fichier les dates son bien en colonne A mes elle peuvent ce trouver au millier en bas ect. donc je ne peux avoir une cellule fixe pour la recherche. j'ai essayé plusieurs possibilité et je n'arrive pas du tout a un bon résultat.

    Pour une meilleur compréhension je vous joint mes deux fichier de test Etape 1 avec la macro et Etape 2 qui reçois la copie

    Pouvez vous m'aider

    Merci bien a tous

    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
    Sub testcpd()
     
    ' wsd = référence de la feuille données
    Set wsd = Worksheets("test1")
     
    'dld dernière ligne de la feuille données sur base de la colonne A
    dld = wsd.Range("A" & Rows.Count).End(xlUp).Row
     
    ' wsc référence du classeur et de la feuille
    Set wsc = Workbooks.Open("Etape2.xlsx").Worksheets("SOURCE")
     
    ' on recherche en ligne 5, la date qui se trouve en B1 sur wsd, on met le résultat dans un range nommé re
    Set re = wsc.Rows("1:3").Find(wsd.Range("A3"), lookat:=xlWhole)
     
    ' si re n'est pas vide = on Affiche
    If Not re Is Nothing Then
     
    ' on copie la plage A3:AE72 du fichier test1
    wsd.Range("A3:AE72").Copy
     
    ' à partir de la cellule en ligne 3 dans la colonne dans laquelle on a trouvé la date
    wsc.Cells(3, re.Column).PasteSpecial Paste:=xlValues
     
    End If
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 335
    Par défaut
    Bonjour,

    Je suppose que c'est ceci que vous voulez faire:
    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
    Option Explicit
     
    Sub testcpd()
        Dim wsD As Worksheet, wsC As Worksheet, rE As Range
        Set wsD = Worksheets("test1")
        Set wsC = Workbooks("Etape2.xlsx").Worksheets("SOURCE") '--- fichier supposé déjà ouvert
        '--- cherche si wsD.[A3] déjà inscrit dans wsC, colonne 1
        Set rE = wsC.Columns(1).Find(wsD.Range("A3"), lookat:=xlWhole)
        If rE Is Nothing Then
            '--- date cherchée non trouvée dans feuille SOURCE
            '--- ne rien faire
        Else
            '--- date cherchée trouvée dans feuille SOURCE
            '--- copier plage A3:AE72
            wsD.Range("A3:AE72").Copy
            '--- à l'endroit où la date a été trouvée
            wsC.Cells(rE.Row, 1).PasteSpecial Paste:=xlValues
        End If
    End Sub
    Bonne continuation.

  3. #3
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Novembre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 32
    Par défaut
    Bonjour EricDgn,

    Je viens de tester ton script le truc c'est qu'il vas chercher la date quand A3 dans le classeur etape2 mais la date peux ce trouver en A16 comme A6300 mais toujours sur la colonne A. Et'il possible de dire dans le script qu'il cherche la date sur la colonne A du classeur etape2 et colle les données du classeur etape1 ( A3:A72) sur la bonne date du classeur etape 2 ?

    Un grand merci pour ton aide

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 335
    Par défaut
    Dans la macro présentée, celle-ci prend la date qui se trouve en A3 de la feuille "test1" de "étape1" (wsD.Range("A3")) et va chercher où se trouve cette date dans la colonne A de la feuille "SOURCE" de "étape2" (wsC.Columns(1)) pour y copier la plage A3:AE72.

    En testant, je vois que dans la feuille "SOURCE" la date en ligne 75 n'est pas une valeur, mais une formule, aussi il faut changer la ligne 8 du code en ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Set rE = wsC.Columns(1).Find(wsD.Range("A3"), LookIn:=xlValues, LookAt:=xlWhole)
    Si la date trouvée est en ligne 75, c'est là, en A75, qu'elle sera copiée.

    Cordialement.

  5. #5
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Novembre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 32
    Par défaut
    Un grand grand grand merci à toi EricDgn.
    Ça fonctionne au top et je comprend mieux l’erreur.

    Encore merci pour ton aide 😉

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

Discussions similaires

  1. [XL-2010] Problème de copie d'une feuille dans un autre classeur
    Par Mic13710 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/12/2017, 10h16
  2. [XL-2010] Copier une feuille dans un autre classeur méthode .copy ne marche pas
    Par Dragern dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/12/2015, 12h31
  3. Réponses: 31
    Dernier message: 13/07/2015, 18h37
  4. [XL-2010] Copie d'une feuille dans un autre classeur
    Par backx3 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/10/2014, 17h08
  5. Réponses: 2
    Dernier message: 15/02/2008, 10h24

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