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 :

Macro import automatique des nouvelles lignes à partir d'un autre classeur


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2015
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2015
    Messages : 57
    Points : 34
    Points
    34
    Par défaut Macro import automatique des nouvelles lignes à partir d'un autre classeur
    Bonjour,

    Nous recevons chaque jour un rapport Excel nommé "report.xlsx" dont je voudrais récupérer les nouveaux enregistrements dans un autre classeur "notif.xlsm"
    Concrètement
    - Je reçois le fichier report.xlsx et l'enregistre dans un répertoire dédié. Ce classeur contient tous les enregistrements créés antérieurement + les nouveaux enregistrements du jour
    - J'ouvre le classeur "notif.xlsm" qui contient la totalité des lignes contenues dans le report de la veille et doit importer uniquement les nouvelles lignes

    A noter que le report comprend un champs "ref" qui est unique j'avais donc pensé que la macro pourrait se baser sur cette valeur pour savoir quels enregistrements elle doit ajouter ou alors qu'elle efface complètement le classeur "notif" et réimporte la totalité du report.
    On parle de 5000 enregistrements sur une année.
    Total débutant en VBA j'ai bien tenté d'utiliser l'enregistreur de macro mais je suis loin du résultat attendu

    Merci d'avance pour votre aide

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

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Travaillez sur quelque chose de ce genre:
    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
    Option Explicit
     
    '--- suppose que les ref sont sans doublon et sont créées et conservées en ordre alphanumérique
    Sub NewData()
        Dim sRef As String, rRef As Range, rNewRef As Range, kR As Long
        ActiveSheet.Range("A" & Rows.Count).End(xlUp).Select
        sRef = ActiveCell.Value             '--- la dernière référence
        Set rRef = ActiveCell.Offset(1, 0)  '--- cellule (vide) sous la dernière référence
     
        Windows("report.xlsx").Activate
        '--- suppose que l'on est sur la bonne feuille et que la colonne A contient les ref
        Set rNewRef = Columns(1).Find(What:=sRef, After:=Range("A1"), LookIn:=xlFormulas, _
                                      LookAt:=xlWhole, SearchOrder:=xlByRows, _
                                      SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
        If rNewRef Is Nothing Then
            MsgBox "La dernière référence n'a pas été retrouvée !?" & vbLf & _
                   "Aucune nouvelle donnée ajoutée.", , "Anomalie!"
        Else
            kR = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row  '--- n° dernière ligne
            If kR = rNewRef.Row Then
                MsgBox "La dernière référence est identique dans les 2 feuilles." & vbLf & _
                       "Aucune nouvelle donnée ajoutée.", , "Rien de neuf!"
            Else
                Rows(rNewRef.Row + 1 & ":" & kR).Copy rRef   '--- copie les lignes contenant les nouvelles ref
                Application.CutCopyMode = False
            End If
        End If
     
        Windows("notif.xlsm").Activate
    End Sub
    Cordialement.

Discussions similaires

  1. [XL-2007] Remplissage automatique d'une ligne à partir d'une autre ligne
    Par realwail dans le forum Excel
    Réponses: 2
    Dernier message: 20/02/2012, 16h47
  2. Creer des nouvelles lignes avec sed
    Par hpavavar dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 24/10/2009, 15h58
  3. Import automatique des classes utilisées dans la javadoc.
    Par onlytoine dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 03/03/2009, 11h49
  4. importer automatiquement des fichier txt
    Par joe370 dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/06/2007, 15h39
  5. [VBA-Excel]Peut-on insérer des nouvelles lignes au début d'un fichier
    Par Jusomi31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 15h03

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