comparaison de 2 fichiers excel [VBA] - VB/VBA/VBS - Programmation
Marsh Posté le 12-05-2013 à 13:25:02
Bonjour.
Ne sachant pas quel est le logiciel (et sa version) rattaché au fichier contenant le code ni la version de Windows
ni la quantité de RAM de l'ordinateur, je ne peux qu'exprimer des doutes au lieu de certitudes …
Si le code est bien contenu dans un fichier Excel, alors les déclarations d'objet & d'instance d'Excel sont inutiles (lignes n°13 & 23)
car en ouvrant un autre Excel, il y a donc moins de mémoire disponible ‼
Ensuite pour une question d'efficacité, seule une boucle est nécessaire, celle servant à parcourir le fichier Test;
pour trouver une correspondance dans le fichier Test2, voir l'aide de la méthode Find associée à un objet Range,
comme dans le très récent sujet Beug de programme avec une problématique assez proche …
Sinon une certitude : aucune ligne de code VBA est nécessaire ‼
En effet, en plaçant la colonne Code Id en première dans le fichier test2,
il suffit alors d'une simple formule RECHERCHEV dans le fichier test …
Marsh Posté le 12-05-2013 à 13:34:48
Bonjour Marc L,
Merci de ta réponse, ensuite pour répondre à tes question la version d'excel utilisée est la 2007, la quantité de RAM est de 2Go, et le code est bel et bien contenu dans le fichier test.xls. Je vais donc maintenant chercher plus d'informations concernant Find et RechercheV . . Je donnerai des nouvelles quand j'aurai modifié tous ça
Encore merci et bonne journée
Marsh Posté le 12-05-2013 à 15:29:38
Marc L a écrit : Sinon une certitude : aucune ligne de code VBA est nécessaire ‼ |
Correction : c'est évidemment la colonne Id qui doit être la première dans le fichier test2 …
Marsh Posté le 12-05-2013 à 18:17:06
Rebonjour,
J'ai pu trouvé une "solution" à mon problème mais que pour les fichiers de petites tailles :
Code :
|
Cependant pour les gros fichiers excel (contenant des milliers de lignes) j'obtient l'erreur suivant : Dépassement de capacité
J'avoue ne pas savoir comment adapter ce code avec un find mais voici un début:
Code :
|
Marsh Posté le 12-05-2013 à 18:53:52
Concernant le dépassement de capacité du premier code, c'est dû au mauvais type des variables i & j.
Autant ne rien définir que de déclencher une erreur : mettre donc en commentaire les lignes n°5 & 6 ! (ou bien corriger le type)
Quant au deuxième code, la variable i n'est pas initialisée, valrech non plus, un s manquant à Sheet en ligne n°11, …
De toute manière avec la colonne Id en première dans le fichier test2, une simple formule RECHERCHEV dans une cellule suffit !
Pourquoi donc vouloir utiliser VBA ?!
Marsh Posté le 13-05-2013 à 18:57:56
Bonjour Marc L,
Merci pour ton aide, je n'ai pas utilisé au final ta solution mais je prends ça en compte pour d'autres développement en VBA qui me sera certainement très utile :
Ci-joint le code corrigé comme promis pour ceux que ça intéresse :
Code :
|
Marsh Posté le 13-05-2013 à 22:34:07
Bonsoir.
Comme je l'ai indiqué sur l'autre forum, s'il y a beaucoup de lignes, définir les variables i & j en Integer est une connerie ‼
Marsh Posté le 11-05-2013 à 22:19:42
Bonjour à tous, voilà on a 2 fichiers l'un s'appelant test et l'autre test2, mon fichier test est mis a jour régulièrement mais il a besoin d'une donnée particulière dans le fichier test2.
contenu du fichier test.xls :
contenu du fichier test2.xls :
On peut identifier les utilisateur de façon unique avec leur "id" présent dans chacun des fichiers, on voudrais dans le cas où on parle du même utilisateur ajouter les données de la colonne "code" de test2 aux utilisateurs correspondants dans test.
A savoir que ce sont bien sûr 2 fichiers excel et que je dois répéter plusieurs fois cette action car en réalité il y a des milliers d'utilisateurs.
Maintenant voilà mon problème :
J'obtiens l'erreur "mémoire insuffisante" après quelques recherche le problème viendrait du type de variable que j'utilise serait trop "petit" pour stocker le trop grand nombre de donnée présent dans les feuilles excel, mais j'avoue ne pas vraiment savoir où localiser le problème exactement, donc voici le code de la macro que j'utilise :
Est-ce que je m'y suis mal pris concernant le code? je suis libre à toute proposition, à savoir que les 2 fichiers se trouve dans le même dossier.
Je vous remercie d'avance
Message édité par furil le 11-05-2013 à 22:20:57