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

VB 6 et antérieur Discussion :

probleme avec un tableau


Sujet :

VB 6 et antérieur

  1. #21
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    Voici le code de mes couleurs. Je pense que je dois faire le type énuméré autrement vb ne reconnaîtra jamais les couleurs, si?


    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
     
     
    Option Explicit
    Const nblig = 10
    Const nbcol = 10
    Dim tab_cell(0 To nblig, 0 To nbcol) As String
    Dim tab_vie(0 To nblig, 0 To nbcol) As Boolean
    Dim i As Integer
    Dim j As Integer
    Dim nb As Single
    Dim col As Integer
    Dim lig As Integer
    Dim nb1 As Integer
    Dim nb_max As Integer
    Dim idx As Integer
     
     
     
    Private Sub Command1_Click()
    Dim tab_vi() As Boolean
    Dim tab_cel() As String
     
    Dim H As Integer
    Dim K As Integer
     
    Call InitTvie(H, K)
    Call MortouVivant(tab_vi(), tab_cel())
     
    nb = Text1.Text ' je rentre un pourcentage de cellule vivante
    nb_max = nblig * nbcol 'je calcule le nombre max de case du tableau
    nb1 = Int(nb * nb_max) 'j'obtiens le nombres de cellules vivantes par rapport aux nombres de cases'
    For i = 1 To nb1 'boucle qui donne aléatoirement la position de chaque cellules
    Randomize
    col = Int(nblig * Rnd() + 1)
    lig = Int(nbcol * Rnd() + 1)
     Shape1(i).FillStyle = 0
      If tab_cell(col, lig) = "Mort" Then
          Shape1(idx).FillColor = vbRed
      Else
           Shape1(idx).FillColor = vbYellow
      End If
    Next i

  2. #22
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    J'ai relu tout les bouts de code, a quel moment donnes-tu une valeur à idx ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Shape1(i).FillStyle = 0
      If tab_cell(col, lig) = "Mort" Then
          Shape1(idx).FillColor = vbRed
      Else
           Shape1(idx).FillColor = vbYellow
      End If
    Shape1(i).FillStyle = 0, puis Shape1(idx).FillColor = vbRed ? pas le même index ?
    Toutes tes Shape1s existent avant ou tu les crées au cours de l'utilisation du programme?
    Pour ce qui est des couleurs, exemple vbRed, elles sont connues de VB, F2 -> ColorConstants, donc tu n'as pas a t'en soucier.
    Shape1(i).FillStyle = 0, il voudrait mieux que ses Shapes soient à FillStyle = 0 suite a la pose sur ton Form, petit gain d'execution de ta boucle For Next.
    A+
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #23
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    Mes shapes existent avant. J'ai fais un groupe de contrôle sur l'interface.
    J'aimerais que toutes les shapes soit solide, et qu'il y ait une couleur pour les cellules vivantes et une autre pour les cellules mortes pour le tableau tab_cell
    Mais quand je met shape(idx).fillstyle=0 g aucune couleur quand je lance le programme.

  4. #24
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Mais quand je met shape(idx).fillstyle=0
    idx n'evolut pas dans ta boucle For Next
    essais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Shape1(i).FillStyle = 0
      If tab_cell(col, lig) = "Mort" Then
          Shape1(i).FillColor = vbRed
      Else
           Shape1(i).FillColor = vbYellow
      End If
    de toutes façons, Shape1(?).FillStyle =, et Shape1(?).FillColor =, doivent avoir le même indice!
    ou bien fais evoluer Idx dans ta boucle.
    A+
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  5. #25
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    Merci
    Je galère de trop en vb car je débute.
    Sa marche, mais il me place mon nombre de cellules vivantes toujours a la même place. Quel est l'intérêt que j'utilise randomize et rnd ()?
    J'aimerais rentrer un pourcentage de cellules vivantes qui est nb. Puis récupérer le nombre de cellules vivantes (avec nb1) pour les placer aléatoirement dans tab_cell. Et que ces cellules vivantes soient d'une couleur et que toutes les autres cellules du tableau soient d'une autre couleur!
    Mais je crois que je suis loin de ce résultat!
    Est ce que je dois rajouter 2 autres boucles pour parcourir le tableau tab_cell et insérer une 3ème boucle pour mes cellules vivantes?
    Et je dois avoir un problème avec mon placement aléatoire des cellules vivantes?
    Peux tu m'aider, s'il te plait.

  6. #26
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Bon, sa fonctionne, pas si simple en tout cas pour moi.
    Ce n'est peut être pas la meilleur façon de proceder, les copains peuvent proposer une autre façon de faire
    Pour essais, sur un Form, 3 labels AutoSize = True et 1 CommandButton.
    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
    Private Sub Command1_Click()
    'tes variables
    Const nblig = 10
    Const nbcol = 10
    Dim nb As Single
    Dim col As Integer
    Dim lig As Integer
    Dim nb1 As Integer
    Dim nb_max As Integer
    Dim tab_vide(nblig - 1, nbcol - 1) As Boolean
    Dim tab_celule(nblig - 1, nbcol - 1) As String
    Dim idx As Integer
     
    'ajouté par moi
    Dim ChiffreAleatoire As String
    Dim ChiffrAge As String
    Dim T As Integer, U As Integer, V As Integer
     
    nb_max = (nblig) * (nbcol) 'je calcule le nombre max de case du tableau
    '*****************************************************************
    '*** ATTENTION IMPERATIF ne pas monter au dela de 90%,        ****
    '*** peut être moins suivant nb_max(nombre total des cellules)****
    '*****************************************************************
    nb = 12 'Text1.Text ' je rentre un pourcentage de cellule vivante
    'là je divise par 100 puisque tu as parlé de %, ligne au dessus
    nb1 = Int(nb * nb_max) / 100 'j'obtiens le nombres de cellules vivantes par rapport aux nombres de cases'
    Label1 = nb1 'pour debug, a remer/supprimer
    Randomize
    V = Int(((nblig - 1) * Rnd) + 1)
    U = Int(((nbcol - 1) * Rnd) + 1)
    ChiffreAleatoire = "|" & CStr(V) & "/" & CStr(U)
     
    Do While T < nb1
     V = Int(((nblig - 1) * Rnd) + 1)
     U = Int(((nbcol - 1) * Rnd) + 1)
     ChiffrAge = CStr(V) & "/" & CStr(U)
     If InStr(ChiffreAleatoire, ChiffrAge) = 0 Then
      ChiffreAleatoire = ChiffreAleatoire & "|" & ChiffrAge
      T = T + 1
     End If
     DoEvents
    Loop
    ChiffreAleatoire = ChiffreAleatoire & "|"
    Label2 = ChiffreAleatoire 'pour debug, a remer/supprimer
    V = 0 'pour debug, a remer/supprimer
    For T = 0 To nblig - 1
     For U = 0 To nbcol - 1
      idx = (T * nbcol) + U 'la je suis pas sûr, lire la suite apres le code
      'Shape1(idx).FillStyle = 0  'a deremer, si pas fait a la construction
      ChiffrAge = "|" & CStr(T) & "/" & CStr(U) & "|"
      If InStr(ChiffreAleatoire, ChiffrAge) = 0 Then
       tab_vide(T, U) = False
       tab_celule(T, U) = "Mort"
       'Shape1(idx).FillColor = vbRed 'a deremer
       Else
       tab_vide(T, U) = True
       tab_celule(T, U) = "Vivant"
       'Shape1(idx).FillColor = vbYellow 'a deremer
       V = V + 1 'pour debug, a remer/supprimer
      End If
     Next U
    Next T
    Label3 = V - 1 'pour debug, a remer/supprimer
    End Sub
    Le calcul de idx est valable si tes Shapes sont rangées de gauche à droite et de haut en bas.
    Maintenant
    A+
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #27
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    Merci ma sa ma l'air d'etre compliquer tout ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ChiffreAleatoire = "|" & CStr(V) & "/" & CStr(U)
    Pourquoi avoir mis "|" et "/"? (j'essaye de comprendre ton code)

  8. #28
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Je repond a ta derniere question tout de suite apres la pose de la derniere version ....
    Voici un nouveau code plus complet, a mettre sous le coude pour y revenir lors de la construction d'un nouveau programme utilisant le même type d'objet.
    Sur un Form, 6 Labels, 3 TextBoxs, 1 CommandButton et 1 Schape (index = 0)
    Dans la partie Load du Form, les controles sont initialisés.
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    Option Explicit
    'tes variables
    Const nblig = 10
    Const nbcol = 10
    Dim nb As Single
    Dim col As Integer
    Dim lig As Integer
    Dim nb1 As Integer
    Dim nb_max As Integer
    Dim tab_vide() As Boolean
    Dim tab_celule() As String
    Dim idx As Integer
     
    'ajouté par moi
    Dim ChiffreAleatoire As String
    Dim ChiffrAge As String
    Dim T As Integer, U As Integer, V As Integer
     
    Private Sub Form_Load()
    'placement, initialisation des differents controles
    Label5.Move 60, 90: Label5.Caption = "Nbr. Ligne"
    Text1.Move 1050, 30, 495, 285: Text1.Text = nblig
    Label6.Move 1650, 90: Label6.Caption = "Nbr. Colonne"
    Text2.Move 2640, 30, 495, 285: Text2.Text = nbcol
    Label4.Move 3270, 90: Label4.Caption = "Pourcentage"
    Text3.Move 4260, 30, 495, 285: Text3.Text = "15"
    Command1.Move 60, 420, 1215, 255: Command1.Caption = "Go"
    Label1.Move 90, 720: Label1.AutoSize = True: Label1.Caption = ""
    Label2.Move 90, 960: Label2.AutoSize = True: Label2.Caption = ""
    Label3.Move 90, 1200: Label3.AutoSize = True: Label3.Caption = ""
    Shape1(0).Move 60, 1440, 315, 315: Shape1(0).FillStyle = 0
    Shape1(0).Shape = 3 'circle:
    Shape1(0).BorderWidth = 2
    End Sub
     
    Private Sub Command1_Click()
    lig = Val(Text1.Text) 'obtient le Nbr de ligne
    col = Val(Text2.Text) 'obtient le Nbr de colonne
    'redimensionnes les 2 tableux
    ReDim tab_vide(lig - 1, col - 1)
    ReDim tab_celule(lig - 1, col - 1)
    '*****************************************************************
    '*** ATTENTION IMPERATIF ne pas monter au dela de 90%,        ****
    '*** peut être moins suivant nb_max(nombre total des cellules)****
    '*****************************************************************
    nb = Val(Text3.Text) ' je rentre un pourcentage de cellule vivante
    nb_max = lig * col 'je calcule le nombre max de case du tableau
     
    'elimination eventuel des shapes en trop (sauf l'index 0)
    For T = Shape1.Count - 1 To nb_max - 1 Step -1
     Unload Shape1(T)
    Next T
    'là je divise par 100 puisque tu as parlé de %, ligne au dessus
    nb1 = Int(nb * nb_max) / 100 'j'obtiens le nombres de cellules vivantes par rapport aux nombres de cases'
    Label1 = nb1 'pour debug, a remer/supprimer
    Randomize
    V = Int(lig * Rnd)
    U = Int(col * Rnd)
    ChiffreAleatoire = "|" & CStr(V) & "/" & CStr(U)
    T = 0
    Do While T < nb1
     V = Int(lig * Rnd)
     U = Int(col * Rnd)
     ChiffrAge = CStr(V) & "/" & CStr(U)
     If InStr(ChiffreAleatoire, ChiffrAge) = 0 Then
      ChiffreAleatoire = ChiffreAleatoire & "|" & ChiffrAge
      T = T + 1
     End If
     DoEvents
    Loop
    ChiffreAleatoire = ChiffreAleatoire & "|"
    Label2 = ChiffreAleatoire 'pour debug, a remer/supprimer
    V = 0 'pour debug, a remer/supprimer
    For T = 0 To lig - 1
     For U = 0 To col - 1
      idx = (T * col) + U 'la je suis pas sûr, lire la suite apres le code
      'Shape1(idx).FillStyle = 0  'a deremer, si pas fait a la construction
      If idx > Shape1.Count - 1 Then
       'ajout d'une Shape1 qui manque
       Load Shape1(idx)
      End If
      'placement
      Shape1(idx).Move Shape1(0).Left + (U * Shape1(0).Width), Shape1(0).Top + (Shape1(0).Height * T)
      Shape1(idx).Visible = True
     
      ChiffrAge = "|" & CStr(T) & "/" & CStr(U) & "|"
      If InStr(ChiffreAleatoire, ChiffrAge) = 0 Then
       tab_vide(T, U) = False
       tab_celule(T, U) = "Mort"
       Shape1(idx).FillColor = vbRed
       Else
       tab_vide(T, U) = True
       tab_celule(T, U) = "Vivant"
       Shape1(idx).FillColor = vbYellow
       V = V + 1 'pour debug, a remer/supprimer
      End If
     Next U
    Next T
    Label3 = V - 1 'pour debug, a remer/supprimer
    End Sub
    Le code mis ici, qui m'a demandé un peu de boulot, me sert en ce moment pour un projet perso d'afficheur matriciel a leds (journaux lumineux), dût coup, cela ne me derangait pas trop de le develloper et de le mettre a dispo en reponse à ce post.

    Reponse à ta derniere question, les "|" et les "/" servent a distinguer les groupes de tirages aléatoire
    Un groupe (Lig,Col) pour les 2 tableaux a 2 indice.
    Si la ligne de chiffrage est constitué d'une suite de chiffres separés par "|Lig\Col|" il n'y a pas le risque dans la comparaison InStr(ChiffreAleatoire, ChiffrAge) = 0 d'erreur.
    Car la suite 1\10\9\16\9\0\7\3
    Si le tirage aleatoire est 0\9 il serait trouvé ici 1\10\9\16\9\0\7\3, alors que ce n'est pas vrai

    Motif de l'edit
    Sur le Form ne pas oublier de mettre Schape (index = 0)
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  9. #29
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    Merci tout plein!
    Je retravaille dessus le code!
    Et si j'ai un problème je te recontacte.

  10. #30
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    Par contre pour que le programme puisse se lancer je dois crée kan même 2 shapes sur mon interface pour former un groupe de contrôle pour que sa fonctionne. Mais une fois lancer il manque une case au tableau qui est sûrement celle que j'ai créer. Je peux y remédier comment?
    Et je créée tes 6 labels, 3 textes et le bouton de commande et les 2 shapes sur l'interface. Une fois lancée le programme ne m'affiche qu'une de mes shapes crée et le reste disparaît! Pourquoi?

  11. #31
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    je dois crée kan même 2 shapes sur mon interface pour former un groupe de contrôle pour que sa fonctionne
    pour former un groupe de contrôle
    non, il suffit de poser un controle et de lui donner, dans la page de propriété, index = 0, de fait tu te retrouves avec un groupe de controle qui ne contient qu'un controle mais que tu pourras augmenter par la suite avec la commande Load LeControle(LeControle.Count), LeControle.Count étant égal a Nbr de controle mais vue que le premier index = 0, (Nbr de controle - 1) le nouveau controle.index = Nbr, pour le premier créé = donc 1 et ainsi de suite .....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      If idx > Shape1.Count - 1 Then
       'ajout d'une Shape1 qui manque
       Load Shape1(idx)
      End If
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  12. #32
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    ok, mais ce que je comprend pas c'est que toi tu construis ton interface avec le form load, donc tu l'as créer le contrôle.
    Alors que moi je suis quand même obliger de recréer tout ce que tu as définit dans le form load sur l'interface pour que sa marche.
    Comment çà se fait?
    Désoler de te poser ça comme question mais je suis débutant

  13. #33
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    je par d'un Form vide, je place au pif 6 Labels, 3 TextBoxs, 1 CommandButton et 1 Schape.
    Dans le Form_Load, par code donc, je place, dimensionne tous les controles, donne des infos caption pour les labels et le CommandButton, le text dans les TextBoxs, par contre, si tu a deja fait le boulot en cours de création, tous ce qui est dans Form_Load ne sert a rien.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  14. #34
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    ok sa marche merci bien
    Je risque de te recontacter dans la semaine car mon but est de réaliser un jeu de la vie.
    Donc il va falloir que je rajoute les lois.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    For T = 0 To lig - 1
     For U = 0 To col - 1
      idx = (T * col) + U 'la je suis pas sûr, lire la suite apres le code
      'Shape1(idx).FillStyle = 0  'a deremer, si pas fait a la construction
      If idx > Shape1.Count - 1 Then
       'ajout d'une Shape1 qui manque
       Load Shape1(idx)
      End If
    Ce bout de code sert à rajouter des shapes ces çà pour crée le tableau ?
    Et les deux sous programmes que j'ai fait je les insère dans le bouton en les appelant ou je les supprime

  15. #35
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Je dois insérer un sous programme qui est une loi d'evolution dans une 2eme commande mais vue que le placement aleatoire se fait dans la commande 1 est ce que je peux faire cette loi d'evolution qui agira sur les cellules vivantes et mortes sous la forme d'un sous programme ?

    Merci

  16. #36
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Salut
    Citation Envoyé par touf54 Voir le message
    Bonjour,

    Je dois insérer un sous programme qui est une loi d'evolution dans une 2eme commande mais vue que le placement aleatoire se fait dans la commande 1 est ce que je peux faire cette loi d'evolution qui agira sur les cellules vivantes et mortes sous la forme d'un sous programme ?

    Merci
    Il suffit de faire des essais
    Si le nombre de ligne (Lig) et le nombre de colonne (Col) n’évoluent plus, l’idée, maintenant que le damier et les cellules sont construit, tu peux lire les infos de chaque cellules de tes tableaux, tab_celule(ligX, colX) et tab_vide(ligX, colX) mais aussi l’état de chaque Shape1(idx), pour les modifier.
    dans une double boucle,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For T = 0 To lig - 1
     For U = 0 To col - 1
      idx = (T * col) + U
      If tab_celule(T, U) = "Vivant" then
       'la faire ce que tu veux, exemple
       Shape1(idx).FillStyle = 7 : Shape1(idx).FilColor = &H00FF0000&
       Else
       'la faire autre chose, peut être ?
      End If
     Next U
    Next T
    Ou/et, tu peux atteindre une Shape1, un de tes deux tableaux par tirage au sort.
    Et là sera ton jeux.
    A+, suivant les difficultés rencontrées, mais la phylosophie de ton jeux t'appartient, il me semble que tu as maintenant les clefs nécessaire pour nous faire voire, dans quelque temps un code bien sympa.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  17. #37
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    merci,

    Mais dans mon sous programme, j'ai encore une erreur: "indice en dehors de la plage". Je ne crois pas que cela vienne d'un redimensionnement d'un tableau!


    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
     
    Private Sub loi1()
    Dim U As Integer
    Dim T As Integer
    Dim compt As Integer
    ReDim tab_celule(T, U)
     
     
    For T = 0 To lig - 1
     For U = 0 To col - 1
      idx = (T * col) + U
       compt = 0
     
      If tab_celule(T, U) = "Vivant" And tab_celule(T - 1, U) = "Vivant" Then 'indice en dehors de la plage pour la ligne juste au dessus'
     
          compt = compt + 1
       Else
        If tab_celule(T, U) = "Vivant" And tab_celule(T + 1, U) = "Vivant" Then
           compt = compt + 1
        Else
           If tab_celule(T, U) = "Vivant" And tab_celule(T, U - 1) = "Vivant" Then
              compt = compt + 1
           Else
                If tab_celule(T, U) = "Vivant" And tab_celule(T, U + 1) = "Vivant" Then
                    compt = compt + 1
                End If
           End If
        End If
      End If
     
    If compt = 2 Then
       Shape1(idx).FillStyle = 7: Shape1(idx).FillColor = vbBlack
    Else
       If compt = 0 Then
          Shape1(idx).FillStyle = 7: Shape1(idx).FillColor = vbRed
        End If
    End If
     
     
     
     
      If tab_celule(T, U) = "Mort" And tab_celule(T - 1, U) = "Vivant" Then
         compt = compt + 1
      Else
        If tab_celule(T, U) = "Mort" And tab_celule(T + 1, U) = "Vivant" Then
           compt = compt + 1
        Else
           If tab_celule(T, U) = "Mort" And tab_celule(T, U - 1) = "Vivant" Then
              compt = compt + 1
           Else
                If tab_celule(T, U) = "Mort" And tab_celule(T, U + 1) = "Vivant" Then
                    compt = compt + 1
                End If
           End If
        End If
      End If
     
    If compt = 3 Then
       Shape1(idx).FillStyle = 7: Shape1(idx).FillColor = vbBlack
    End If
     
     
     Next U
    Next T
    End Sub
    Le but de ce code est:

    une cellule en vie meurt si elle a plus de 3 voisins mort.
    une cellule en vie survit si elle a exactement 2 voisins en vie.
    une cellule morte naît si elle a exactement 3 voisins en vie.

    Merci de m'aider malgré tout ce que tu m'as apporter déjà.

  18. #38
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par touf54 Voir le message
    ...
    Mais dans mon sous programme, j'ai encore une erreur: "indice en dehors de la plage". Je ne crois pas que cela vienne d'un redimensionnement d'un tableau!
    ....
    vérifie la valeur des index que tu utilise sur la ligne en défaut ( nous on sait pas laquelle c'est ..) .. sûrement une erreur de calcul qui te "fait sortir" des limites de ton tableau .

  19. #39
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim U As Integer
    Dim T As Integer
    Dim compt As Integer
     
    ReDim tab_celule(T, U)
    non car T et U, tu viens de les déclarer (met ces variables dans le module de la feuille, en dessous de Option explicit), donc elles sont Null
    ReDim tab_celule(T, U), si tu redimenssionnes ton tableau, surtout avec des indices null, tu détruis toutes les infos du tableau.
    Inutil de redimensionner ton tableau tant que tu ne rajoutes ou ne supprimes des lignes ou des colonnes.

    Attention aussi dans Tes If ... Then , tu emplois un indice T- 1 ou U - 1, et si T ou U = 0, forcement tu declanche une erreur, donc il te faux tester la valeur de T et U si au moins egal à 1
    If t >= 1 then
    ....je peux tester avec
    If tab_celule(T, U) = "Vivant" And tab_celule(T - 1, U) = "Vivant" Then
    .....
    End If
    End If
    Penses aussi a actualiser les infos de tes 2 tableaux, suivant le resulta de tes If ... then, là tu ne fais que visualiser actualiser l'affichage.
    si un IF ... Then fait passer de vivant a mort, tab_celule(T, U) = "Mort" (ou inversement).
    Que devient le tab_vide(T, U) = True? ce tableau est-il utile ?, si non, autant ne pas le créer, pour gagné de la mémoire et de la rapidité.

    En ne redimensionnant pas le tableau et en surveillant la valeur inegal à zero de T et/ou U ta procedure commence a fonctionner.
    A+
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  20. #40
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    Merci la procedure marche.
    En revanche quand j'appuie sur la commande "go" le damier s'initialise avec les couleurs, et lorsque j'appuie sur la commande "loi1" ma loi s'effectue.
    Mais J'aimerais savoir comment continuer la loi sans devoir réinitialiser le damier.
    Pour voir plusieurs generations de cellules à la suite suivant cette loi.
    Car je ne peux pas mettre de boucle car c'est l'utilisateur qui controle l'incrémentation.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. probleme avec un tableau
    Par makechaos dans le forum Langage
    Réponses: 5
    Dernier message: 14/05/2009, 15h01
  2. Probleme avec un tableau string
    Par DiamonDonald dans le forum VB.NET
    Réponses: 10
    Dernier message: 03/04/2008, 16h39
  3. probleme avec un tableau de list
    Par jtlb++ dans le forum C++
    Réponses: 4
    Dernier message: 16/07/2006, 09h17
  4. Probleme avec un tableau
    Par Seth77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/02/2006, 11h43
  5. Probleme avec un tableau
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 09/12/2005, 01h03

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