Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

probleme repetition

judoka0209

XLDnaute Occasionnel
bonjour je voudrais savoir comment je peut faire pour que mon programme fasse la meme chose jusqu'a la cellule GW6:GW11



Private Sub Worksheet_Change(ByVal Target As Range)
If Application.WorksheetFunction.CountIf(Range("C6:C11"), "21") + Application.WorksheetFunction.CountIf(Range("C6:C11"), "10") = 2 Then

MsgBox "attention"

If Application.WorksheetFunction.CountIf(Range("C6:C11"), "fp ") + Application.WorksheetFunction.CountIf(Range("C6:C11"), "10") = 2 Then

MsgBox "attention"

End if
End if
End sub
merci
 

chris

XLDnaute Barbatruc
Bonjour

Tes valeurs 21 et 10 sont-elles en texte ? Car si numériques ne pas les encadrer de ""
Quid de plus de 2 occurrences ?
Rien n'empêche de saisir 21 ou 10 dans plusieurs cellules simultanément et de passer de 1 occurrences à plus de 2...

J'ai considéré que c'est numérique
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C6:GW11")) Is Nothing Then Exit Sub
Dim macolonne As Range

Set macolonne = Range(Cells(6, Target.Column), Cells(11, Target.Column))
    If Application.WorksheetFunction.CountIf(macolonne, 21) + Application.WorksheetFunction.CountIf(macolonne, 10) = 2 Or _
        Application.WorksheetFunction.CountIf(macolonne, "fp ") + Application.WorksheetFunction.CountIf(macolonne, 10) = 2 Then

        MsgBox "attention"

    End If
End Sub

Edit : si on veut gérer une éventuelle saisie multicolonnes d'une part et plus de 2 occurrences d'autre part il faudrait
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("C6:GW11")) Is Nothing Then Exit Sub
Dim macolonne As Range
Dim col As Long

Set macolonne = Range(Cells(6, Target.Column), Cells(11, Target.Column))
For col = 0 To Target.Columns.Count - 1
    If Application.WorksheetFunction.CountIf(macolonne, 21) + Application.WorksheetFunction.CountIf(macolonne, 10) >= 2 Or _
        Application.WorksheetFunction.CountIf(macolonne, "fp ") + Application.WorksheetFunction.CountIf(macolonne, 10) >= 2 Then

        MsgBox "attention colonne " & macolonne.Address

    End If
    Set macolonne = macolonne.Offset(0, 1)
Next col

End Sub
 
Dernière édition:

chris

XLDnaute Barbatruc
Bonjour

Cela vérifie bien dans chaque colonne !

Mais tu ne réponds pas aux problèmes que je soulève : chiffres en texte ou numérique, risque de dépassement de 2 occurrences selon la façon dont se fait la saisie ...
 

Discussions similaires

Réponses
1
Affichages
191
Réponses
4
Affichages
360
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…