Gestion d'une collection

Résolu
mattbboys - 20 févr. 2013 à 11:04
 mattbboys - 20 févr. 2013 à 15:56
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

jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
20 févr. 2013 à 11:28
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
3
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
20 févr. 2013 à 11:55
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
3
Parfait !

Ça sera déjà beaucoup mieux !

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