Oh mol ce que j'en dis
C'est surtout la charte du forum qui va être contente
c) A moins que deux questions soient réellement liées au même problème, il est souhaitable de faire un nouveau sujet par question. Ceci dans le but de rester dans un sujet précis tout au long d’un fil de discussion. Donc autant que possible : Une Question = Un fil de discussion
Petite remarque, j'étais resté sur le fait d'expliquer du code vba, je ne m'étais donc pas éloigné du sujet, enfin me semble t'il.
Mais c'est pas grave tout ça.
Si... tu veux appeler une fonction connue, essaie plutôt
Code:
[AA3] = Application.CountIf(Range("B8:X8"), "<>")
d'ailleurs, dès que tu saisis le . après Application, tu as une liste de possibilités.
Pour avoir les fonctions, la syntaxe complète est Application.WorksheetFunction. et, après la saisie du ., tu as une nouvelle liste de choix.
A noter que le mot WorksheetFunction peut être effacé sans danger.
Il fallait donc ajouter Application à Countif. Ok, merci. Mais l'enregistreur de macro ne le fait pas lui. :
[AA3] = "=COUNTIF(R[-22]C[-24]:R[-22]C[-2],""<>"")"
Je pige pas tout, mais c'est pas grave. Ca fonctionne en tout cas comme ça.
Sub nbvaleurs_plage()
formule = "=COUNTIF($B1:$B10,""<>"")"
Range("A1").Formula = formule 'formule insérée en A1
nbvaleurs = Application.CountIf(Range("B1:B10"), "<>") 'la même interprétée en vba
nbvaleurs = Evaluate(formule) 'idem mais à partir de la formule
End Sub
Bon, j'ai tenté de comprendre vos explications, c'est un peu moins flou. Mais je pense certainement revenir là-dessus.
En tout cas, je vois qu'il y a plusieurs méthodes pour arriver à un même résultat.
Rassurez moi juste un peu.... ça vous a quand même pris un peu de temps pour intégrer tout ça non ?
Je reviens avec un autre souci (l'idée de départ en fait).
Maintenant, grâce à vous tous, j'arrive à compter un nombre de cellules selon un critère.
J'ai naïvement pensé que je pourrais mettre le critère de mon choix ! Oh, misérable ignorant que tu es ! Tu pensais que tu pourrais t'en sortir comme ça, sans faire la fortune du pharmacien et de l'ophtalmo ?? Petitus Crétinus va !
Donc, je vous joins un fichier où
On peut récupérer le code couleur à partir d'une cellule sélectionnée.
On peut tester une macro d'après un code couleur
On peut tester la fonction CountIf, qui fonctionne
On ne peut pas tester CountIf en fonction d'une couleur, ça ne fonctionne pas
Et enfin un code où j'essaie de compter de manière différente, mais autant compter le nombre de caractères inscrits dans ce site depuis sa création !
J'ai écumé les pages du site depuis ce matin (eh oui, il pleut, même sur la côte d'azur...), et j'ai l"impression de moins comprendre qu'au début.
Mon dernier code inspiré d'une aide d'excel, dixit Staple. Ici
Merci de vos explications, et surtout, au moins une réponse simple à une question simple, pourquoi le code
Attention à tes adresses de Range
Un de tes exemples modifiés (avec avant cellules A10 et C10 mis en rouge )
Code:
Sub compte_couleur()
'[J10] = Application.CountIf(Range("b8:x8"), "Interior.Color = 2770250")
Dim i, j
For i = 1 To 8 'ATTENTION plage concernée A10:H10
If Cells(10, i).Interior.ColorIndex = 3 Then
j = j + 1
End If
Next i
[J10] = j
End Sub
Sub testdecouleur()
Dim coul As Range, c As Range, i
Set coul = Range("A10:H10")
For Each c In coul
If c.Interior.ColorIndex = 3 Then
i = i + 1
End If
Next c
[AA3] = i
End Sub
Sub Appliquer_Dapres_Couleur()
Dim c As Range, n As Byte
For Each c In Range("b8:x8")
If c.Interior.Color = 2770250 Then
n = n + 1
[Z32] = [X32] + 50 * n 'ou [Z32] = [X32]*n + 50
End If
Next
End Sub
une variante (non avariée) du code de Staple
Code:
Sub testdecouleur()
Dim c As Range
[AA3] = 0
For Each c In Range("A10:H10")
[AA3] = [AA3] - (c.Interior.ColorIndex = 3)
Next
End Sub
désolé pour le mal entendu, ce n'est pas ton code que j'estimais erroné.
Comme toi, je contrôle avant d'envoyer la sauce. Au passage, il me semble avoir lu que tu aimais les double If (IIf). Pour ma part j'essaie d'éviter même les simples (je n'aime pas les End If )
NB.SI (COUNTIF en angliche) est une fonction native d'excel qui permet de compter le nombre de valeurs dans une plage répondant à un critère de valeur, pas de format !
Si tu veux compter le nombre de cellule colorées, il faut créer une fonction personnalisée
Staple et Si t'ont mis sur la voie
Note que si la couleur est appliquée par mfc, ce sont les conditions de la mfc qu'il faudra tester, vba étant incapable de détecter la couleur dans ce cas
Je réponds à la question moi !!!!
A+
kjin
re
Comme toi, je contrôle avant d'envoyer la sauce. Au passage, il me semble avoir lu que tu aimais les double If (IIf). Pour ma part j'essaie d'éviter même les simples (je n'aime pas les End If )
Avant d'avoir lu quelque part sur XLD qu'il valait mieux éviter le IIF (je sais plus dans quel fil), c'est vrai que je kiffais l'iif
Mais comme dirait Alain D .: " Ça c'était avant" (En cherchant ailleurs j'ai retrouvé pourquoi)
PS:Moi aussi quand le fun me gagne , je m'amuse avec des choses du genre:
Code:
Sub a()
Dim i%
Range("A1:A5") = Application.Transpose([{1,0,32,0,64}])
On Error Resume Next
For i = 1 To 5
With Cells(i, "A")
.BorderAround , -4 * (.Value = 0), 13
.Font.Bold = (.Value > 0)
End With
Next i
End Sub
kjin: tu lis pas tes MP ???
En passant ceci est une affirmation, pas une question
On ne peut pas tester CountIf en fonction d'une couleur, ça ne fonctionne pas