Gestion d'une collection [Résolu]

Signaler
-
 mattbboys -
Bonjour,

Je réalise une macro sous microsoft visual basic avec autocad avec laquelle j'insère des symboles (exemple: contact ouvert) à partir d'excel.

la fonction d'insertion que j'utilise (et qui fonctionne à merveille) est:

Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(PointInsertion, symb, 1#, 1#, 1#, 0)


Où la variable "symb" est un string contenant le lien vers le symbole dans la bibliothèque autocad.

Pour que la variable "symb" prenne le bon lien j'utilise ce code (ou "contenu2" est le contenu de la cellule excel correspondante)

If contenu2 = ("Contact Fermeture") Then
        
        symb = "T:\Bibliothéque Autocad\UC\uc066_Contact_Fermeture.dwg"
    
    End If


Ma question est simple, j'ai une cinquantaine de symboles et je pense qu'il y a mieux que 50 boucle "if..then end if".

Si une âme charitable a une idée a me proposer, je suis preneur

d'avance merci !

ps: j'aimerai créer une fonction à part qui s'appelerait "listesymbole" ...

4 réponses

Messages postés
28892
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 juillet 2020
332
Bonjour,

Quoi qu'il en soit, à part faire un test conditionnel je ne vois pas d'autre méthode.

Par contre, plutot que d'utiliser des IF vous pouvez, en effet, utiliser un SELECT CASE.

vs.80).aspx MSDN - SELECT CASE

Exemple :
Select contenu2 
Case "Contact Fermeture" 
symb  = "T:\Bibliothéque Autocad\UC\uc066_Contact_Fermeture.dwg"
Case "Contact Ouverture"
symb = "T:\Bibliothéque Autocad\UC\uc066_Contact_Ouverture.dwg"
Case Else
Symb = "autre chose..."
End Select



Cordialement,
Jordane
_____________________________________________________
Règles du forum à lire avant de poster une question : ICI
Messages postés
28892
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 juillet 2020
332
Bonjour,

Une fonction qui ressemble à ça devrait convenir :
Function listesymbole(sContenu As String)
    Select Case contenu
        Case "Contact Fermeture"
            Symb = "T:\Bibliothéque Autocad\UC\uc066_Contact_Fermeture.dwg"
        Case "Contact Ouverture"
            Symb = "T:\Bibliothéque Autocad\UC\uc066_Contact_Ouverture.dwg"
        Case Else
            Symb = "autre chose..."
    End Select
listesymbole = Symb
End Function



et pour l'utiliser :
monSymb = listesymbole(contenu2)


Cordialement,
Jordane
_____________________________________________________
Règles du forum à lire avant de poster une question : ICI
Parfait !

Ça sera déjà beaucoup mieux !

Si je créé une fonction spécifique, quel(s) argument(s) ou paramètres dois-je retourner?
Tout marche au poil, je n'aurai pas pu avoir mieux. Encore merci et désolé pour mon amateurisme.