"Remove" dans Microsoft Visual Basic

"Remove" dans Microsoft Visual Basic - VB/VBA/VBS - Programmation

Marsh Posté le 22-11-2006 à 15:13:22    

Bonjour à tous
 
J'ai un document Word dans lequel j'ai beaucoup de liaisons et de renvois. J'ai besoin d'avoir certain renvois dans une police différente de mon texte principale, et comme elles sont toutes identiques, j'utilise des macros pour optimiser la tâche.
 
Comme je travail toujours sur les mêmes renvois, j'ai créé des ojets collections pour éviter de toujours inclure des conditions (If ... And If) à chaque fois que je créé une boucle.
 
J'ai procédé de la façon suivante :
 

Citation :

Dim ChercheLiaison As Field
Dim Renvois As New Collection
 
For Each ChercheLiaison In ActiveDocument.Fields
  If InStr(ChercheLiaison.Code.Text, "LINK" ) = 0 Then
    Renvois.Add ChercheLiaison
  End If
Next ChercheLiaison


J'ai donc une variable "ChercheLiaison" qui parcours l'intégralité de toutes les liaisons, et lorsque celles-ci ne sont pas des liaisons vers un autre documents, elles sont enregistré dans la collection "Renvois". Comme ça, dès que je veux travailler sur cette collection je n'ai plus qu'à taper :
 

Citation :

For Each ChercheLiaison In Renvois
  ChercheLiaison.Select
  Selection.Font.Bold = True
Next ChercheLiason


Cet exemple sélectionne toutes les liaisons contenues dans la collection "Renvois" et les mets en gras.
 
Dans mes macros, j'ai créé plusieurs collections suivants les différentes utilisations que je voulais faire, et à un moment j'ai besoin de sélectionner TOUTES mes liaisons (celles contenues dans "Renvois" ) SAUF les liaisons vers ma bibliographie. Or, dans ma macro j'ai déjà créé une collection "Biblio" qui contient tous les renvois vers ma bibliographie.
 
Je voudrais donc utiliser la commande "Remove" (toujours afin d'éviter l'emploi répétitif des "If ... And If" que je dois utiliser dans chaque boucle "For ... Next" ) afin de supprimer les éléments de la collection "Biblio" qui sont contenus dans la collection "Renvois".
 
J'ai essayé tout simplement :
 

Citation :

Renvois.Remove Biblio


et
 

Citation :

For Each ChercheLiaison In Biblio
  Renvois.Remove ChercheLiaison
Next ChercheLiason


Malheureusement, dans les deux cas j'ai l'erreur "Erreur d'éxécution '13' : Incompatibilité de Type", et comme l'aide sur cette fonction est plus que dérisoire dans Microsoft Visual Basic, j'ai besoin de votre aide pour savoir comment écrire correctement cette fonction et pouvoir supprimer ma collection "Biblio" de ma collection "Renvois".
 
Merci à tous


Message édité par mistoufle le 22-11-2006 à 20:38:28
Reply

Marsh Posté le 22-11-2006 à 15:13:22   

Reply

Marsh Posté le 23-11-2006 à 10:07:34    

http://www.microsoft.com/france/ms [...] lCNET.mspx
voir paragraphe implémentation de la fonction remove :)

Reply

Marsh Posté le 23-11-2006 à 13:43:49    

Désolé, mais cet exemple ne peux pas me servir, dans ce cas un index (item) est utilisé pour préciser qu'il faut supprimer le DERNIER bouton du tableau.
 
Or, moi je ne connais pas les positions des valeurs à supprimer dans ma collection. Pour utiliser cet exemple, il faudrait que je retrouve les positions des valeurs dans la collection, avant de les supprimer, je pense qu'il doit y avoir beaucoup plus simple.


Message édité par mistoufle le 23-11-2006 à 13:44:39
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed