Aller au contenu

Problème avec la dialbox OpenFileDialog


Messages recommandés

Posté(e)

Salut

 

Je cherche à me servir d'une boîte de dialogue "ouvrir fichier" dans AUTOCAD, en cherchant j'ai donc trouvé du code qui marche bien sur ce post

http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=3622#pid10940

 

Il me manque juste la possibilité de sélectionner plusieurs fichiers, c'est la propriété Multiselect.

En cherchant de nouveau, j'ai trouvé une astuce : il s'agit de donner à la propriété Flags la valeur suivante :

         OpenFile.flags = &H201 

 

Le problème c'est que çà m'affiche alors une boîte de dialogue un peu "old fashioned" bien moche, avec les noms de fichiers tronqués et le signe "~" . çà m'intéresse pas, même si je peux alors en sélectionner plusieurs. C'était pas mal trouvé (bien ésotérique en tout cas :casstet: ) mais c'est pas satisfaisant

 

Quelqu'un sait-il comment faire çà tout en gardant ma belle OpenFileDialog ?

 

D'autre part, tant que j'y suis, je veux, dans la foulée, sélectionner un bloc cartouche présent dans un espace papier, et je veux faire un test sur le nom. J'ai codé çà :

 

Sub extractauto()
Dim i As Integer
Dim bloccart As Object
For i = 0 To ThisDrawing.Blocks.Count - 1
   MsgBox ThisDrawing.Blocks(i).Name
   If Not InStr(0, ThisDrawing.Blocks(i).Name, "C2005") = 0 Then
       MsgBox "extraction de " & ThisDrawing.Blocks(i).Name
       Set bloccart = ThisDrawing.Blocks(i)
       ExtractCart (bloccart)
'        End If

   Next

End Sub 

 

çà bloque sur

 

InStr(0, ThisDrawing.Blocks(i).Name, "C2005") 

 

Pourtant, le msgbox affiche :

 

http://shup.com/Shup/26243/108129155437autocadtz4.png

 

Quel est le problème avec la fonction Instr ?

 

Merci

Posté(e)

pour ton problème sous InStr(0, ThisDrawing.Blocks(i).Name, "C2005"), je pense avoir la solution:

ne me demande pas pourquoi pour toutes les fonctions usuelles de VBA, je suis obligé de déclarer que ça appartient bien à VBA en faisant :

 

VBA.InStr(0, ThisDrawing.Blocks(i).Name, "C2005")

 

Si ça ne marche pas donne le type d'erreur que ça te donne... on l'a peut-être déjà rencontrée...

 

pour le reste j'y regarde ce soir bon courage pour la suite

 

[Edité le 3/3/2008 par sechanbask]

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Excuses-moi, Sechanbask ,mais je n'ai pas bien vu la subtilité qu'il y avait entre :

 

 InStr(0, ThisDrawing.Blocks(i).Name, "C2005")

 

et :

 

je suis obligé de déclarer que ça appartient bien à VBA en faisant :

 

InStr(0, ThisDrawing.Blocks(i).Name, "C2005")

 

Pour l'API OpenFileDialog, je crois que je vais plutôt fonctionner par parcours de répertoires, et non par sélection manuelle de fichier, c'est donc pas la peine de de se prendre trop la tête sur ce code, d'autant plus que sur Developpez.com, forum "Général VBA", on m'a dit :

 

http:// http://www.developpez.net/forums/showpost.php?p=3006905&postcount=2

 

Alors, bon...

 

C'est tout de même étonnant qu'avec ma valeur "OpenFile.flags = &H201" çà marche, mais que je retombe sur l'ancienne Interface bien moche, alors que dans AUTOCAD, on peut sélectionner plusieurs fichiers dans par exemple "Fichier/Ouvrir". Y'a sûrement une solution, mais il faut être initié aux arcanes de la programmation système De Windows... :exclam:

 

Amicalement

Posté(e)

de rien, je suis là pour ça

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité