|
Publicité ' | ||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Responsable d'exploitation informatique Inscription : juin 2011 Messages : 6 ![]() |
Bonjour à tous,
Etant nouveau sur ce forum Malheureusement aujourd'hui je coince sur un problème qui demande votre aide. En effet, j'ai mis au point un userform avec une listview permettant d'afficher une liste de contacts pompée depuis un dossier de contacts sur outlook. Je peux intégrer les différentes coordonnées du contact sélectionné dans des formfields définies dans le document. Le problème se situe lors du changement du dossier de contacts par une combobox. Lors de l'initialisation de la fenêtre sur le dossier par défaut, aucun problème l'exécution se passe sans problème. Une fois que l'on modifie notre dossier dans la combobox, l'exécution prend alors un temps incroyable (au point de voir la listview se rafraichir avec l'ajout de chaque contact). Des bugs apparaissent également avec des lignes vides, certains contacts on juste le nom, des doublons...). Faut-il plus le code lors de la boucle ? Comment puis-je optimiser le temps d'exécution ? Voici le code en question: Code :
|
||
|
|
00
|
|
|
#2 |
![]() ![]() |
Bonjour,
Dans Tu déclares i et l'incrémentes mais ne l'initialises pas.
__________________
Cordialement, Christophe Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche |
|
|
10
|
|
|
#3 | ||
|
Invité de passage
![]() Responsable d'exploitation informatique Inscription : juin 2011 Messages : 6 ![]() |
Bonjour,
Merci. Erreur de débutant, impardonnable J'ai modifier quelque peu le code afin que ceux qui n'ont pas BCM puisse également le lancer pour ce rendre compte du problème. Le choix ce fait entre le dossier par défaut ("Contacts") et le prochain carnet d'adresse. Attention! Le carnet d'adresse doit être crée dans le dossier "Mes contacts" sinon la macro plante ( il est en effet tout à fait possible de crée un carnet d'adresse contact dans le dossier boîte de réception par exemple...). Voici le code et le fichier d'exemple pour les curieux. Merci de votre aide. Code :
|
||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Responsable d'exploitation informatique Inscription : juin 2011 Messages : 6 ![]() |
Personne n'a une idée ?! Je pense également que mon post n'est pas placé dans la bonne section. Mais bon, un contrôle VB utiliser avec des méthodes VBA d'Outlook pour une macro dédiée à l'élaboration de formulaires dans Word... Ca fait un peu beaucoup.
|
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Responsable d'exploitation informatique Inscription : juin 2011 Messages : 6 ![]() |
Salut tout le monde,
Après avoir repasser en vue tout mon code, j'ai débogué en partie celui-ci: Lors de l'initialisation de l'userform je change l'index de ma combobox en appliquant le dossier par défaut: La chose que je ne savais pas, c'est que même lors de cette phase, ce changement lance l'événement cboSessionList_Change()!!! (normal sinon la listview ne serait pas remplie lors du lancement de l'userform...). Du coup, l'userform n'apparait que lorsque la boucle incluant les contacts est terminée. Après ça, j'ai utilisée la propriété Sorted de la listview pour trier selon la 1ère colonne. Quant un changement intervient dans la combobox, la propriété Sorted est encore sur True ce qui donne une m**** pas possible lors de la boucle !!! Il faut donc s'assurer que la propriété SORTED est False lors d'ajout de données dans une listview. Maintenant, je n'ai plus de bugs lors du remplissage. Cependant, vu que la listview est active lors du remplissage, cette dernière ce rafraichit à chaque nouveau contact. C'est plus rapide qu'avant, mais c'est pas encore ça (et toujours pas aussi rapide que lors de l'initialisation de la listview). Existe-il un moyen d'empêcher le rafraichissent de la listview avant que la boucle soit terminée? Je sais qu'en VB il y a la méthode AddRange. Y a t'il une méthode analogue en VBA ? Merci de votre patiente Code :
|
||
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Responsable d'exploitation informatique Inscription : juin 2011 Messages : 6 ![]() |
Voilà, j'ai trouvé une parade en utilisant l'option Visible de la listview. L'exécution est bien plus rapide en la rendant invisible. Cependant, en remettant listview.visible = true, le contrôle se place alors dans le coin supérieur gauche. J'ai essayé de capturé la position de la listview pour lui redonné son ancien emplacement mais sans succès.
Ma discussion étant posté au mauvais endroit, je vais en ouvrir une autre dans une autre section. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com