[vba et excel] Compter avec condition

Bonjour,

Je cherche en vba a compter avec condition. J'ai essayé ceci :

Sub CommandButton7_Click()
Sheets("final_par_NNO").Select
Range("O130").Select
ligne = "140"
For i = 125 To ligne
suivante = i + 1
If (CountIf("C2:C1037", "O" & suivante) > 0) Then
'Cells(i, 1).Interior.ColorIndex = 6
'Cells(suivante, 1).Interior.ColorIndex = 6
'End If
Next
End Sub

Mais ca ne fonction pas, auriez vous une idée ?

Erreur de compilation
Sub ou function non défini

Merci

14 réponses

  1. Erreur de copier coller de code source ;)

    Voici ce que j'ai mais qui fait le même résultat

    Sub CommandButton7_Click()
        Sheets("final_par_NNO").Select
        Range("O130").Select
        ligne = "140"
        For i = 125 To ligne
            suivante = i + 1
            If (CountIf("C2:C1037", "O" & suivante) > 0) Then
                'Cells(i, 1).Interior.ColorIndex = 6
                'Cells(suivante, 1).Interior.ColorIndex = 6
            End If
        Next i
    End Sub
    1. Et en déclarant tes variables ça marche ?
      dim ligne as integer
      dim suivante as integer


      Et ta boucle s'étends sur quelle plage de cellule ?
      Je n'arrive pas à voir.
      1. Bonjour,

        1) ligne = 140 et non ligne = "140"

        2) Sheets("final_par_NNO").Select et Range("O130").Select ne servent à rien.
        Il est préférable de faire
        Dim ws As Worksheet
        
        Set ws = Worksheets("final_par_NNO")

        Et ensuite :
        ws.Range("C2:C1037")
        ws.Cells(i, 1).Interior.ColorIndex = 6
        'etc ...


        3) Sur quelle ligne apparait le message d'erreur ?

        ;o)
        1. Je veux voir si dans la plage c2:c1037, il y a la valeur contenu dans O + la ligne

          Je pense que c'est countif qui posse problème, j'ai toujours le message d'erreur

          Erreur de compilation
          Sub ou function non défini

          Merci
          1. Ton code Polux31 ne permet pas ce que je veux ou je ne le comprend pas :s
            1. heuuu ... je n'ai donné aucun code ??? C'est normal que ça ne fonctionne pas ^^

              J'ai juste fait 2 remarques. Et posé une question.
          2. Oui, :D

            la réponse pour l'erreur, c'est le countif qui est surligné avec le message :
            Erreur de compilation
            Sub ou function non défini

            Merci
            1. Sub CommandButton7_Click()
              
              dim i as integer
              
                  For i = 2 To 1037
                      If  cells(3, i) = cells(15 , i) Then
                          Cells(1, i).Interior.ColorIndex = 6 
                      End If
                  Next i
              
              End Sub
              


              Est-ce ceci ce que tu souhaites ?
              1. Pas tout à fait, car il faut que ca cherche dans toute la colonne C pas forcement sur la meme ligne et c'est la que je bloque !! :s

                Merci de votre aide
                1. peut être comme ça, mais j'avoue n'avoir pas très bien compris ce que tu cherches exactement à faire.

                  Sub CommandButton7_Click()
                  Dim ws As Worksheet    'Objet feuille
                  Dim ligne As Long
                  Dim palge As Range
                  dim cel
                  Dim suivant As Long
                  Dim cpt As Long
                  
                  Set ws = Worksheets("final_par_NNO")
                  Set plage = ws.Range("C2:C1037")   
                  
                      ligne = 140
                      For i = 125 To ligne
                          suivante = i + 1
                          For each cel In plage
                               If cel.Value = "O" & suivant Then cpt = cpt + 1
                          Next cel
                               If cpt > 0 Then
                                    ws.Cells(i, 1).Interior.ColorIndex = 6
                                    ws.Cells(suivante, 1).Interior.ColorIndex = 6
                                End If
                      Next i
                  End Sub


                  Le traitement risque d'être long..

                  ;o)
              2. Je pense que ce n'est pas très loin du résultat que j'attends sauf que là, j'crois qu'on c'est pas compris lol

                If cel.Value = "O" & suivant Then cpt = cpt + 1

                Ou je ne comprend pas.

                Voici avec un exemple, ca sera peut etre plus simple
                Dans la plage c2:c1037, j'ai la valeur en c50 -> 123456789

                Maintenant, en O133, j'ai également cette valeur 123456789

                Je voudrais, grâce à la fonction qu'on est en train d'établir, faire en sorte que la cellule O133 ressorte avec un fond jaune car elle existe dans la plage c2:c1037

                Et donc, il faut que je fasse ca pour chaque ligne de la colonne O.

                Je pense que c'est plus clair ;)

                Merci
                1. Tu veux comparer 2 cellules de la même ligne, l'une en colonne C et l'autre en colonne O.

                  C'est bien ça ?

                  Parce que à la base le sujet c'est : Je cherche en vba a compter avec condition ...

                  1. :o)

                    Les valeurs se trouvent entre la ligne 125 et 140 de la colonne O.

                    Sub CommandButton7_Click() 
                    Dim ws As Worksheet    'Objet feuille 
                    Dim ligne As Long 
                    Dim plage As Range 
                    Dim Cel 
                    Dim i As Integer 
                    Dim suivante As Integer 
                    
                    Set ws = Worksheets("final_par_NNO") 
                    Set plage = ws.Range("C2:C1037")  
                    
                    ligne = 140 
                    
                    For i = 125 To ligne 
                    suivante = i + 1 
                       For Each cel In plage 
                            If ws.Range("O" & i).Value = cel.Value Then 
                                 ws.Cells(i, 1).Interior.ColorIndex = 6 
                                 ws.Cells(suivante, 1).Interior.ColorIndex = 6 
                            End If 
                       Next cel 
                    Next i 
                    
                    End Sub


                    ;o)
                    «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
                    Nicolas Boileau
                    1. Type incompatible sur cette ligne

                      If ws.Range("O" & i).Value = Cel.Value Then
                      1. J'ai testé chez en mélangeant des données numériques et alpha et je n'ai pas ce genre de message.

                        As-tu des cellules fusionnées dans une des 2 colonnes ?
                      2. Non, aucune fusion de cellule :s
                      3. tu as bien copier coller l'intégralité du code ?

                        Vérifie aussi que le nom de la feuille correspond bien avec le code.

                        Sinon, je ne vois pas trop ... :o(
                      4. Oui, tout collé ce que tu m'as donné. Je viens de le refaire pour voir, toujours la même erreur sur la même ligne de code. :(
                      5. On va tenter quelque chose:

                        Remplace cette ligne If ws.Range("O" & i).Value = cel.Value Then par

                        If CStr(ws.Range("O" & i).Value) = CStr(cel.Value) Then

                        Sans trop de conviction ...