Aller au contenu

Gestion fichier en vba


Messages recommandés

Posté(e)

Bonjour ,

 

je suis en train de rediger une macro en vba , et je bute sur le fair de sauvegarder le dessin en cours , si je fais "ThisDrawing.Save " il plante , car je pense que le fichier est encours d'utilisation .

Je veux l'enregister dans un dessin temporaire puis fermer mon premier fichier et ensuite le reenregistrer ..Voici le début :

 

" If MsgBox("Voulez éffacer le dessin existant ?", _

vbYesNo) = vbYes Then

ThisDrawing.SaveAs ("c:\dessinencours_old.dxf")

'

de plus la fonction pour créer un repertoire , svp

 

Merci

 

 

 

Posté(e)

Salut

Je suis pas doué en vba mais je vois plutot cela comme début

Dim Msg, Style, Title, Response, MyString
Msg = "Souhaitez-vous sauvergarder?"                   ' Définit le message.
Style = vbYesNo + vbCritical + vbDefaultButton2     ' Définit les boutons.
Title = "Sauvegarde dessin en cours"                ' Définit le titre.
                                                   ' Affiche le message.
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then                            ' L'utilisateur a choisi Oui.
   MyString = "Oui"                                ' Effectue une action.
   ThisDrawing.SaveAs ("c:\dessinencourse_old")
   UserForm1.Hide                                  ' Ferme la Form ( par défaut userform1).

Else                                                ' L'utilisateur a choisi Non.
   MyString = "Non"                                ' Effectue une action.
   UserForm1.Hide                                  ' Ferme la Form ( par défaut userform1).
End If

 

Bon courage pour la suite...

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Merci pour cette réponse ,

 

le probleme vient que les dessins sont ne reseau et si le dessin est vérrouillé au moment de l'enregistrment , il ne veux pas 'enregistrer .

Si vous avez une idée , je ne dis pas nom .

 

Pour creer un repertoire , je passe par une commande fso soit :

 

Dim fso

Set fso = CreateObject("scripting.filesystemObject")

fso.createfolder ("c:\Nouveaux repertoire\)

 

A+

 

Posté(e)

Salut

en vlisp u (vla-save (vla-get-activedocument (vlax-get-acad-object))) fonctionne parfaitement :o

 

Sinon, pourqoui utiliser une fonction vbscript alors que tu as la fonction mkdir

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Re bonjour ,

 

Je suis venu à bout de mon probleme , a savoir enregister en vba un dessin deja ouvert .

par ex; Voux ouvrez un plan , le modifer puis le reenregistrer .

 

La commande 'thisdrawing.save" ne marche pas car le fichier est vérouille par autocad .

 

Donc voici ma solution :

 

'Tester l'existance de ce fichier

If Dir("non du fichieré, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) <> "" Then

 

'J'affiche un message si le fichier existe

If MsgBox("Voulez vous Enregistrer sur le meme N° de plan ?", _

vbYesNo) = vbYes Then

 

' Si oui Enregistre le dessin, puis zoom

SendKeys "_qsave{ENTER}"

ThisDrawing.Application.ZoomAll

 

 

Voila , sinon je fais thisdrawing.saveas ("nouveaux non ") ..

 

@+

 

 

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é