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 :

Consolidation Fichiers pour MAJ


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Juin 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 3
    Par défaut Consolidation Fichiers pour MAJ
    Bonjour,

    Je souhaite mettre à jour un fichier excel par un autre...j'ai essayé la consolidation de fichiers mais cela ne semble pas convenir.

    Le but est de garder l'ensemble des informations du fichier Relance.xls et de lui rajouter quelques lignes du fichier Extract.xls

    J'ai mon fichier de base Relance.xls qui contient un tableau avec tout un tas de données.
    Je souhaiterai rajouter à ce fichier les lignes du fichier Extract.xls qui sont en etat "crea" (colonne ETAT) ET qui ne sont pas déjà disponible dans mon fichier Relance.xls.

    Un bouton Mettre à Jour permettra de lancer la procedure...

    Si quelqu'un peux m'aider, le code ne me fait pas peur....

    Merci d'avance !
    Fichiers attachés Fichiers attachés

  2. #2
    Candidat au Club
    Inscrit en
    Juin 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 3
    Par défaut
    Suite à mon message, voici le code developpé...la procedure est trés longue, avez vous des idées pour ameliorer le 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
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    Dim Valeur1 As String
     
    Dim Départ, Destination, F_Départ, F_Destination
    Dim LigneDestination
     
    Sub Bouton1_Clic()
     Select Case MsgBox("Mettre à jour ?", vbOKCancel, "Relance Prepresse")
      'procedure si click ok
      Case vbOK
       'Ouverture du fichier extract
       Application.Workbooks.Open Application.ActiveWorkbook.Path & "\" & "Extract.xls"
       Set Départ = Workbooks("Extract.xls")
       Set Destination = Workbooks("Relance.xlsm")
       Set F_Départ = Départ.Sheets("Extraction")
       Set F_Destination = Destination.Sheets("MAJ")
     
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'EFFACE LES LIGNES TERMINEES
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        i = 6
        Windows("Relance.xlsm").Activate
        Sheets("MAJ").Select
     
        While Not Range("A" & i & "").Value = ""
         Windows("Relance.xlsm").Activate
         Sheets("MAJ").Select
         Valeur1 = Range("A" & i & "").Value
         Windows("Extract.xls").Activate
         Sheets("Extraction").Select
         j = 1
         test1 = 0
            While Not Range("A" & j & "").Value = ""
                If Range("A" & j & "").Value = Valeur1 Then
                 test1 = 1
                End If
                j = j + 1
            Wend
     
         Windows("Relance.xlsm").Activate
         Sheets("MAJ").Select
         If test1 = 0 Then
          Rows(i).Delete
         Else
          i = i + 1
         End If
        Wend
     
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'RAJOUT DES LIGNES
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        i = 2
        Windows("Extract.xls").Activate
        Sheets("Extraction").Select
     
        While Not Range("A" & i & "").Value = ""
         Windows("Extract.xls").Activate
         Sheets("Extraction").Select
         Valeur1 = Range("A" & i & "").Value
         Windows("Relance.xlsm").Activate
         Sheets("MAJ").Select
         j = 6
         test1 = 0
            While Not Range("A" & j & "").Value = ""
                If Range("A" & j & "").Value = Valeur1 Then
                 test1 = 1
                End If
                j = j + 1
            Wend
          If test1 = 0 Then
          F_Départ.Activate
          F_Départ.Rows(i & ":" & i).Copy
          F_Destination.Activate
          LigneDestination = F_Destination.Range("A65356").End(xlUp).Row + 1
          F_Destination.Range("A" & LigneDestination).Select
          ActiveSheet.Paste
          F_Départ.Activate
          Application.CutCopyMode = False
         Else
          i = i + 1
         End If
         Windows("Extract.xls").Activate
         Sheets("Extraction").Select
        Wend
        Windows("Relance.xlsm").Activate
        MsgBox "Mise a jour effectuee"
      Case vbCancel
       'procédure si click sur Annuler
     End Select
    End Sub
    J'imagine quand utilisant les "Workbook" cela simplifierai mon code et la rapidité....

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    j'ai voulu regarder mais me heurte à une erreur de syntaxe au depart :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & i & "").Value = ""
    de quelle cellule parles-tu ?, ça ne serait pas plutot :
    si c'est ça, ci-dessous un début de code pour demarrer, uniquement pour raccourcir (je n'ai pas étudié ton 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
    23
    24
    25
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'EFFACE LES LIGNES TERMINEES
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    i = 6
    With Destination.Sheets("MAJ")
       While Not .Range("A" & i & "").Value = ""
          Valeur1 = .Range("A" & i)
          With Départ.F_Départ
             j = 1
             test1 = 0
             While Not .Range("A" & j) = ""
                If .Range("A" & j) = Valeur1 Then
                   test1 = 1
                End If
                j = j + 1
             Wend
          End With
          If test1 = 0 Then
             .Rows(i).Delete
          Else
             i = i + 1
          End If
       Wend
    End With
    '.....
    je viens de regarder plus sérieusement ton fichier dont le code du bouton me parait bizarre (vous avez dit bizarre...)

    commençons par le commencement, j'aimerais que tu dises quelles lignes sont à effacer au départ suite à
    "EFFACE LES LIGNES TERMINEES"
    et que tu expliques ce bout de phrase
    ...ET qui ne sont pas déjà disponible dans mon fichier Relance.xls
    quel repère, quel reference unique à comparer ?

    PS : tu as un fichier enregistré en xlsm et l'autre en xls, c'est normal ?

    a +
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 3
    Par défaut
    Bonjour,

    Désolé de repondre un peu tardivement....

    PS : tu as un fichier enregistré en xlsm et l'autre en xls, c'est normal ?
    Oui c'est normal, mon fichier d'extraction sort en xls.

    quel repère, quel reference unique à comparer ?
    La seule donnée à comparer est le N° de cde, numero unique...

    commençons par le commencement, j'aimerais que tu dises quelles lignes sont à effacer au départ suite à
    "EFFACE LES LIGNES TERMINEES"
    Si un numero de commande n'est pas present dans le fichier extract, alors on supprime la ligne correspondante dans Relance.xlsm

    Je vais mettre les fichiers pour etre plus parlant......

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/02/2014, 16h30
  2. SGBD vs fichiers pour du XML
    Par ahebert dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/08/2005, 08h17
  3. Envoyer un fichier pour le faxer...
    Par Sunchaser dans le forum C++Builder
    Réponses: 5
    Dernier message: 24/07/2005, 00h12
  4. [Eclipse 2.1] Encodage des fichiers pour un projet
    Par _-Sky-_ dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/05/2005, 22h26
  5. [débutant] filtrer un fichier pour afficher des infos
    Par Valichou dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 21/04/2004, 11h44

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