IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Créer un tableau en mémoire, puis l'afficher


Sujet :

VBA

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut Créer un tableau en mémoire, puis l'afficher
    Bonjour

    Mon problème concerne VBA sous AUTOCAD, mais c'est un truc assez classique en VB ou VBA : créer un tableau en mémoire, pour mémoriser des données. Dans mon cas, on parcourt un jeu de données (ici une liste d'attributs de blocs...), avec un test à la volée pour savoir si la valeur est présente dans deux tableaux "lettre" et "champ"), qui représentent les lignes et les colonnes de mon tableau final, ouf !!!
    J'ai fait une procédure ensuite pour afficher ce tableau pour tester si çà marche.
    Le problème c'est que çà ne marche pas !! Je ne sais pas d'où çà vient, en tout cas rien ne s'affiche !!

    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     Sub ExtraireCartouche()
     
    Dim cartouche As AcadBlockReference
    Dim obj As AcadEntity
    Dim dbplan As Object
    Dim plan As Recordset
    Dim sset As Object
    Dim attributeObj As AcadAttribute
    Dim varAttributes As Variant
    Dim strAttributes, projet As String
    Dim proy As Boolean
    Dim req As String
    Dim i, ligne, j, k, colonne As Integer
    Dim indice(0 To 4, 0 To 5)
    Dim lettre, champ As Variant
     
    'Création de ma liste de valeur
    Set sset = ThisDrawing.SelectionSets.Add("SS3")
     
    ' Prompt the user to select objects
    sset.SelectOnScreen
    For Each obj In sset
    Set cartouche = obj
    Next
    varAttributes = cartouche.GetAttributes
    lettre = Array("A", "B", "C", "D", "E", "F")
    champ = Array("fecha", "puest", "autor", "contr")
    proy = False
    plan.AddNew
    For i = LBound(varAttributes) To UBound(varAttributes)
    MsgBox "nom de l'attribut : " & varAttributes(i).TagString
    'remplissage du tableau "indice" avec les valeurs des champs d'indice
    'en cherchant à quelle coordonnée (ligne, colonne)
    'ils doivent se trouver dans le tableau
        For j = 0 To 5
        If Right(varAttributes(i).TagString, 1) = lettre(j) Then
            'si l'étiquette de l'attribut est de longueur 1,
            'alors on est à la première ligne du tableau "indice",
            'qui contient la valeur de l'indice
            MsgBox "boucle : lettre " & Right(varAttributes(i).TagString, 1) & " J = " & j
            If Len(varAttributes(i).TagString) = 1 Then
                ligne = 0
                colonne = j
                MsgBox "indice " & lettre(j)
            'sinon on cherche dans le tableau champ la valeur de la colonne
            Else
                For k = 0 To 3
                    If Left(varAttributes(i).TagString, 5) = champ(k) Then
                    ligne = k + 1
                    colonne = j
                    End If
                Next
                k = 0
            End If
        End If
        Next
        j = 0
    If colonne <> "" And ligne <> "" Then
        indice(ligne, colonne) = varAttributes(i).TextString
        MsgBox ("placement de " & varAttributes(i).TextString & " à la ligne " & ligne & " et à la colonne " & colonne)
    End If
     
    affichtab (indice)
    ThisDrawing.SelectionSets("SS3").Delete
     
    End Sub
    Ma procédure affichtab() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub affichtab(bat As Variant)
     
    Dim text As String
    For i = 0 To 4
        For j = 0 To 5
        text = text & "|" & " " & indice(i, j)
        Next
        text = text & vbCrLf
    Next
    MsgBox text
    End Sub
    Merci beaucoup d'avance

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    J'espère que ceci t'aidera à comprendre :

    Il te faut une textbox multiline (propriété multiligne = True) et un bouton de commande


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Private Sub Command1_Click()
      'ici on crée un tableau pour essayer
      Dim letableau(3, 4) As String, I as integer, J as integer
      For i = 0 To 3
        For j = 0 To 4
          letableau(i, j) = i & "a" & j
        Next j
      Next i
      Text1.Text = ""
     
      'on affiche maintenant notre tableau d'essai
      affiche letableau
    End Sub
     
    Private Sub affiche(toto() As String)
     Dim glup as string, I as integer, J as integer
     For i = 0 To 3
       For j = 0 To 4
         If j = 0 Then glup = "" Else glup = vbTab
         Text1.Text = Text1.Text & glup & toto(i, j)
       Next j
       Text1.Text = Text1.Text & vbCrLf
     Next i
    End Sub

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 61
    Points
    61
    Par défaut
    Salut

    Finalement j'ai opté pour un autre algorithme, ce que je voulais faire était trop compliqué.
    Merci à ucfoutu pour sa participation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer un tableau pour afficher un graphique
    Par devlm dans le forum Langage
    Réponses: 4
    Dernier message: 28/06/2012, 16h38
  2. Créer un tableau pour afficher les données d'une requête.
    Par BILANGA dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 13/10/2009, 12h04
  3. retourner un Tableau puis l'afficher
    Par djack44 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 11/03/2008, 14h16
  4. créer un tableau, afficher des données et plus
    Par NicoO_O dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 13/04/2007, 12h16
  5. Réponses: 14
    Dernier message: 13/10/2005, 12h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo