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. #41
    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 177
    Points
    17 177
    Par défaut
    En revanche quand j'appuie sur la commande "go" le damier s'initialise avec les couleurs
    Tout dépend de ce que tu as dans la procedure CommandGo_Click, CommandGo doit faire quoi ?
    Mais J'aimerais savoir comment continuer la loi .... car c'est l'utilisateur qui controle l'incrémentation
    Un CommandButton "continuer la loi pour une nouvelles generation", qui va vers ta procedure qui fait ce boulot (Merci la procedure marche ? ):
    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.
    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 ← ← 👈

  2. #42
    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,

    J'ai appelé ma procédure dans un commandebutton et elle ne fonctionne qu'une fois, c'est à dire que quand je rappuie dessus rien ne s'effectue.
    Voici le 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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    Private Sub Command2_Click()
     
    Call loi1
     
    End Sub
     
     
    Private Sub loi1()
     
    Dim compt As Integer
     
     
     
    For T = 1 To lig - 2
     For U = 1 To col - 2
      idx = (T * col) + U
       compt = 0
    If T >= 1 And U >= 1 Then
      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 + 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
    End If
     
    If compt = 2 Then
       tab_vide(T, U) = True
       tab_celule(T, U) = "Vivant"
       Shape1(idx).FillStyle = 0: Shape1(idx).FillColor = vbBlack
     
    Else
       If compt = 0 Then
           tab_vide(T, U) = False
          tab_celule(T, U) = "Mort"
          Shape1(idx).FillStyle = 0: Shape1(idx).FillColor = vbRed
        End If
    End If
     
     
     
    If T >= 1 And U >= 1 Then
      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
    End If
    If compt = 3 Then
       tab_vide(T, U) = True
       tab_celule(T, U) = "Vivant"
       Shape1(idx).FillStyle = 0: Shape1(idx).FillColor = vbBlack
    End If
     
     
     Next U
    Next T
     
    End Sub
    Cela peut il venir s'il y a des contradictions dans ma loi d'évolution ?

  3. #43
    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 177
    Points
    17 177
    Par défaut
    Salut, sa bosse dur

    J'ai changé le design de ta procedure, ayant l'habitude d'ecrire en rangent de la façon suivante (pas forcément la meilleure, mais trop l'habitude de voir comme sa mes projets), car je ne parvenai pas à comprendre la chronologie.
    J'ai donc supprimer des redondances, simplifié, pour eclaicire.
    Rappel de ta loi:
    une cellule en vie meurt si elle a plus de 3 voisins mort.(Pas trouvé la condition dans ta procedure)
    une cellule en vie survit si elle a exactement 2 voisins en vie.(BON)
    une cellule morte naît si elle a exactement 3 voisins en vie.(BON)
    Ton code eclairci, mais egal au tien
    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
    Private Sub Command2_Click()
    Dim compt As Integer
     
    For T = 1 To lig - 2
     For U = 1 To col - 2
      idx = (T * col) + U: compt = 0
     
      If T >= 1 And U >= 1 Then
       If tab_celule(T, U) = "Vivant" Then
        'dans cette condition, Compt peut atteindre 4,
        'mais n'est pas traité plus loin ?
        'If >>tab_celule(T, U) = "Vivant"<< And tab_celule(T + 1, U) = "Vivant" Then '>>redodance<< pour les 4 conditions suivantes
        If tab_celule(T - 1, U) = "Vivant" Then compt = compt + 1
        If tab_celule(T + 1, U) = "Vivant" Then compt = compt + 1
        If tab_celule(T, U - 1) = "Vivant" Then compt = compt + 1
        If tab_celule(T, U + 1) = "Vivant" Then compt = compt + 1
       End If
      End If
     
      If compt = 2 Then
       'une cellule en vie survit si elle a exactement 2 voisins en vie.
       tab_vide(T, U) = True
       tab_celule(T, U) = "Vivant"
       '**** inutile si dans dans aucune autre procedure cette propriété ne serat changée
       'Shape1(idx).FillStyle = 0
       Shape1(idx).FillColor = vbBlack
       Else
       If compt = 0 Then
        'ne correspond pas à ta loi ???
        tab_vide(T, U) = False
        tab_celule(T, U) = "Mort"
        '**** inutile si dans dans aucune autre procedure cette propriété ne serat changée
        'Shape1(idx).FillStyle = 0
        Shape1(idx).FillColor = vbRed
       End If
      End If
     
      If T >= 1 And U >= 1 Then
       If tab_celule(T, U) = "Mort" Then
        'dans cette condition, Compt peut atteindre 4,
        'mais n'est pas traité plus loin ?
        'If >>tab_celule(T, U) = "Mort"<< And tab_celule(T + 1, U) = "Vivant" Then'>>redodance<< pour les 4 conditions suivantes
        If tab_celule(T - 1, U) = "Vivant" Then compt = compt + 1
        If tab_celule(T + 1, U) = "Vivant" Then compt = compt + 1
        If tab_celule(T, U - 1) = "Vivant" Then compt = compt + 1
        If tab_celule(T, U + 1) = "Vivant" Then compt = compt + 1
       End If
      End If
     
      If compt = 3 Then
       'BON une cellule morte naît si elle a exactement 3 voisins en vie.
       tab_vide(T, U) = True
       tab_celule(T, U) = "Vivant"
       '**** inutile si dans dans aucune autre procedure cette propriété ne serat changée
       'Shape1(idx).FillStyle = 0
       Shape1(idx).FillColor = vbBlack
      End If
     
      Next U
    Next T
     
    End Sub
    Apres plusieurs essais, plus on augmente le nombre de colonne et/ou de ligne, plus ta procedure peut être joué plusieurs fois de suite, suivant le tirage aléatoire bien sur.
    Pour 10 lignes par 10 colonnes, ta procedure ne ma permis de clicker qu'une seule fois, pour 45 lignes par 55 colonnes, ta procedure ma deja permis de clicker 7 fois (au plus, toujours suivant le tirage aléatoire).
    Quand la condition non remplis (une cellule en vie meurt si elle a plus de 3 voisins mort) fonctionnera, sa devrais faire

    Pour infos, pas de visite sur DVP dans les semaines a venir, en vacances dans la famille, je n'ai pas droit de prendre l'ordinateur (portable pourtant) , sa fait donc des vacances aussi pour les copains du forum VB6
    Bonne continuation
    A+ debut Janvier
    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 ← ← 👈

  4. #44
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    [hors sujet] Bonnes fêtes à toi ! [/hors sujet]
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  5. #45
    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
    Peux être que tu n'es pas encore partie!

    une cellule en vie meurt si elle a plus de 3 voisins mort
    = une cellule en vie meurt si elle a aucun voisin vivant. Puisque c'est plus de 3 voisins morts, donc aucune vivantes!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    If T >= 1 And U >= 1 Then
       If tab_celule(T, U) = "Vivant" Then
        'dans cette condition, Compt peut atteindre 4,
        'mais n'est pas traité plus loin ?
        'If >>tab_celule(T, U) = "Vivant"<< And tab_celule(T + 1, U) = "Vivant" Then '>>redodance<< pour les 4 conditions suivantes
        If tab_celule(T - 1, U) = "Vivant" Then compt = compt + 1
        If tab_celule(T + 1, U) = "Vivant" Then compt = compt + 1
        If tab_celule(T, U - 1) = "Vivant" Then compt = compt + 1
        If tab_celule(T, U + 1) = "Vivant" Then compt = compt + 1
       End If
      End If
    Peux-tu me dire pourquoi tu ne fermes que 2 doubles et que le programme fonctionne? , car d'habitude VB6 exige de fermer toutes les boucles.
    Merci
    Bonne vacance et bonne fête

  6. #46
    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 177
    Points
    17 177
    Par défaut
    Et bien non, je ne par que demain matin de bonne heure, il va falloir me supporter encor aujourd’hui.
    J’ai approfondit ta loi
    1 cellule en vie meurt si elle a plus de 3 voisins morts
    1 cellule en vie survit si elle a exactement 2 voisins en vie
    1 cellule morte naît si elle a exactement 3 voisins en vie

    Analyse perso
    1 cellule en vie meurt si elle a plus de 3 voisins morts,
    formulé autrement,
    1 cellule en vie meurt si elle a 0 voisins vivants.
    encor autrement
    1 cellule en vie meurt si elle a 4 voisins morts.

    1 cellule morte naît si elle a exactement 3 voisins en vie.

    Résumé,
    1 cellule en vie reste en vie que si elle a exactement 2 voisins vivants
    1 cellule en vie meurt si elle a 0 voisins vivants
    1 cellule morte naît si elle a exactement 3 voisins vivants

    Il faudrait que des copains forumeurs vérifient si je ne me suis pas mélangé les pinceaux.


    For T = 1 To lig - 2 et For U = 1 To col – 2 proposé hier est faut, il ne prenait pas en compte la première ligne (0) ni la dernière (Lig-1), idem pour les colonnes
    Première ligne = 0, dernière ligne = nombre de ligne – 1
    Première colonne = 0, dernière colonne = nombre de colonne – 1
    Donc il faut écrire, For T = 0 To lig – 1 et For U = 0 To col – 1
    Par contre il faut traiter les appels
    T-1, T+1 et U-1, U+1
    On ne peut le faire dans le même If … Then
    Cas de T-1 :
    If T >= 1 And tab_celule(T - 1, U) = "Vivant" Then … crée une erreur car VB va évaluer la totalité de l’expression If … Then, d’où l’évaluation de T, puis si l’évaluation = True, là on peut évaluer If T-1 …..
    La solution d’évaluation doit s’écrire :
    If T >= 1 Then
    If tab_celule(T - 1, U) = "Vivant" Then compt = compt + 1
    End If
    Adapter la même logique pour U-1.

    Cas de T+1 :
    If tab_celule(T + 1, U) = "Vivant" Then … crée une erreur car VB …
    La solution d’évaluation doit s’écrire :
    If T < lig - 2 Then
    If tab_celule(T + 1, U) = "Vivant" Then compt = compt + 1
    End If
    Adapter la même logique pour U+1.
    Ce qui donne comme 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
    For T = 0 To lig - 1
     For U = 0 To col - 1
      idx = (T * col) + U: compt = 0
     
      If tab_celule(T, U) = "Vivant" Then
       If T >= 1 Then 'cellule imediatement au dessus
        If tab_celule(T - 1, U) = "Vivant" Then compt = compt + 1
       End If
       If U >= 1 Then 'cellule imediatement à gauche
        If tab_celule(T, U - 1) = "Vivant" Then compt = compt + 1
       End If
       If T < lig - 2 Then 'cellule imediatement au dessous
        If tab_celule(T + 1, U) = "Vivant" Then compt = compt + 1
       End If
       If U < col - 2 Then 'cellule imediatement à droite
        If tab_celule(T, U + 1) = "Vivant" Then compt = compt + 1
       End If
       'analyse
       If compt = 0 Then '4 non vivants
        '1 cellule en vie meurt si elle a plus de 3 voisins morts
        tab_vide(T, U) = False: tab_celule(T, U) = "Mort": Shape1(idx).FillColor = vbRed
       End If
       If compt <> 2 Then '1,3,4 vivants
        '1 cellule en vie survit si elle a exactement 2 voisins en vie
        tab_vide(T, U) = False: tab_celule(T, U) = "Mort": Shape1(idx).FillColor = vbRed
       End If
      End If
     
      If tab_celule(T, U) = "Mort" Then
       If T >= 1 Then 'cellule imediatement au dessus
        If tab_celule(T - 1, U) = "Vivant" Then compt = compt + 1
       End If
       If U >= 1 Then 'cellule imediatement à gauche
        If tab_celule(T, U - 1) = "Vivant" Then compt = compt + 1
       End If
       If T < lig - 2 Then 'cellule imediatement au dessous
        If tab_celule(T + 1, U) = "Vivant" Then compt = compt + 1
       End If
       If U < col - 2 Then 'cellule imediatement à droite
        If tab_celule(T, U + 1) = "Vivant" Then compt = compt + 1
       End If
       'analyse
       If compt = 3 Then
        '1 cellule morte naît si elle a exactement 3 voisins en vie.
        tab_vide(T, U) = True: tab_celule(T, U) = "Vivant": Shape1(idx).FillColor = vbBlack
       End If
      End If
     
     Next U
    Next T
    J'allais oublier,
    Peux-tu me dire pourquoi tu ne fermes que 2 doubles et que le programme fonctionne
    Pas bien compris mais je pense que tu veux parler des If ... Then sans End If
    Si If ... Then Faire ceci Else Faire cela est sur la même ligne, le End If n'est pas obligatoire.
    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. #47
    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

    Maintenant j'aimerais compter mon nombre de cellules vivante et morte après ma loi d'évolution. C'est à dire savoir le nombre de cellules vivante et morte a chaque fois que j' appui sur la commande qui exécute ma loi.


    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
     
    Private Sub premiereloi()
    Dim compt As Integer
    Dim compteur As Integer
    Dim i As Integer
    Dim j As Integer
     
     
    For T = 0 To lig - 1
     For U = 0 To col - 1
      idx = (T * col) + U: compt = 0
     
      If tab_celule(T, U) = "Vivant" Then
       If T >= 1 Then 'cellule imediatement au dessus
        If tab_celule(T - 1, U) = "Vivant" Then compt = compt + 1
       End If
       If U >= 1 Then 'cellule imediatement à gauche
        If tab_celule(T, U - 1) = "Vivant" Then compt = compt + 1
       End If
       If T < lig - 2 Then 'cellule imediatement au dessous
        If tab_celule(T + 1, U) = "Vivant" Then compt = compt + 1
       End If
       If U < col - 2 Then 'cellule imediatement à droite
        If tab_celule(T, U + 1) = "Vivant" Then compt = compt + 1
       End If
       'analyse
       If compt = 0 Then '4 non vivants
        '1 cellule en vie meurt si elle a plus de 3 voisins morts
        tab_vide(T, U) = False: tab_celule(T, U) = "Mort": Shape1(idx).FillColor = vbRed
       End If
       If compt <> 2 Then '1,3,4 vivants
        '1 cellule en vie survit si elle a exactement 2 voisins en vie
        tab_vide(T, U) = False: tab_celule(T, U) = "Mort": Shape1(idx).FillColor = vbRed
     
       End If
      End If
     
      If tab_celule(T, U) = "Mort" Then
       If T >= 1 Then 'cellule imediatement au dessus
        If tab_celule(T - 1, U) = "Vivant" Then compt = compt + 1
       End If
       If U >= 1 Then 'cellule imediatement à gauche
        If tab_celule(T, U - 1) = "Vivant" Then compt = compt + 1
       End If
       If T < lig - 2 Then 'cellule imediatement au dessous
        If tab_celule(T + 1, U) = "Vivant" Then compt = compt + 1
       End If
       If U < col - 2 Then 'cellule imediatement à droite
        If tab_celule(T, U + 1) = "Vivant" Then compt = compt + 1
       End If
       'analyse
       If compt = 3 Then
        '1 cellule morte naît si elle a exactement 3 voisins en vie.
        tab_vide(T, U) = True: tab_celule(T, U) = "Vivant": Shape1(idx).FillColor = vbBlack
       End If
      End If
     
     Next U
    Next T
    'J'ai rajouter ce bout de code pour pouvoir compter mon nombre de 
    'cellule vivante et morte mai sa ne marche pas 
    For T = 0 To lig - 1
     For U = 0 To col - 1
    compteur = 0
      If tab_vide(T, U) = True And tab_celule(T, U) = "Vivant" And Shape1(idx).FillColor = vbBlack Then
      compteur = compteur + 1
       End If
     Next j
    Next i
    Text6.Text = compteur
    Text7.Text = nb_max - compteur
     
    End Sub
    Apres le code de ma loi J'ai rajouter un bout de code que j'ai indiquer qui reparcours le tableau et qui compte mon nombre de cellule vivante. Puis j'inscrit ce nombre dans un textbox et dans un autre le nombre de cellules morte. Mais sa ne fonctionne pas!
    Pouvez-vous m'aider svp, surtout que ProgElecT est en vacance et c'était le seul a me donner un coup de main sur mon code

  8. #48
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Ha ben si y'a que ProgElect (Bonne année au passage ! qui t'a aidé, on va le laisser faire alors.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  9. #49
    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
    C'était pas méchant OhMonBato! lol , vous m'avez mal interpretez , je suis désolé

    C'est juste que s'il ne m'aurait pas aider, mon programme serait au meme point. C'est bien de s'entraider entre nous car moi je ne suis que débutant.
    Mais si t'a une idée pour m'aider je suis prenant, car j'avoue que là je suis largué je ne vois pas comment faire, merci de votre aide!

  10. #50
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Pas de soucis, c'était sur le ton de la blague aussi

    Dans ta boucle de comptage, je vois comme première erreur "next i et next j" au lieu de next T et next u"
    Sans avoir regardé plus loin, il faudrait déjà corriger ça.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  11. #51
    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 177
    Points
    17 177
    Par défaut
    Salut
    Citation Envoyé par touf54
    surtout que ProgElecT est en vacance et c'était le seul a me donner un coup de main sur mon code
    Intervenants dans l'ordre d'apparition, OhMonBato (le premier), ucfoutu, sovo et bbil

    Si tu met ton compteur = 0 a chaque passage dans ta boucle interne, sa risque pas de marcher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    compteur = 0
    For T = 0 To lig - 1
     For U = 0 To col - 1
      If tab_celule(T, U) = "Vivant" Then compteur = compteur + 1
     Next U
    Next T
    Text4.Text = compteur
    De plus, ton code, essais le avant de poser ton probléme, d'une par les references de tes Next ne corresponde pas à tes Fors
    For T = 0 To lig - 1
    For U = 0 To col - 1
    compteur = 0
    If tab_vide(T, U) = True And tab_celule(T, U) = "Vivant" And Shape1(idx).FillColor = vbBlack Then
    compteur = compteur + 1
    End If
    Next j
    Next i
    Ce qui me laisse pensé que tu pose ton code, (c'est deja quelque chose), mais que tu ne l'a pas fait tourner.
    En mettant un point d'arret sur la ligne compteur = compteur + 1, tu aurais peu voir l'evolution de compteur
    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 ← ← 👈

  12. #52
    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
    Excuse moi j'ai fait plusieurs essait et j'ai oublié de rechanger les next i et next j.
    et désolé mais comme j'utilise VB en anglais, je ne connais pas toutes les fonctionnalités, c'est pourquoi je ne mets pas de point d'arret sur la ligne compteur = compteur + 1,
    quoi qu'il en soit même avec les modifications cela ne fonctionne pas, je ne vois pas les erreurs,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    compteur = 0
    For T = 0 To lig - 1
     For U = 0 To col - 1
     
      If tab_celule(T, U) = "Vivant" Then   compteur = compteur + 1
       End If
     Next U
    Next T
    Text6.Text = compteur
    Text7.Text = nb_max - compteur
    que faire !!!!

  13. #53
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    tu peux ajouter ça stp dans ton code et nous dire un peu ce qui s'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    compteur = 0
    debug.print "Col = " & col & " lig = " & lig
    For T = 0 To lig - 1
     For U = 0 To col - 1
     
      If tab_celule(T, U) = "Vivant" Then
       compteur = compteur + 1
       End If
     debug.print tab_cellule(T,U) & " compteur = " & compteur
     Next U
    Next T
    Text6.Text = compteur
    Text7.Text = nb_max - compteur
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  14. #54
    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 177
    Points
    17 177
    Par défaut

    If tab_celule(T, U) = "Vivant" Then compteur = compteur + 1
    supprimer le --> End If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     For U = 0 To col - 1
      If tab_celule(T, U) = "Vivant" Then compteur = compteur + 1
     Next U
    J'ai volue faire une simplification de lecture directement dans l'editeur de reponse de DVP, et j'ai oublié d'enlever le End If
    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 ← ← 👈

  15. #55
    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
    En rajoutant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    compteur = 0
    debug.print "Col = " & col & " lig = " & lig
    For T = 0 To lig - 1
     For U = 0 To col - 1
     
      If tab_celule(T, U) = "Vivant" Then
       compteur = compteur + 1
       End If
     debug.print tab_cellule(T,U) & " compteur = " & compteur
     Next U
    Next T
    Text6.Text = compteur
    Text7.Text = nb_max - compteur
    Il ne se passe toujours rien. Mes textbox n'affiche rien.
    C'est vraiment bizarre car mon programme n'affiche pas d'erreur.

  16. #56
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Heu...... le debug.print sert à voir la valeur de tes variables dans la fenête d'exécution, c'est ça que j'aimerais connaitre.
    A priori il faudrait que tu te renseignes un peu sur les méthodes de débugage de VB (points d'arret, espions, debug.print), ce n'est pas pratique, c'est indispensable !
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  17. #57
    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
    je viens de recommencer et mon ordinateur ne m'indique rien du tout pour aucune variable.

  18. #58
    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
    Je crois que les debugages ne fonctionnent pas sur le vb6 de chez moi, donc vous n’allez pas pouvoir m'aider. Je suis désolé

  19. #59
    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
    Je crois que les debugages ne fonctionnent pas sur le vb6 de chez moi, donc vous n’allez pas pouvoir m'aider. Je suis désolé
    utilise les touches CTRL+G pour afficher la fenêtre exécution ...

    rajoute une instruction stop après le debug.print si tu trouve que cela va trop vite ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ....
       End If
     debug.print tab_cellule(T,U) & " compteur = " & compteur
     stop ' Suffit ensuite d'appuyer sur F5 pour continuer... 
    ....
    voir :
    Le débogage
    Maîtrisez le débogage de vos requêtes par Cafeine (c'est du VBA .. mais beaucoup de chose s'appliquent en VB6)



    Plus j'y pense plus je me dis qu'il va falloir trouver un volontaire pour nous faire un tutoriel sur le BABA du débogage...

  20. #60
    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 177
    Points
    17 177
    Par défaut
    Bon, je te remet le code qui fonctionne chez moi, car je ne parvient pas a trouver ou ton code ne fonctionne pas
    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
    Private Sub Command2_Click()
    '1 cellule en vie reste en vie que si elle a exactement 2 voisins vivants
    '1 cellule en vie meurt si elle a 0 voisins vivants
    '1 cellule morte naît si elle a exactement 3 voisins vivants
     
    For T = 0 To lig - 1
     For U = 0 To col - 1
      idx = (T * col) + U: compt = 0
     
      If tab_celule(T, U) = "Vivant" Then
       ComptCelluleS
       'analyse suivant la loi
       If compt = 0 Then '4 non vivants
        '1 cellule en vie meurt si elle a plus de 3 voisins morts
        tab_vide(T, U) = False: tab_celule(T, U) = "Mort": Shape1(idx).FillColor = vbBlack
       End If
       If compt <> 2 Then '1,3,4 vivants
        '1 cellule en vie survit si elle a exactement 2 voisins en vie
        tab_vide(T, U) = False: tab_celule(T, U) = "Mort": Shape1(idx).FillColor = vbBlack
       End If
      End If
     
      If tab_celule(T, U) = "Mort" Then
       ComptCelluleS
       'analyse suivant la loi
       If compt = 3 Then
        '1 cellule morte naît si elle a exactement 3 voisins en vie.
        tab_vide(T, U) = True: tab_celule(T, U) = "Vivant": Shape1(idx).FillColor = vbGreen
       End If
      End If
     
     Next U
    Next T
     
    compteur = 0
    For T = 0 To lig - 1
     For U = 0 To col - 1
      If tab_celule(T, U) = "Vivant" Then compteur = compteur + 1
     Next U
    Next T
    Text4.Text = CStr(compteur) & "/" & CStr(nb_max)
     
    End Sub
     
    Public Sub ComptCelluleS()
    If T >= 1 Then 'cellule imediatement au dessus
     If tab_celule(T - 1, U) = "Vivant" Then compt = compt + 1
    End If
    If U >= 1 Then 'cellule imediatement à gauche
     If tab_celule(T, U - 1) = "Vivant" Then compt = compt + 1
    End If
    If T < lig - 2 Then 'cellule imediatement au dessous
     If tab_celule(T + 1, U) = "Vivant" Then compt = compt + 1
    End If
    If U < col - 2 Then 'cellule imediatement à droite
     If tab_celule(T, U + 1) = "Vivant" Then compt = compt + 1
    End If
    'les cellules voisines en diagonale
    If T >= 1 And U < col - 2 Then 'cellule imediatement au dessus à droite
     If tab_celule(T - 1, U + 1) = "Vivant" Then compt = compt + 1
    End If
    If T >= 1 And U > 1 Then 'cellule imediatement au dessus à gauche
     If tab_celule(T - 1, U - 1) = "Vivant" Then compt = compt + 1
    End If
    If T < lig - 2 And U < col - 2 Then 'cellule imediatement au dessous à droite
     If tab_celule(T + 1, U + 1) = "Vivant" Then compt = compt + 1
    End If
    If T < lig - 2 And U > 1 Then  'cellule imediatement au dessous à gauche
     If tab_celule(T + 1, U - 1) = "Vivant" Then compt = compt + 1
    End If
    End Sub
    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 ← ← 👈

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 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