Jump to content

Sortir les attributs des blocs


Recommended Posts

Helloooooooo !! i neeeeed helpppppp !!

Je vais faire un exemple pour mieux comprendre

j'ai plusieurs blocs dans un dessin avec 2 attributs chaque bloc.

je vais extraire les attributs de la façon suivante:

l'utilisateur clique sur les blocs (bloc par bloc): par exemple il a cliqué sur 6 blocs; après un clic sur entrée je veux:

Ouvrir un fichier excel ou bien il modifie sur un fichier déjà ouvert:

Inserer les informations suivantes sur l'excel:

ligne N°1

place dans la colonne A l'attribut 1 du premier bloc

place dans la colonne B l'attribut 2 du premier bloc

place dans la colonne C l'attribut 1 du 2eme bloc

place dans la colonne D l'attribut 2 du 2eme bloc

 

ligne N°2

place dans la colonne A l'attribut 1 du 2eme bloc

place dans la colonne B l'attribut 2 du 2eme bloc

place dans la colonne C l'attribut 1 du 3eme bloc

place dans la colonne D l'attribut 2 du 3eme bloc

 

Ligne N°n-1:

place dans la colonne A l'attribut 1 du n-1eme bloc

place dans la colonne B l'attribut 2 du n-1eme bloc

place dans la colonne C l'attribut 1 du neme bloc

place dans la colonne D l'attribut 2 du neme bloc

 

J'ai essayé de le faire mais je n'arrive pas :(

Des pistes pour m'aider svp

Link to post
Share on other sites

moi je creerais un tableau dynamique que tu remplis a chaque fois que tu cliques sur un bloc avec

Redim preserve

 

pour extraire j'utilise ça

 

'X c'est l'incrément de ta boucle

               If blockrefobj.HasAttributes = True Then 'pas obligatoire
                       For Each att In blockrefobj.GetAttributes
                               If att.TagString = "ATT1" Then 'le nom de ton attribut
                               TAB_(X,0) = att.TextString 'la valeur de l'attribut
                               Else
                               End If

                               If att.TagString = "ATT2" Then 'le nom de ton attribut
                               TAB_(X,1) = att.TextString 'la valeur de l'attribut
                               Else
                               End If
     
                       Next
               Else
               End If

 

des qu'il y a une erreur une message box pour demander si tu souhaites sortir ou non de ta sélection

 

ensuite tu crées un classeur excel en vba via la reference Microsoft Excel XX.X Objet Librairy

 

où tu transpose ton tableau apres soit vers un tableau exoistant soit un nouveau

et c'est comme excel grace à la reference ;-)

Link to post
Share on other sites

moi je creerais un tableau dynamique que tu remplis a chaque fois que tu cliques sur un bloc avec

Redim preserve

 

pour extraire j'utilise ça

 

'X c'est l'incrément de ta boucle

               If blockrefobj.HasAttributes = True Then 'pas obligatoire
                       For Each att In blockrefobj.GetAttributes
                               If att.TagString = "ATT1" Then 'le nom de ton attribut
                               TAB_(X,0) = att.TextString 'la valeur de l'attribut
                               Else
                               End If

                               If att.TagString = "ATT2" Then 'le nom de ton attribut
                               TAB_(X,1) = att.TextString 'la valeur de l'attribut
                               Else
                               End If
     
                       Next
               Else
               End If

 

des qu'il y a une erreur une message box pour demander si tu souhaites sortir ou non de ta sélection

 

ensuite tu crées un classeur excel en vba via la reference Microsoft Excel XX.X Objet Librairy

 

où tu transpose ton tableau apres soit vers un tableau exoistant soit un nouveau

et c'est comme excel grace à la reference ;-)

 

 

Merci pour votré réponse;

j'ai pensé de faire le boucle do until (jusqu'à l'utilisateur clique sur entrée) comment écrire ça ?

Link to post
Share on other sites

si tu veux un résultat rapide sans prise de tete (chercher les références qui gère le clavier pendant une instruction, gérer les commandes clavier etc...)

 

fait juste une messagebox tu y gagnera ton temps pour cette petite procédure ;-)

 

"genre voulez vous continuer ?" ou "Voulez vous arreter ?" et la suivant la réponse ton prog part d'une maniere ou d'une autre

 

sinon faut verifier l'entrée clavier chr(10)

Link to post
Share on other sites

si tu veux un résultat rapide sans prise de tete (chercher les références qui gère le clavier pendant une instruction, gérer les commandes clavier etc...)

 

fait juste une messagebox tu y gagnera ton temps pour cette petite procédure ;-)

 

"genre voulez vous continuer ?" ou "Voulez vous arreter ?" et la suivant la réponse ton prog part d'une maniere ou d'une autre

 

sinon faut verifier l'entrée clavier chr(10)

 

Bonjour, Merci pour votre réponse,

mais j'ai pas compris ça :(chercher les références qui gère le clavier pendant une instruction, gérer les commandes clavier etc...)

Merci par avance

Link to post
Share on other sites

https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/keypress-event

 

ça c'est la page pour l'évenement quand vous appuyez sur une touche... facile pas compliqué

 

par contre si votre programme tourne et attends la sélection d'un bloc et que vous faites la touche entrée (il va générer une erreur car ce n'est pas ce qu'il demande)

 

c'est pour ça que quand je fais des choses comme ça, je le rentre dans une gestionnaire d'erreur et ensuite je la traite.

 

Maintennnant si vous voulez absolument faire entrée à ce moment la, alors que dans votre procédure vous demande de sélectionner un objet, il va falloir chercher la référence qui permet ça...)

 

car de base le VBA ne fait pas de multi-threading et si tu veux le faire faut ajouter des références au projets

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...