[vba et excel] Compter avec condition

Fermé
Utilisateur anonyme - 6 mai 2010 à 11:39
 Utilisateur anonyme - 6 mai 2010 à 15:37
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

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 6/05/2010 à 14:33
: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
ratikuss Messages postés 2004 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 14 décembre 2016 262
Modifié par ratikuss le 6/05/2010 à 11:43
Ton End if est mis en commentaire et il faut mettre Next i
0
Utilisateur anonyme
6 mai 2010 à 12:02
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
0
ratikuss Messages postés 2004 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 14 décembre 2016 262
6 mai 2010 à 12:14
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.
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
6 mai 2010 à 12:17
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)
0
Utilisateur anonyme
6 mai 2010 à 12:17
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
0
Utilisateur anonyme
6 mai 2010 à 13:01
Ton code Polux31 ne permet pas ce que je veux ou je ne le comprend pas :s
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 mai 2010 à 13:04
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.
0
Utilisateur anonyme
6 mai 2010 à 13:05
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
0
ratikuss Messages postés 2004 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 14 décembre 2016 262
6 mai 2010 à 13:27
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 ?
0
Utilisateur anonyme
6 mai 2010 à 13:35
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
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 mai 2010 à 13:44
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)
0
Utilisateur anonyme
6 mai 2010 à 13:53
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
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 mai 2010 à 14:04
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 ...

0
Utilisateur anonyme
6 mai 2010 à 14:23
Non lol

Une valeur en O que je recherche dans la colonne C
0
Utilisateur anonyme
6 mai 2010 à 14:36
Type incompatible sur cette ligne

If ws.Range("O" & i).Value = Cel.Value Then
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 mai 2010 à 14:49
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 ?
0
Utilisateur anonyme
6 mai 2010 à 14:51
Non, aucune fusion de cellule :s
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 mai 2010 à 14:58
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(
0
Utilisateur anonyme
6 mai 2010 à 15:00
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. :(
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 mai 2010 à 15:11
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 ...
0