Aide macro Comparer des données deux fichiers Excel
Salut à tous,
Etant débutant dans le VBA
- Tous les NumAffaire qui n'appartient pas à Imputation.xls
- avec Nom des interlocuteurs correspondants
- avec Chargé d'études correspondants
- avec Date de l'accord client correspondante
En attendant de votre réponse, je vous remercie par avance
Salut et bienvenue sur le Forum,
Afin que l'on ne travaille pas dans le vide, peux-tu nous fournir deux fichiers Excel représentatifs ? Ca nous évitera de devoir créer deux fichiers ne correspondant finalement probablement pas aux tiens.
Cordialement.
Salut Yvouille,
Merci de m'avoir répondu, désolé pour les fichiers. Je les remets dans les fichiers joints. Aurais-tu la gentillesse de m'éclairer comment faire pour résoudre ce problème ?
Re,
Voici une proposition à tester.
Normalement le fichier Imputation.xls n’a pas besoin d’être ouvert. Chez moi il était dans le même dossier que le fichier Export.xls. Si ça ne passe pas autrement, ouvre les deux fichiers à l’écran.
Tu dois alors lancer la macro par le bouton mis en place sur la nouvelle feuille «Report» et tes souhaits devraient être comblés.
Je n'ai pas vu de colonne "Chargé d'étude". Si nécessaire, sois plus précis.
A te relire.
Merci Yvouille, j'ai lu ton code mais je n'ai pas compris la signification de la variable m. Peux-tu me donner un peu plus de commentaires ?
Puis j'ai testé la macro et ce que tu as fait est très bien
Non, pas du tout. Mais je crois que je t'ai dit une grosse bêtise. Il faut absolument que les deux fichiers soient ouverts en même temps, autrement aucun numéro n'est trouvé (dans le fichier Imputations.xls qui est comme inexistant) et ils sont tous reportés.goodfather1988 a écrit :Mais est-il normal que je retrouve des fois le même Num_Affaire qui existe déjà dans Imputation.xls.
Teste encore avec les deux fichiers ouverts et redis-moi quoi.
Si le fichier Imputation.xls n'est pas spécialement ouvert lorsque tu veux lancer la comparaison et qu'il n'est pas nécessaire de l'avoir ouvert à la fin de la macro, on pourrait l'ouvrir et le refermer par la macro justement. A toi de me dire.
Par cette ligne m = WorksheetFunction.Match(Numéro_Affaire, Workbooks("Imputation.xls").Worksheets("BASE RACCO ").Range("A2:A65000"), 0), on recherche le numéro de la ligne dans laquelle se trouve éventuellement - dans le fichier Imputation.xls - les références recherchées (celles de la feuille Export IEP, l’une après l’autre) et on l'affecte à m. Ce numéro de ligne n’est pas utile en soi, mais si il n’est pas trouvé, c’est-à-dire si la référence recherchée n’est pas trouvée, ça crée une erreur dont on tire profit ; dans un tel cas, aucune valeur n’est affectée à m (grâce au passage On Error Resume Next qui saute la ligne d'affectation d'une variable à m) et la condition If m = 0 Then est remplie et exploitable.
A te relire.
Merci Yvouille, ça marche nickel. Effectivement, il faut que les deux fichiers soient ouverts en même temps, je me retrouve donc dans la feuille Report, les Num_Affaire qui appartient à Export.xls mais qui sont différents de celles existés déjà dans Imputation.xls. Ce qui correspondant exactement à mes attentes
A propos de tes explications , tu as été très claire :
WorksheetFunction.Match(Numéro_Affaire, Workbooks("Imputation.xls").Worksheets("BASE RACCO ").Range("A2:A65000"), 0)
si j'ai bien compris, c'est une autre forme de la fonction RechercheV mais on la traduit en VBA.
Je te remercie beaucoup de m'avoir aidé. Je vais me documenter encore avec VBA en sachant que tu m'as donné la motivation d'apprendre cette langage. Maintenant, je le droit à fumer une cigarette, non 8)
Je te souhaite une excellent journée
Pas tout à fait. WorksheetFunction.Match correspond à la fonction EQUIV(), tout le reste de la ligne n'est que des précisions pour l'utilisation de cette fonction dans ce cas précis. La fonction VBA qui correspond à RechercheV se nomme "Lookup" ou quelque chose du genre.goodfather1988 a écrit :WorksheetFunction.Match(Numéro_Affaire, Workbooks("Imputation.xls").Worksheets("BASE RACCO ").Range("A2:A65000"), 0)
si j'ai bien compris, c'est une autre forme de la fonction RechercheV mais on la traduit en VBA.
Amicalement.