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 données d'un classeur vers un autre classeur [XL-2007]


Sujet :

Macros et VBA Excel

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 26
    Points : 20
    Points
    20
    Par défaut Copie données d'un classeur vers un autre classeur
    Bonjour,

    Bon j'ai reformulé pour avoir si comme ça c'est plus claire

    Voilà la situation :

    Tout d'abord l'arborescence

    c:\..\DEC2010\Archive\Archive.xlsm
    dossier qui contient un classeur Archive

    ensuite pour chaque commande client
    c:\..\DEC2010\DateDemandeNomClient\CommandeDateDemandeNomClient.xlsm
    Dans ce classeur j'ai un petit formulaire avec case à cocher qui passera dans chaque service (probablement par un envoi par email), puis une autre feuille (sauvegarde) qui va répertorier l'ensemble des informations collectées (si ça a été vu ou pas) pour cette demande client, les informations se trouvent sur la uniquement sur ligne 2 de la feuille sauvegarde.
    Pour le moment, (je ne pense pas que ça soit la solution la plus légère) une fois qu'un service à cocher ses cases il clique sur un bouton enregistrer (un bouton par service) qui recopie ses données dans la feuille sauvegarde

    Le classeur archive lui ne contient qu'une feuille (archive) au même format (même cases, même ordre ex : Colonne B Date ; Colonne C Nom Client) que la feuille sauvegarde du classeur CommandeDateDemandeNomClient.xlsm

    J'aimerai que lorsque le service clique sur le bouton enregistrer que ça recopie donc ses infos dans la feuille sauvegarde et que en même temps ces informations se reporte dans la feuille archive du classeur archive
    Il faut que dans ce classeur il trouve la ligne où CommandeDateDemandeNomClient.xlsm.sauvegarde.B2=Archive.xlsm.archive.Bi ET CommandeDateDemandeNomClient.xlsm.sauvegarde.C2=Archive.xlsm.archive.Bi

    Date ma tête l'algo fait quelques choses comme ça :

    COPIER c:\..\DEC2010\DateDemandeNomClient\CommandeDateDemandeNomClient.xlsm.sauvegarde.A2:AE2
    i=0
    TANTQUE
    c:\..\DEC2010\DateDemandeNomClient\CommandeDateDemandeNomClient.xlsm.sauvegarde.B2 <> c:\..\DEC2010\Archive\Archive.xlsm.archive.Bi ET c:\..\DEC2010\DateDemandeNomClient\CommandeDateDemandeNomClient.xlsm.sauvegarde.C2 <> c:\..\DEC2010\Archive\Archive.xlsm.archive.Ci OU c:\..\DEC2010\Archive\Archive.xlsm.archive.Bi <> ""
    i=i+1
    FINTANTQUE
    SI c:\..\DEC2010\DateDemandeNomClient\CommandeDateDemandeNomClient.xlsm.sauvegarde.B2 = c:\..\DEC2010\Archive\Archive.xlsm.archive.Bi
    ALORS COLLER c:\..\DEC2010\Archive\Archive.xlsm.archive.Ai:AEi
    SINON aller à la première ligne vide
    COLLER c:\..\DEC2010\Archive\Archive.xlsm.archive.Ai:AEi
    FINSI
    ENREGISTRER c:\..\DEC2010\Archive\Archive.xlsm


    J'aimerai que ça soit invisible par l'utilisateur et le fichier archive n'a pas besoin d'être ouvert.
    Le fichier archive va servir uniquement à une des personnes pour voir l'avancer des fiches au travers des services, et en consultation (pour reconstituer la feuille).
    L'autre solution à laquelle j'ai pensé mais qui me semble plus compliqué à mettre en place et de partir du classeur archive avec un bouton du genre mise à jour et qui irai scanner tous les dossiers et les fichiers Excel du dossier DEC2010 et qui enregistrerai l'ensemble des lignes 2 des feuilles sauvegarde de chaque commande client, Si la date + nom client existe alors il colle par dessus, sinon il va à la dernière ligne et colle


    Voilà j'espère avoir été plus clair

    Merci pour votre aide

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    A force de bidouillle je pense y être arrivé avec ça (en tout cas ça à l'air de fonctionner).

    Je vous le propose si des gens cherchent...

    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
    Sub archivage()
    Dim WBDest As Workbook
    Dim i As Integer
     
    i = 2
    Application.ScreenUpdating = False
    Set WBDest = Workbooks.Open("C:\Documents and Settings\UTILISATEUR\Mes documents\Martin\" & Format(ThisWorkbook.Worksheets(3).Range("B2"), "mmmyyyy") & "\Archives\archiveM.xlsx")
        Do While WBDest.Worksheets(1).Range("B" & i) <> "" And i <> 0  ' And ThisWorkbook.Worksheets(3).Range("C2") <> WBDest.Worksheets(1).Range("C" & i) Or ThisWorkbook.Worksheets(3).Range("B2") <> WBDest.Worksheets(1).Range("B" & i)
            If ThisWorkbook.Worksheets(3).Range("B2") = WBDest.Worksheets(1).Range("B" & i) Then
                If ThisWorkbook.Worksheets(3).Range("C2") = WBDest.Worksheets(1).Range("C" & i) Then
                     ThisWorkbook.Worksheets(3).Rows(2).Copy WBDest.Worksheets(1).Range("A" & i)
                     GoTo Fin
                     Else
                     i = i + 1
                End If
                Else
                i = i + 1
             End If
         Loop
         If WBDest.Worksheets(1).Range("B" & i) = "" Then 'Or ThisWorkbook.Worksheets(3).Range("C2") = WBDest.Worksheets(1).Range("C" & i) And ThisWorkbook.Worksheets(3).Range("B2") = WBDest.Worksheets(1).Range("B" & i) Then
            ThisWorkbook.Worksheets(3).Rows(2).Copy WBDest.Worksheets(1).Range("A" & i)
         End If
     
    Fin:
        WBDest.Save
        WBDest.Close
    Set WBDest = Nothing
     
     
    End Sub

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

Discussions similaires

  1. [XL-2010] Extraction données classeur vers un autre classeur
    Par Florian53 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 24/03/2015, 17h13
  2. Copier le Thisworkbook d'un classeur vers un autre classeur
    Par aweb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/10/2013, 13h16
  3. [AC-2003] Copier une plage de cellules d'un classeur vers un autre classeur
    Par bdcds dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/06/2009, 14h58
  4. Réponses: 4
    Dernier message: 07/02/2009, 17h19
  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