[VBA Excel] Pb avec IsEmpty

Résolu
Bonjour,

j'aimerai tester si un groupe de cellules ne sont pas vides.

Mon code:
Range("B9:B11,B17:B19,B25:B26,B32:B33,B38:B39,B47:B48,B53:B56,B63:B68,B78:B81,B88:B91").Select
If Not IsEmpty(ActiveCell.Value) Then
Else
MsgBox ("Veuillez remplir les chiffres définitifs de l'année en cours")
Exit Sub
End If


Mais ce test ne marche que sur B9 et non sur toute la sélection comme souhaité, je ne trouve la solution nul part, pourriez-vous m'aider?

Merci d'avance :)
Configuration: Windows XP
Internet Explorer 7.0

4 réponses

  1. Contributeur
    re-re

    test = Application.CountA(Range("B9:B11,B17:B19,B25:B26,B32:B33,B38:B39,B47:B48,B53:B56,B63:B68,B78:B81,B88:B91"))

    te donne le nombre de cellules non vides dans ta zone, donc...
    1. Contributeur
      Bonjour Michel, comme quoi ont apprend tout les jours, connaissais pas CountA
      A+
      Edit: Je trouve d'ailleur rien sur CountA dans l'aide ?? pas étonnant que je connais pas.
      La seule solution trouvée dans l'aide renvoi à For Each...
    2. Contributeur
      @lermite222Salut lermite

      CountA est le terme anglais pour nbval

      en écrivant Application.countA(...) j'utilise la syntaxe simplifiée de application.worksheetfunction.countA(.....)
      vola,vloila

      bon après midi
  2. Contributeur
    Bonjour,
    la macro qui fait ce que tu veux
    Sub TestVide()
    Dim TB
    Dim i As Integer
    Dim cel As Range
        TB = Array("B9:B11", "B17:B19", "B25:B26", "B32:B33", "B38:B39", _
        "B47:B48", "B53:B56", "B63:B68", "B78:B81", "B88:B91")
        For i = 0 To UBound(TB)
            For Each cel In Range(TB(i))
                If cel = "" Then
                    MsgBox ("Veuillez remplir les chiffres définitifs de l 'année en cours")
                    Exit Sub
                End If
            Next cel
        Next i
    End Sub

    A+
    1. Merci lermite, parfait :)
    2. Contributeur
      @saian-sugusMes avis que tu n'a pas compris le code donner par Michel, il est beaucoup plus cour.

      Cogite un peu dessus et tu verras...
      Si vraiment tu ne trouve pas Michel ou moi te donnerons plus d'explications.
      A+
  3. J'ai oublié de souligner que j'aimerais que toutes les cellules ne doivent pas être vides et non pas une seule..
    1. Contributeur
      Aller... je me dévoue...
      Sub SiVide()
      If Application.CountA(Range _
      ("B9:B11,B17:B19,B25:B26,B32:B33,B38:B39, B47: B48 , B53: B56 , B63: B68 , B78: B81 , B88: B91 ")) < 32 Then
                     MsgBox ("Veuillez remplir les chiffres définitifs de l 'année en cours")
                      Exit Sub
      end if
      
      End Sub

      C'est pas plus simple ??
      A+