Compter des cellules VBA

Fermé
Utilisateur anonyme - 1 avril 2010 à 12:45
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 2 avril 2010 à 14:43
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

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
1 avril 2010 à 12:51
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
Utilisateur anonyme
1 avril 2010 à 13:32
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
1 avril 2010 à 18:07
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
Utilisateur anonyme
2 avril 2010 à 10:35
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 2/04/2010 à 11:25
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
Utilisateur anonyme
2 avril 2010 à 11:45
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
2 avril 2010 à 12:53
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
Utilisateur anonyme
2 avril 2010 à 14:30
Un tableau, de mémoire, tu te souviens comment tu gérais la chose ?
Merci
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
2 avril 2010 à 14:43
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