Aller au contenu

RECUPERER LE PLUS GRAND NOMBRE


sail

Messages recommandés

Bonjour à tous

voila mon probléme : Je liste des blocs avec attributs et je voudrais récuperer le chiffre le plus grand . Dans ma routine je fait défiler tous les nombres sans savoir comment sélectionner le plus élevé . voici mon programme

 

Public Function NUMEROBORNE()

Dim objJeuSel As AcadSelectionSet

Dim CodeGroup(0 To 1) As Integer

Dim ValGroup(0 To 1) As Variant

Dim PT1(0 To 2) As Double

Dim PT2(0 To 2) As Double

Dim j As Integer

Dim Entity As AcadEntity

Dim BlocRef As AcadBlockReference

Dim Attributes As Variant

Dim S As Variant

 

PT1(0) = 50: PT1(1) = 100: PT1(0) = 0

PT2(0) = 405: PT2(1) = 145: PT2(0) = 0

 

Set objJeuSel = ThisDrawing.SelectionSets.Add("Jeu1")

objJeuSel.Select acSelectionSetWindow, PT1, PT2

CodeGroup(0) = 0

ValGroup(0) = "INSERT"

CodeGroup(1) = 2

ValGroup(1) = "248UNI,249UNI,250UNI,251UNI,252UNI,253UNI,254UNI,255UNI,256UNI"

objJeuSel.Select acSelectionSetAll, , , CodeGroup, ValGroup

 

For Each Entity In objJeuSel

' Si il a des attributs

If Entity.HasAttributes Then

' On les récupére

Attributes = Entity.GetAttributes

' On parcourt le tableau

For j = LBound(Attributes) To UBound(Attributes)

 

If Attributes(j).TagString = "B" Then

S = Attributes(j).textString

MsgBox S

End If

Next j

End If

Next

 

objJeuSel.Delete

End Function

 

Si quelqu'un a une solution , merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Si j'ai bien compris ceque tu veux faire, tu as deux solutions :

soit tu stoskes tout tes attributs dans un array et ensuite, tu recherches le plus grand, soit tu fais ca à la volée. Pour la volée (un peu moins lourd), ca donnera quelque chose de ce style :

 

 

max=0

For Each Entity In objJeuSel

' Si il a des attributs

If Entity.HasAttributes Then

' On les récupére

Attributes = Entity.GetAttributes

' On parcourt le tableau

For j = LBound(Attributes) To UBound(Attributes)

 

If Attributes(j).TagString = "B" Then

if max

max=Attributes(j).textString

end if

End If

Next j

End If

Next

 

msgbox "Le maximum est : "+cstr(max)

 

c'est bon ? sinon, expliques un peu plus clairement ce que tu veux faire

Lien vers le commentaire
Partager sur d’autres sites

merci à punky0147 de m'avoir repondu mais cela ne fonctionne pas .

 

En fait j'ai des blocs avec plusieurs attributs (tag.string : "B").Une fois que j'ai selectionné tous mes blocs selon le filtre ,je récupére toutes les valeurs (text.string) pour garder la plus grande .

Peut-étre qu'avec un array cela fonctionne .(je n'ai pas toujours pas compris à quoi sert et comment fonctionnne ce fameux array)

nota : Dans chaque bloc il y a plusieurs attributs (tag.string : "B").

 

J'espére avoir été plus clair dans mon explication .

Maintenant je vais tester la fonction "tri"

 

A+ Sail

Lien vers le commentaire
Partager sur d’autres sites

Je vais te donner un exemple ce sera plus explicite .

Mon bloc 248UNI est inceré X fois dans mon dessin en l'occurence il est incere 3 fois dans cet exemple.Il comporte plusieurs attributs .

 

Ex : bloc n°1 248UNI(valeur de l'attribut n° 1: 10)

(valeur de l'attribut n° 2: 11)

(valeur de l'attribut n° 3: 15)

bloc n°2 248UNI(valeur de l'attribut n° 1: 5)

(valeur de l'attribut n° 2: 8)

(valeur de l'attribut n° 3: 25)

bloc n°3 248UNI(valeur de l'attribut n° 1: 1)

(valeur de l'attribut n° 2: 12)

(valeur de l'attribut n° 3: 13)

 

Dans ce cas la , en listant tous les attributs des blocs 248UNI , je veux afficher la valeur 25.

 

En faite cela est une petite partie de mon prog et cette fameuse valeur conditionne la suite de ma routine .

 

Merci d'avance PUNKY 0147

 

Sail

Lien vers le commentaire
Partager sur d’autres sites

et tu est sure que le bout de prog que je t'ai donné ne marche pas ? j'ai fait un test à l'arrache sur un fichier que j'ai créé avec des blocs ayant plusieurs attributs et des valeurs dans les différents attributs et ca fonctionne. Si tu as msn : remy_01_69@hotmail.com

voilou, tiens moi au courant, je ne comprend pas pourquoi le code que j'ai donné précédemment ne marche pas.

Lien vers le commentaire
Partager sur d’autres sites

Je n'ai pas msn .

Je crois que j'ai trouve la solution . En fait il me retourne bien un nombre mais celuis le plus proche de 9 . Pour le prog le 25 par exemple, il le place entre 2 et 3 .Par contre si je mets un 0 devant 1 ou 2 ....9 ,effectivement il me retiendra le 25 .Comment faire pour eviter ce probleme de 0 .

 

merci sail

Lien vers le commentaire
Partager sur d’autres sites

j'ai des grammes là, mais je dirais que ca vient du fait que quand il compare le max et le texstring, il compare des chaines de caractères, et donc, il voit ca comme l'ordre alphabétique. Donc, pour éviter ca, dans le 'if max

 

Voilou, en espérant que cette fois ci ca marhce, tiens moi au courant. bye

Lien vers le commentaire
Partager sur d’autres sites

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é