Compter des cellules VBA

Utilisateur anonyme -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour,

En VBA, je cherche à compter les valeurs des cellules de I14 à L14 où la cellule = R
J'ai essayé COUNTIF mais ca bug tout le temps, je dois pas savoir m'en servir.

Qq'un pourrait m'aider ?

Merci

7 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Dim plage As Range
    Dim cel 
    Dim cpt As Integer
    
       Set plage = Worksheets(1).Range("I14:L14")
       For Each cel In plage
          If cel.Value = "R" Then cpt = cpt + 1
       Next cel
    
       MsgBox "Nb : " & cpt
    
       Set plage = Nothing   
    


    ;o)
    1
  2. Utilisateur anonyme
     
    Super merci

    A tout hasard, sur une plage de 7 colonnes, c'est pas possible de savoir si 4 "R" se trouve à la suite ?
    0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Oui ça doit être possible, il suffit de faire la vérification dans la boucle :

    Dim plage As Range
    Dim cel 
    Dim cpt As Integer
    Dim NbR As Integer
    Dim Vrai As Boolean
    
       Set plage = Worksheets(1).Range("I14:P14")
       For Each cel In plage
          If cel.Value = "R" Then 
              cpt = cpt + 1
              NbR = NbR + 1
              If NbR = 4 Then Vrai = True
          End If
          NbR = 0
       Next cel
    
       If Vrai = False Then
           MsgBox "Nb : " & cpt
       Else
           MsgBox "Nb : " & cpt & ", 4 R à la suite"
       End If
    
       Set plage = Nothing  


    ;o)
    0
  4. Utilisateur anonyme
     
    Ah non, ca va pas, c'est pas 4 de suite, mais 4 à la suite (aligné :p)
    Tu vois ce que je veux dire
    Merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Effectivement je n'avais pas testé et ça ne fonctionne pas ^^
    J'ai compris qu'il faut 4 cellules consécutives horizontalement contenant "R":

    !  I  !  J  !  K  !  L  !  M  !  N  !  O  !  P  !   
    
       R           R     R     R     R            R


    Est ce bien ça ?

    Option Explicit   
    
    Private Vrai As Boolean   
    Private NbR As Integer   
    
    Sub test()   
    Dim plage As Range   
    Dim cel   
    Dim cpt As Integer   
    
    Set plage = Worksheets(1).Range("I14:P14")   
        For Each cel In plage   
            If cel.Value = "R" Then   
                cpt = cpt + 1   
                If NbR < 4 Then cptR (1)   
            Else   
                If NbR <> 4 Then   
                    NbR = 0   
                End If   
            End If   
           
        Next cel   
    
       If Vrai = False Then   
           MsgBox "Nb : " & cpt   
       Else   
           MsgBox "Nb : " & cpt & ", 4 R à la suite"   
       End If   
    
       Set plage = Nothing   
    End Sub   
    
    Sub cptR(ByVal str As Integer)   
    
        NbR = NbR + str   
        If NbR = 4 Then Vrai = True   
           
    End Sub   
    


    «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
    Nicolas Boileau
    0
  7. Utilisateur anonyme
     
    Ah oué, pas mal tout ca dit moi ;)
    En fait, je m'amuses a essayer de faire un puissance 4 pour comprendre le codage VBA et donc me former.

    J'ai bien compris comment tu faisais. Mais il reste encore des étapes comme la vérification en colonne, qui ne devrait pas etre trop compliqué et tester également dans les 2 diagonales.

    Si tu veux m'aider que j'avance sans faire n'importe quoi, je suis tout ouie ;)

    Merci beaucoup de ton implication.
    0
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      J'en avais fait pour mes enfants ... il y a bien longtemps ^^

      Je crois que pour la vérification j'avais utilisé un tableau.

      Si je peux t'aider, je le ferais volontiers dans la mesure du possible.

      ;o)
      0
  8. Utilisateur anonyme
     
    Un tableau, de mémoire, tu te souviens comment tu gérais la chose ?
    Merci
    0
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      Chaque élément du tableau représente une case de jeu.
      Les cases était indexé de 1 à 100, le jeu faisait 10 cases par 10 cases
      Quand le joueur cliquait sur la 1ère case d'une colonne (par ex la 5), le programme testait tableau(5), tableau(15), tableau(25) jusqu'à tableau(95) ... et mettait le pion dans le dernier emplacement libre.
      Ensuite il y a des contrôles à faire par exemple en diagonal je faisais l'indice du tableau + 11 ou - 11 selon le cas pour vérifier si l'indice i + 11 était identique etc ...

      ;o)
      0