doua Posté(e) le 31 mars 2006 Posté(e) le 31 mars 2006 salut, à vous tous , en fait j'ai un fichier qui contien que des attributs , et je veux faire un extraction d'attribut vers excel mais je veux extraire que les elements important ! je m'explique c'est un dessin electrique, ok sur ce dernier il ya par exemple des disjoncteurs et des contacteurs etc... et je doit faire une liste materiel pour le service achat . et comme parfois on peut représenter le détail de ces equipements electriques moi je veux juste qu'il mextrait le nom du disjoncteur par exemple + le calibre c'est tous et il me met tous ça sur une liste dans excel... merci de votre aide amicalementdoua
mikL44 Posté(e) le 31 mars 2006 Posté(e) le 31 mars 2006 Bonjour doua il y a la commande eattext qui fait ca, du moins si j'ai bien saisi ta question ;)
doua Posté(e) le 1 avril 2006 Auteur Posté(e) le 1 avril 2006 Merci boris, pour la commande eattext je la connais ! mais en fait je veux un truc automatique !! j'ai déja un programme mais ce dernier m'extrait toutes les attributs sans exception... :casstet: svp, s'il ya qlq qui peut aider voila mon programme si vous avez une idée!!!??? :( Private Sub bt_fichier_Click() 'gestion des erreurs On Error GoTo fin 'si liste n'est pas vide alors If liste_info.ListCount > 0 Then nom_fichier = ThisDrawing.GetVariable("dwgname") nom_fichier = Left(nom_fichier, Len(nom_fichier) - 4) 'gestion de l'objet commondialog (fenêtre fichier) CommonDialog1.InitDir = ThisDrawing.GetVariable("dwgprefix") CommonDialog1.FileName = nom_fichier CommonDialog1.ShowOpen nom_fichier = CommonDialog1.FileName If nom_fichier = "" Then Exit Sub End If 'création du fichier de données par défaut TXT et dans chemin du fichier DWG Open nom_fichier For Output As #1 'en tête du fichier Print #1, "Liste des attributs de blocs" Print #1, vbCr Print #1, ThisDrawing.GetVariable("dwgprefix") & ThisDrawing.GetVariable("dwgname") Print #1, vbCr Print #1, vbCr ' ajoute les informations For i = 0 To liste_info.ListCount - 1 Print #1, liste_info.List(i) Next i Close #1 msgBox "Fichier bien enregistré." Else MsgBox "La liste est vide." End If fin: End Sub Private Sub bt_lancer_Click() ' declaration des variables Dim element As AcadObject Dim tableau_attribut As Variant Dim compteur_bloc As Integer Dim etiquette_attribut As String Dim valeur_attribut As String Dim i As Integer Dim pt_insertion As Variant Dim rotation As Single ' on vide la liste si elle contient des infos liste_info.Clear 'on affiche une boite à message pour faire patienter Traitement_info.Visible = True Traitement_info.Text = "Traitement en cours...Patience." ' on met un timer sinon la boite à message ' ne s'affiche pas PauseTime = 5 Start = Timer Do While Timer < Start + PauseTime DoEvents Loop 'initialisation des variables compteur_bloc = 0 nb_dec = ThisDrawing.GetVariable("luprec") ' boucle sur les tous les objets For Each element In ThisDrawing.ModelSpace ' si l'objet est un bloc alors If StrComp(element.ObjectName, "AcDbBlockReference", 1) = 0 Then ' si l'objet bloc contient des attributs alors If element.HasAttributes Then compteur_bloc = compteur_bloc + 1 ' stocke les info dans le tableau tableau_attribut = element.GetAttributes ' ajoute dans la liste le nom du bloc liste_info.AddItem "***** " & element.Name & " *****" liste_info.AddItem "------------------------------" ' passe en revu tous les attributs du bloc For i = LBound(tableau_attribut) To UBound(tableau_attribut) 'ajoute dans la liste le nom de l'étiquette de l'attribut ' ainsi que la valeur de l'attribut liste_info.AddItem "Etiq : " & tableau_attribut(i).TagString liste_info.AddItem "Valeur: " & tableau_attribut(i).TextString Next i 'saut de ligne entre chaque bloc liste_info.AddItem " " End If End If Next element ' on rend invisible la boite à message Traitement_info.Visible = False ' inscription du nombre de blocs dans la liste info_compteur = compteur_bloc End Sub merci de votre précieuse aide ! :) :D
doua Posté(e) le 3 avril 2006 Auteur Posté(e) le 3 avril 2006 voilà mon programme pour extraction d'attribut mais si qlq à une idée pour ne selectionnée que les attributs qui nous intresses puis les mettre sous forme d'un tabeau dans un fichier excel je vous remercie de votre présieuse aide !! Private Sub bt_fichier_Click() 'gestion des erreurs on Error GoTo fin 'si liste n'est pas vide alors If liste_info.ListCount > 0 Then nom_fichier = ThisDrawing.GetVariable("dwgname") nom_fichier = Left(nom_fichier, Len(nom_fichier) - 4) 'gestion de l'objet commondialog (fenêtre fichier) CommonDialog1.InitDir = ThisDrawing.GetVariable("dwgprefix") CommonDialog1.FileName = nom_fichier CommonDialog1.ShowOpen nom_fichier = CommonDialog1.FileName If nom_fichier = "" Then Exit Sub End If 'création du fichier de données par défaut TXT et dans chemin du fichier DWG Open nom_fichier For Output As #1 'en tête du fichier Print #1, "Liste des attributs de blocs" Print #1, vbCr Print #1, ThisDrawing.GetVariable("dwgprefix") & ThisDrawing.GetVariable("dwgname") Print #1, vbCr Print #1, vbCr ' ajoute les informations For i = 0 To liste_info.ListCount - 1 Print #1, liste_info.List(i) Next i Close #1 msgBox "Fichier bien enregistré." Else MsgBox "La liste est vide." End If fin: End Sub Private Sub bt_lancer_Click() ' declaration des variables Dim element As AcadObject Dim tableau_attribut As Variant Dim compteur_bloc As Integer Dim etiquette_attribut As String Dim valeur_attribut As String Dim i As Integer Dim pt_insertion As Variant Dim rotation As Single ' on vide la liste si elle contient des infos liste_info.Clear 'on affiche une boite à message pour faire patienter Traitement_info.Visible = True Traitement_info.Text = "Traitement en cours...Patience." ' on met un timer sinon la boite à message ' ne s'affiche pas PauseTime = 5 Start = Timer Do While Timer < Start + PauseTime DoEvents Loop 'initialisation des variables compteur_bloc = 0 nb_dec = ThisDrawing.GetVariable("luprec") ' boucle sur les tous les objets For Each element In ThisDrawing.ModelSpace ' si l'objet est un bloc alors If StrComp(element.ObjectName, "AcDbBlockReference", 1) = 0 Then ' si l'objet bloc contient des attributs alors If element.HasAttributes Then compteur_bloc = compteur_bloc + 1 ' stocke les info dans le tableau tableau_attribut = element.GetAttributes ' ajoute dans la liste le nom du bloc liste_info.AddItem "***** " & element.Name & " *****" liste_info.AddItem "------------------------------" ' passe en revu tous les attributs du bloc For i = LBound(tableau_attribut) To UBound(tableau_attribut) 'ajoute dans la liste le nom de l'étiquette de l'attribut ' ainsi que la valeur de l'attribut liste_info.AddItem "Etiq : " & tableau_attribut(i).TagString liste_info.AddItem "Valeur: " & tableau_attribut(i).TextString Next i 'saut de ligne entre chaque bloc liste_info.AddItem " " End If End If next element ' on rend invisible la boite à message Traitement_info.Visible = False ' inscription du nombre de blocs dans la liste info_compteur = compteur_bloc End Sub merci
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant