Aller au contenu

Sortir les attributs des blocs


Messages recommandés

Posté(e)

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

Posté(e)

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 ;-)

Posté(e)

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 ?

Posté(e)

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)

Posté(e)

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

Posté(e)

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

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é