|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() Inscription : mai 2002 Messages : 526 ![]() |
Bonjour à tous,
Pour mettre à jour le classeur1 depuis le classeur2, j’utilise le code suivant : Code :
Code :
1 – Le tableau tmpVal contiendra des données qui ne seront pas utilisées lors de la recherche et mise à jour si le numéro N est trouvé dans le classeur1. Alors y a t-il une solution plus léger de façon à ne ramener une ligne complète du classeur2 (Ax :Fx) que si la recherche dans le classeur1 à échouer ? 2 – La mise en forme (Procédure Mfe) ne marche pas. Ou est donc l’erreur ? Merci. |
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Select ne s'utilise pas comme ça, regarde dans la doc.
Je me penche sur ton autre souci, car ton code me dit quelque chose Toutes mes excuses, je n'utilisais jamais select de cette façon c'est tout, le problème n'est pas là. Quand tu dis que ça ne marche pas, ça ne compile pas, ça plante ou ça ne fait rien ? Pour ton premier souci, en fait je ne comprends pas ce que tu veux, pourrais-tu préciser ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#3 | |||
|
Membre du Club
![]() Inscription : mai 2002 Messages : 526 ![]() |
Bonjour ZebreLoup,
C'est un exemple que j'ai trouvé sur le net et je l'ai modifié pour mon besoin. Citation:
![]() Citation:
J'ai réglé le problème, mais je ne sais pas s'il y a mieux. A la place de : J'ai mis : Et : J'ai mis : Citation:
Ensuite en mettant à jour le classeur1, je n'insère une ligne complète (6 valeurs) que si le numéro recherché est introuvable sinon en cas contraire je m'en sers seulement de deux valeurs pour les insérer dans la colonne E et F. Y a-t-il une solution pour que les 6 valeurs ne seront extraites du classeur2 que si on aura besoin (le cas ou la recherche n'a pas aboutie) ? J'espère avoir un peu bien exposé mon problème |
|||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Je suis assez étonné pour MEF. La procédure attends bien un Range pourtant, c'est avec le .Address que ça ne devrait pas marcher. Essaie sans les parenthèses pour voir (normalement, on met les parenthèses quand on utilise une fonction et qu'on attribue le résultat à une valeur), mais je doute que ce soit ça. Tu as bien mis Option Explicit en haut du module pour avoir une alerte sur les problème de type à la compilation ?
Pour ton problème de prendre trop de valeurs, on pourrait bien sûr adapter pour faire le test avant de récupérer les valeurs, d'ailleurs le passage par la table temporaire n'était pas obligatoire du tout. Mais quel est le problème exactement ? Car si c'est un problème de rapidité, ce n'est pas ça qui va le résoudre.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : mai 2002 Messages : 526 ![]() |
Re,
Je n'ai pas utilisé Option Explicit. Et j'ai enlevé les parenthèses et ça marche aussi : Si on a des longes données à ramener du classeur2, peut être qu'on rencontrera un problème de rapidité. Et puis pourquoi amène-t-on des données qu'on utilisera plus ? |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Pense bien à toujours mettre Option Explicit au début de tes modules. En fait ça t'oblige à déclarer toutes tes variables. Ça peut paraître contraignant, mais ça va t'éviter de nombreux problèmes dus à des fautes de frappe ou autre.
S'il y a un très grand nombre de données, c'est plutôt le Find qui va ralentir le code. Et aussi l'accès à la feuille. Pour le premier point, on pourrait travailler avec un dictionnaire dans lequel on aurait les valeurs de la colonne A de feuille 1 comme clé et le numéro de la ligne comme valeur. Pour le deuxième point, plutôt que de travailler sur la feuille 2, on pourrait dès le début du code mettre toutes les valeurs dans un Variant. Mais clairement, si le nombre de données devient très important, je te conseillerais plutôt de passer par une base de données, qui correspondra beaucoup plus à ta problématique.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : mai 2002 Messages : 526 ![]() |
Re,
Puis-je voir cette solution ? |
|
|
01
|
|
|
#8 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Base de données ou l'autre ?
Par contre, pour ma part, désolé, ce ne sera pas avant l'année prochaine maintenant...
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : mai 2002 Messages : 526 ![]() |
Base de données, parce que la fonction Mef marche maintenant.
Et bonne fin d'année 2011, et meilleures vœux pour le nouvel an 2012. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com