NB SI VBA

Bonjour

je souhaiterais faire afficher une msgbox dans ma feuille suivant une condition :

Afficher une msgbow si le mot "CA" apparait plus de 25 fois.

25 fois (en tous) : dans la feuil1 de la cellule E14 à AI14 et de la feuil2 de la cellule E14 à AI14. donc si le mot CA apparait dans ces plages et dans ces deux feuilles plus de 25 fois alors la msgbox apparait avec un message disant que le quota est dépassé.

j'ai mis ce code mais rien ne se passe et je ne sais pas comment lier les deux feuilles (j'ai essayé qu'avec une feuille) :

j'ai mis ce code dans la feuille :

Sub macro1()

Set plage = Range(Cells(14, 5), Cells(14, 31))

If Application.CountIf(plage, "CA") > 25 Then

MsgBox ("Quota dépassé")

End If

End Sub

merci pour votre aide

lili

Bonjour

Essaie ce code à mettre dans la feuille de ''ThisWorkbook :

Dim n

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If ActiveSheet.Name = "Feuil1" Or ActiveSheet.Name = "Feuil2" Then
        If Not Intersect(Target, Range("E14:Ai14")) Is Nothing Then
            n = Application.WorksheetFunction.CountIf(Sheets("Feuil1").Range("E14:Ai14"), "CA")
            n = n + Application.WorksheetFunction.CountIf(Sheets("Feuil2").Range("E14:Ai14"), "CA")
            If n > 25 Then
                MsgBox "Le mot ''CA'' apparait " & n & " fois." & Chr(13) & _
                        "Le quota de 25 est dépassé.", 16
            End If
        End If
    End If
End Sub

Cela te convient-il ?

Bye !

Bonjour,

Essaye ce code suivant :

Sub macro1()
    Set plage1 = Sheets("toto").Range("E14:AI14")
    Set plage2 = Sheets("tata").Range("E14:AI14")
    If (WorksheetFunction.CountIf(plage1, "CA") + WorksheetFunction.CountIf(plage2, "CA")) > 25 Then
        MsgBox ("Quota dépassé")
    End If
End Sub

Salut gmb

bonjour

le code de GMB marche super ( mais celui de RAJA ne marche pas apparemment) , cependant si je veux faire la meme chose mais avec une autre ligne (toujours dans les mêmes feuilles) mais ces deux lignes sont indépendante : la premiére ligne c'est de E14 à AI14 et la deuxième ligne de E18 à AI18,

comment puis je m'y prendre?

lilou

Bonjour,

As-tu changé les noms des feuilles dans ma macro ? Il faut changer les variables de plages pour que ça marche dans un autre contexte.

Bonjour Raja

Re Bonjour Lili

@Lili : essaie ce code, inspirée de celui de Raja :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Set plage1 = Sheets("Feuil1").Range("E14:AI14")
    Set plage2 = Sheets("Feuil2").Range("E18:AI18")
    Set plage = Range("E14:AI14,E18:AI18")
    If ActiveSheet.Name = "Feuil1" Or ActiveSheet.Name = "Feuil2" Then
        If Not Intersect(Target, plage) Is Nothing Then
            n = Application.WorksheetFunction.CountIf(plage1, "CA")
            n = n + Application.WorksheetFunction.CountIf(plage2, "CA")
            If n > 25 Then
                MsgBox "Le mot ''CA'' apparait " & n & " fois." & Chr(13) & _
                        "Le quota de 25 est dépassé.", 16
            End If
        End If
    End If
End Sub

Bye !

niquel ca marche

trop fort les gars

merci les loulou

bisous à vous

lili

Rechercher des sujets similaires à "vba"