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 :

Modification sur 2 fichiers


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Par défaut Modification sur 2 fichiers
    J'ai 2 fichier très volumineux.

    Par exemple le 1er contient 100 colonnes. Le 2ème en contient 30, ce sont les 30 colonnes les plus importants dans le 1er fichier. L'ordre des colonnes ne sont pas les même.

    Je veux écrire un code VBA qui sert à modifier de façon automatique le 2ème fichier, lorsque je fais un modif dans le 1er.

    Par exemple : ce sont les données de ventes, avec un order_id comme identifiant.
    Quand je modifie le Pays de l'order_id 123456 dans le fichier source (le premier fichier), le code va chercher le même numéro d'order dans le 2ème fichier et va modifier le Pays.

    Avez-vous une idée ?

    Je pense à fais plusieurs VLOOKUP, en passant par une feuille de paramètre qui contient tous les noms de colonnes avec leur lettres. Je fais un InputBox pour demander l'order_id, ensuite un InputBox pour demander quelle modif sur quelle colonne. Et en fonction de ces 3 données entrées je fais les VLOOKUP sur les feuilles correspondantes pour corriger les données. Mais ça me paraît assez lourde comme solution.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut hantran et le forum
    Ouais, ça me semble lourd aussi !!!
    VLOOKUP, pour moi, si je ne me trompe, RechercheV, est une fonction de feuille de calcul. Pourquoi ne pas utiliser une instruction VBA, comme .Find ?

    Plus tu es moins précis et clair, moins les réponses pourront plus t'aider.
    Pas d'adresse plage, pas de nom précis, pas d'algorithme exhaustif. Et tu attends ?

    - Utiliser worksheet_Change qui se lance automatiquement
    - Faire une recherche des cellules modifiées (lignes/colonnes) du 1er dans le 2ème, au travers de l'identifiant, trouver la colonne à modifieret changer la valeur de la ligne.
    A+

  3. #3
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Par exemple le 1er contient 100 colonnes. Le 2ème en contient 30, ce sont les 30 colonnes les plus importants dans le 1er fichier. L'ordre des colonnes ne sont pas les même.
    Ce qui serait important, c'est de savoir :
    - si ton deuxième fichier n'est que le reflet du premier et est donc finalement en lecture seule et ne reçoit ses modifs que par les changements du premier.
    - l'ordre des colonnes est différents, mais l'ordre des lignes lui-est-il le même

    Comme toutes les choses "lourdes", c'est la phase conception qui est la plus importante sinon....

    PS : 100 colonnes = pas forcément lourd... combien de lignes ?
    cordialement,

    Didier

  4. #4
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour hantran et à tous,

    tu pourrais utiliser l'événement change de la feuille du classeur 1.
    par exemple avec un tableau de correspondance des 30 colonnes
    (ici j'en ai mit 20 pour l'exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
    col = Array(1, 2, 3, 5, 7, 9, 12, 15, 18, 20, 22, 24, 25, 26, 30, 42, 45, 55, 60, 62)
    If Not IsError(Application.Match(Target.Column, col, 0)) Then
    adresse = Cells(Target.Row, Application.Match(Target.Column, col, 0)).Address
    MsgBox " la cellule correspondante de l'autre fichier est : " & adresse
    End If
    End Sub

  5. #5
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Par défaut
    Salut Gorfael et sabzzz, merci pour la solution Worksheet_Change, je vais regarder.
    @Gorfael : le .Find fonctionne pas très bien, il me semble, si on a des formats assez complex dans nos celllules (genre des dates, des tirets "-", etc...)

    Salut Ormonth, pour répondre à tes questions, oui le 2ème fichier ne reçoit les modifs que par les changements du premier. Et l'ordre des lignes n'est pas non plus le même.

    En fait, avant, ces deux fichiers ne sont qu'un. J'ai mis les 100 colonnes à gauche, et à droite les 30 colonnes "résumés". Et grace aux formules d'Excel qui lient les colonnes entre eux, quand je fais un modif sur une ça se met à jour automatiquement pour l'autre. Alors que là c'est deux fichiers à part, et dans le 2ème, je ne veux pas avoir de formules dans les cellules, mais juste les valeurs.

    Comme c'est une base de données pour les ventes d'une grosse boîte, le nombre de lignes s'augmente des dizaines de milliers chaque quarter. Et ce sont des fichiers qui date depuis 2007.

    J'aimerais trouver une solution / une macro rapide et efficace qui ne prend pas 5 min pour s'exécuter.

    L'objectif est de ne rien toucher au fichier "résumé". On modifie seulement la source.

    J'en profites pour vous poser une question tout bête : pouvez-vous m'expliquer ce que c'est les Modules / Class Modules et à quoi ils servent ? Car pour le moment j'ai fait plusieurs macros d'analyses, je les ai mis tout dans un sheet "Macro", et dans l'éditeur VBA ils sont tous au même endroit. Maintenant je veux le diviser en plusieurs modules, chaque module concerne un type de macro. J'ai essayé mais les macros ne tournent plus quand je les sépares.

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    J'en profites pour vous poser une question tout bête : pouvez-vous m'expliquer ce que c'est les Modules / Class Modules et à quoi ils servent ? Car pour le moment j'ai fait plusieurs macros d'analyses, je les ai mis tout dans un sheet "Macro", et dans l'éditeur VBA ils sont tous au même endroit. Maintenant je veux le diviser en plusieurs modules, chaque module concerne un type de macro. J'ai essayé mais les macros ne tournent plus quand je les sépares.
    Une règle = 1 question par Fil , c'est mieux vu que des gens qui ne s'intéressent pas à celui en cours peuvent être capable de répondre à cette question. (et surtout pour les recherches ensuite..)

    Donc ouvre un nouveau fil en ayant regardé dans les tutos pour les définitions de module et en étant un peu plus explicite pour tes besoins de division avec une balise code et un exemple

    cordialement,

    Didier

Discussions similaires

  1. Modifications sur un fichier CSV en Input (PDI)
    Par Nesrine_SM dans le forum kettle/PDI
    Réponses: 0
    Dernier message: 30/08/2012, 11h45
  2. [MySQL] faire une modification sur un fichier upload
    Par ghadghoud dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 27/04/2010, 11h35
  3. [Excel] Sans modification sur le fichier
    Par Space Cowboy dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 30/04/2009, 11h06
  4. Réponses: 6
    Dernier message: 13/03/2009, 15h58

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