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
salut
Si... tu veux appeler une fonction connue, essaie plutôt
d'ailleurs, dès que tu saisis le . après Application, tu as une liste de possibilités.Code:[AA3] = Application.CountIf(Range("B8:X8"), "<>")
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.
Bonjour,
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.
Merci
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
Sub calvus()
' ligne pour créer des données de test
Range("A1:A5") = Application.Transpose(Array("A", vbNullString, "B", vbNullString, "C"))
Range("B1").FormulaR1C1 = "=COUNTIF(RC[-1]:R[4]C[-1],""<>"")"
MsgBox "Une possibilité:" _
& "Application.CountIf(Range(""A1:A5""), ""<>"") donne: " & Application.CountIf(Range("A1:A5"), "<>")
MsgBox "Une autre:" _
& "Application.WorksheetFunction.CountA(Range(""A1:A5"")) donne: " & Application.WorksheetFunction.CountA(Range("A1:A5"))
MsgBox "Une dernière:" _
& "Application.CountA(Range(""A1:A5"")) donne: " & Application.CountA(Range("A1:A5"))
End Sub
[J10] = Application.CountIf(Range("b8:x8"), "Interior.Color = 2770250")
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
Attention à tes adresses de Range
Un de tes exemples modifiés (avec avant cellules A10 et C10 mis en rouge )
Attention aussi à la syntaxe
Sub Appliquer_Dapres_Couleur()
Dim c As Range
For Each c In Range("b8:x8")
If c.Interior.Color = 2770250 Then
[Z32] = [X32] + 50
End If
Next c
End Sub
Un de tes exemples modifiés (avec avant cellules A10 et C10 mis en rouge )
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
Sub testdecouleur()
Dim c As Range
[AA3] = 0
For Each c In Range("A10:H10")
[AA3] = [AA3] - (c.Interior.ColorIndex = 3)
Next
End Sub
L'avarie se situe quel niveau, Capitaine?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
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 !On ne peut pas tester CountIf en fonction d'une couleur, ça ne fonctionne pas
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'iifre
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 )
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
Je n'avais donc rien à répondre.On ne peut pas tester CountIf en fonction d'une couleur, ça ne fonctionne pas