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 :

Recherche code VBA pour macro entre 2 fichiers [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Directeur technique
    Inscrit en
    Août 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2019
    Messages : 15
    Par défaut Recherche code VBA pour macro entre 2 fichiers
    Bonjour à tous et à toutes,

    Je suis nouveau dans le monde du langage VBA sur Excel et j’aimerai effectuer une opération depuis un macro. Je suis en train d’apprendre les bases du VBA, mais j’ai encore beaucoup de chemin à faire avant d’être en mesure d’écrire la ligne de code nécessaire à l’opération que je souhaite effectuer. Je ne sais vraiment pas par où commencer ni même quel genre de formule serait nécessaire. Voici les détails :
    * J’ai joint un fichier Excel avec des explications visuel. *

    Il y a deux fichiers concernés :
    - Le fichier « FICHIER_ABC » contenant les feuilles « feuille__avec_macro » et « origine_abc » localisé à l’emplacement « F:\dossier1 »
    - Le fichier « FICHIER_XYZ » contenant la feuille « fin_xyz » localisé à l’emplacement « F:\dossier2 »
    À noter que la feuille « feuille_avec_macro » ne fait que contenir la macro, rien de plus. L’opération que je souhaite réaliser concerne seulement deux feuilles de deux fichiers Excel différents.

    Voici les détails de l’opération que je tente de construire :
    Sur activation d’un bouton macro présent dans la feuille « feuille_avec_macro » du Fichier « FICHIER_ABC » :
    1- Ouverture du fichier « FICHIER_XYZ » contenant la feuille « fin_xyz »

    2- Rechercher dans la colonne A de la feuille « fin_xyz » le même numéro unique correspondant à celui inscrit dans la cellule A2 de la feuille « origine_abc ».

    a. Si une correspondance est trouvée dans la feuille « fin_xyz » et que la cellule R2 de la feuille « origine_abc » possède la valeur numérique 1, il faut que le contenu des cellules A2 à R2 de la feuille « origine_abc » soit supprimé ainsi que le contenue des cellules présente dans les colonnes A à R sur la même ligne où a été trouvé la correspondance dans la feuille « fin_xyz ».

    b. Si une correspondance est trouvée dans la feuille « fin_xyz », mais que la cellule R2 de la feuille « origine_abc » ne possède PAS la valeur numérique 1, ne rien faire.
    c. Répéter l’étape 2 au complet trois fois de plus, chaque fois en changeant les cellules concernées ([A3, R3, B3 à R3], [A4, R4, B4 à R4] et finalement [A5, R5, B5 à R5]).

    3- Sur la cellule A1 de la feuille « fin_xyz », appliquer un tri croissant. (Il y aura déjà un filtre exempt de critère de filtrage présent sur les cellules A1 jusqu’à R1)

    4- Rechercher dans la colonne A de la feuille « fin_xyz » du fichier « FICHIER_XYZ » le même numéro unique correspondant à celui inscrit dans la cellule A2 de la feuille « origine_abc » du fichier « FICHIER_ABC ».

    a. Si une correspondance est trouvée, il faut que les cellules B2 à R2 de la feuille « origine_abc » viennent remplacer les cellules présente dans les colonnes B à R sur la même ligne où a été trouvé la correspondance dans la feuille « fin_xyz ». Ce remplacement de cellule doit également considérer les cellules vides, car il faut que les cellules vides présentent de B2 à R2 dans la feuille « origine_abc » puisse venir remplacer des cellules pleines de la feuille « fin_xyz ».

    b. Si aucune correspondance n’est trouvée et que la cellule B2 de la feuille « origine_abc » n’est pas vide, il faut inscrire sur la première cellule vide disponible dans la colonne A de la feuille « fin_xyz » le numéro unique séquentiel de la cellule A précédente (donc la dernière cellule A non vide) auquel on addition +1 à la valeur (par exemple, 802+1= 803, non pas 8021). Ensuite, il faut que les cellules B2 à R2 de la feuille « origine_abc » viennent remplacer les cellules présente sur cette nouvelle ligne dans les colonnes B à R de la feuille « fin_xyz ».

    c. Si aucune correspondance n’est trouvée et que la cellule B2 de la feuille « origine_abc » est vide, ne rien faire.

    d. Répéter l’étape 4 au complet trois fois de plus, chaque fois en changeant les cellules concernées ([A3, B3, B3 à R3], [A4, B4, B4 à R4] et finalement [A5, B5, B5 à R5]).

    5- Enregistrer puis fermer le fichier « FICHIER_XYZ » contenant la feuille « fin_xyz ».

    Merci d’avance pour votre aide sur le sujet. N’hésitez pas à me contacter si vous avez besoin de précision.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Ton explication a le mérite d'être super claire, et ne mérite pas forcément de fichier explicatif en pièce jointe.
    D'autant plus que la plupart des gens n'ouvre par les pièces jointes dans les premiers messages (lis ce post pour plus d'informations).

    Avant de demander une réponse clé en main, ce qui serait rapide pour un bon nombre de personnes sur ce forum, il y a pas mal d'étapes que tu peux faire grâce à l'enregistreur de macro.
    Cela te permettra de te familiariser avec le VBA et donc de progresser. Tu peux demander par la suite de l'aide sur les parties où tu bloques vraiment.

    Bon courage.

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je ne vois pas de question dans cette demande...
    Est-ce que la question serait "pouvez-vous faire mon boulot à ma place ?" (impression renforcée par le fichier joint balancé dès la demande)

  4. #4
    Membre averti
    Femme Profil pro
    Directeur technique
    Inscrit en
    Août 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2019
    Messages : 15
    Par défaut
    Bonjour,

    Je ne cherche pas une solution tout frais sortie du four par quelqu'un. Désolé si mon message donnait cette impression.

    J'ai récemment appris que l'enregistreur macro est un très bon outil d'apprentissage et je m'en sers déjà à cet effet, cependant il ne peut m'être utile pour le segment complexe de mon opération, soit la recherche de valeur et le remplacement de donnée selon des conditions. Actuellement, je n'ai aucune idée sur le type de formule VBA à utiliser pour faire un genre de recherche V avec conditions et garder la position en mémoire. Si quelqu'un pourrait me donner des pistes à ce sujet, sa serait super génial.

    Au plaisir.

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Effectivement pour cette partie là, l’enregistreur ne te donnera pas la solution.

    Cherche sur internet ou dans l'aide Excel/VBA des article sur les boucles FOR... NEXT et les conditions IF...END IF.
    Cela te sera très utilie dans ce cas, tout comme les manipulations de fichiers.

  6. #6
    Membre averti
    Femme Profil pro
    Directeur technique
    Inscrit en
    Août 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2019
    Messages : 15
    Par défaut
    Salut,

    Merci pour la réponse rapide. Je comprend que je vais devoir faire des combinaisons avec les conditions, les boucles et une formule de recherche de positionnement de valeur. Une idée de quoi regarder pour ce troisième élément?

    Au plaisir.

    Edit: J'ai écrit mon message avant que le commentaire précédent soit présent. Ma question est peu être répondu dans ce commentaire, je vais regarder tout ça.

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Justine B Voir le message
    la recherche de valeur et le remplacement de donnée selon des conditions.

    Si quelqu'un pourrait me donner des pistes à ce sujet, sa serait super génial.
    Si tu parles de ton point 4, si j'ai bien compris il s'agit d'une recherche avec un seul critère.
    Dans ce cas, la méthode Find de Range devrait permettre de réaliser ça.
    Lire ceci : https://msdn.microsoft.com/fr-fr/lib...6(v=office.15)

    il y a pas mal d'étapes que tu peux faire grâce à l'enregistreur de macro.
    L'enregistreur automatique de macro est un outil très intéressant pour indiquer la direction où chercher ou bien pour aider à comprendre la structure d'une méthode.
    Mais EN AUCUN CAS il ne peut servir à "fabriquer" un code clé en main.

    Il ne devient un outil intéressant que pour ceux qui ont déjà une connaissance raisonnable des structures de base et des objets les plus courants.
    Et pour ça, il faut passer par l'étape longue et fastidieuse de l'apprentissage.
    Lire ceci : https://bidou.developpez.com/article/VBA/

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

Discussions similaires

  1. [XL-2016] Code VBA pour modifier sur plusieurs fichiers
    Par mercikevin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/08/2018, 17h54
  2. Recherche code vba pour MFC
    Par jacfld49 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/04/2014, 06h27
  3. [XL-2010] Code VBA pour fermer un autre fichier sans avoir l'invite de sauvegarde
    Par fta95200 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/02/2014, 21h52
  4. Réponses: 37
    Dernier message: 15/11/2011, 11h41

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