Code nécessaire pour macro complexe entre 2 fichiers

Bonjour à tous,

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 donné des noms fictifs aux fichiers Excel, aux feuilles de travail et aux chemins d’accès pour faciliter la compréhension. *

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.

bonjour

que gère ton système de fichiers ?

ça semble bien compliqué

sais-tu lire depuis un fichier Z les données de fichiers A, B, C... d'un coup ? et en extraire les cellules nécessaires ?

avec Power Query

joins 2 fichiers exemples, de 3 colonnes et 5 lignes et le résultat attendu

et des explications plus courtes

à te relire

amitiés

Salut,

Mon système actuel de base de données est en Access et est utilisable depuis un vieux logiciel externe. J’essai de moderniser le tout en remplacent le logiciel et la base de données par des fichiers Excel. Un des fichiers agirait à titre d’interface et les autres comme des bases de données.

Mon système gère des informations de propriétaires forestiers ainsi que diverses informations en lien avec des travaux de coupe. Par exemple, j’ai une base de données pour les informations des propriétaires, une pour les informations concernant leurs propriétés, une pour les travaux, etc. Il existe déjà des numéros uniques entre ces fichiers me permettant de faire des liens sur Excel sans devoir utiliser le logiciel en question.

Je n’ai jamais utilisé power Query, mais je suis capable de lire depuis un fichier Z des données de fichiers A,B,C,… en utilisant des combinaisons de formule. J’ai d’ailleurs déjà créé l’interface me permettant de lire mes diverses bases de données. La macro que je souhaite construire me permettrait d’exporter directement dans les bases de données des modifications effectuer depuis le fichier servant d’interface.

J’ai joint un fichier Excel des explications avec visuel.

N’hésitez pas à me contacter si vous avez besoin de précision supplémentaire.

Rechercher des sujets similaires à "code necessaire macro complexe entre fichiers"