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 :

mise à jour automatique tableau excel par macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 11
    Points : 10
    Points
    10
    Par défaut mise à jour automatique tableau excel par macro
    Bonjour à tous,
    ça fait deux jours que je galère au boulot pour créer une macro sur excel et vu mes connaissances quasi-nulles en terme de macro, j'aurais fortement besoin de vos idées...

    voilà je m'explique, j'ai deux tableaux comportant chacun une colonne avec refs de pièces, nom de cette pièce, ref du fournisseur associé,etc...
    Je voudrais effectuer une mise à jour automatique sur un des fichiers (on l'apellera fichier mise a jour) à partir d'un fichier source concernant les refs de pièces.
    Lorsqu'une nouvelle ref de pièce apparait dans le fichier source, j'aimerais qu'elle apparaisse aussi dans le fichier mise a jour et lorsqu'une des pièces n'apparait plus dans le fichier source, il faudrait qu'elle disparaisse du fichier mise à jour.

    voila ce que j'ai écris pour le moment mais je suis sur que c'est truffé de faute. J'ai essayé de traiter que la partie suppression de données et je voulais savoir aussi s'il était possible de réaliser le tout en une seule macro ou s'il fallait en faire 2.


    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
    Windows("fichier source.xls").Activate
     
        Windows("fichier a mettre a jour.xls").Activate
     
            Dim VALEUR1 As String, VALEUR2 As String, i, j
            For i = 2 To 20
            VALEUR1 = Worksheets(“fichier mise à jour”).Range("B" & i).Value
            For j = 2 To 20
            VALEUR2 = Worksheets(“fichier source”).Range("B" & j).Value      
            If VALEUR1 <> VALEUR2 Then
            Worksheets(“fichier mise à jour”).Range("B" & i).Value.delete
     
    End If
       Next i
       Next j
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Points : 1 580
    Points
    1 580
    Par défaut
    Bonjour,
    Question idiote (peut-être...) : Comme les deux fichiers sont de structure identique, pourquoi ne pas simplement supprimer toutes les lignes du fichier à mettre à jour puis recopier dedans les lignes du fichier source ?

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    en fait les fichiers en pièce jointe sont un exemple très simplifié des tableaux que je dois manier et ceux ci ne possèdent pas forcément les mm colonnes... donc une macro est nécessaire pour faire ce que je dois faire...

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien de bureau d etude
    Inscrit en
    Avril 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien de bureau d etude
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 111
    Points : 94
    Points
    94
    Par défaut
    Bonjour Fredo49,

    Peut etre pouvez-vous passer par l'import de données.

    Dans votre fichier source créez une liste : Données, liste, créer une liste en ayant au préalable sélectionné votre liste produit.

    Ensuite dans votre fichier Mise à jour allez dans Données, Données externes, Importer des données.

    Il faut chercher le fichier source et suivre ce que excel demande

    Aprés cela les données du fichier sources seront importer dans votre classeur "mise à jour".

    Un clic droit permet la mise à jour des données et l'acces à des parametres divers (Fréquance de mise à jour...)


    Voila, je suis un peu rapide mais cela devrait fonctionner !

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    Je me suis amusé à préparer ce code, tu peux toujours le tester en adaptant les colonnes

    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
    Sub essai()
    Dim Der_Sc As Long, W_Source As Workbook, F_Source As Worksheet
    Dim der_Maj As Long, W_Maj As Workbook, F_Maj As Worksheet, FC As String
    Dim x As Long
    Application.ScreenUpdating = False
    Set W_Source = Workbooks("fichier_source.xls")
    Set F_Source = W_Source.Sheets("fichier source")
    Set W_Maj = Workbooks("fichier_maj.xls")
    Set F_Maj = W_Maj.Sheets("feuil1")
    'si les ref sont en B dans les deux fichiers
    Der_Sc = F_Source.Range("B" & F_Source.Rows.Count).End(xlUp).Row 'dernière ligne du fichier source
    der_Maj = F_Maj.Range("B" & F_Maj.Rows.Count).End(xlUp).Row 'dernière ligne du fichier source
    'les données du fichier "maj" commencent en B2
    'une colonne temporaire
    FC = "=NB.SI(" & "'[" & W_Source.Name & "]" & F_Source.Name & "'!$B$2:$B$" & Der_Sc & ";B2)"
    F_Maj.Range("F2").FormulaLocal = FC
    F_Maj.Range("F2").AutoFill Destination:=F_Maj.Range("F2:F" & der_Maj), Type:=xlFillDefault
    For x = der_Maj To 2 Step -1
        If F_Maj.Range("F" & x) = 0 Then
            F_Maj.Range("F" & x).EntireRow.Delete
        End If
    Next x
    'on supprime la colonne temporaire
    F_Maj.Columns("F:F").Delete
    'on recommence mais à l'envers, pour ajouter les lignes
    Der_Sc = F_Source.Range("B" & F_Source.Rows.Count).End(xlUp).Row
    der_Maj = F_Maj.Range("B" & F_Maj.Rows.Count).End(xlUp).Row
    'une colonne temporaire, cette fois au fichier source
    FC = "=NB.SI(" & "'[" & W_Maj.Name & "]" & F_Maj.Name & "'!$B$2:$B$" & der_Maj & ";B2)"
    F_Source.Range("F2").FormulaLocal = FC
    F_Source.Range("F2").AutoFill Destination:=F_Source.Range("F2:F" & Der_Sc), Type:=xlFillDefault
    For x = Der_Sc To 2 Step -1
        If F_Source.Range("F" & x) = 0 Then
            F_Maj.Range("A" & der_Maj + 1, "G" & der_Maj + 1).Value = F_Source.Range("A" & x, "G" & x).Value
            der_Maj = F_Maj.Range("B" & F_Maj.Rows.Count).End(xlUp).Row
        End If
    Next x
    'on supprime la colonne temporaire
    F_Source.Columns("F:F").Delete
     
    Application.ScreenUpdating = True
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur 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...)

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    tout d'abord merci à casefayer et floranc pour les propositions...
    à floranc, l'idée est pas mal mais pas tro adaptée à mes besoins...
    à casefayer, dès que j'ai du temps mardi prochain je teste le code et je te dirais si c'est bon.

    bon wk à tous

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

Discussions similaires

  1. [PPT-2010] mise a jour automatique tableau excel dans powerpoint
    Par yeti7984 dans le forum VBA PowerPoint
    Réponses: 6
    Dernier message: 27/07/2014, 13h28
  2. [XL-2013] mise a jour automatique tableau excel dans pps
    Par yeti7984 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/09/2013, 15h39
  3. Désactiver le filtrage automatique en excel par macro
    Par guefrachi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/01/2010, 12h38
  4. Filtrage sur un tableau EXCEL par macro
    Par cati_78 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/05/2009, 17h25
  5. Mise à jour de feuilles excel par macro
    Par kuma_buzz dans le forum Macros et VBA Excel
    Réponses: 37
    Dernier message: 24/10/2007, 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