[VBA Excel] Pb avec IsEmpty

Résolu
saian-sugus Messages postés 35 Statut Membre -  
lermite222 Messages postés 9042 Statut Contributeur -
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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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...
    0
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      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...
      -1
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > lermite222 Messages postés 9042 Statut Contributeur
         
        Salut 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
        -1
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
    1. saian-sugus Messages postés 35 Statut Membre
       
      Merci lermite, parfait :)
      -1
      1. lermite222 Messages postés 9042 Statut Contributeur 1 199 > saian-sugus Messages postés 35 Statut Membre
         
        Mes 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+
        -1
  3. saian-sugus Messages postés 35 Statut Membre
     
    J'ai oublié de souligner que j'aimerais que toutes les cellules ne doivent pas être vides et non pas une seule..
    -1
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    -1