Cellules vides

Résolu
Bonjour à tous et déjà merci pour votre aide.
je suis novice dans le domaine, et bien évidement, mon niveau est assez faible.
j'ai fais pas mal de decherche afin d'essayer de trouver une solution à mon problème, mais je bloque.

j'ai une vingtaine de cellules sur ma feuille de calcul dont j'aimerai vérifier si elles sont vides.
si quelqu'un peut m'aider, se serait gentil
merci

5 réponses

  1. Bonjour,

    Il faudrait que tu précises à partir quelle action le message apparaît !

    Une autre possibilité (sans boucle) :

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range
       'remplacer B12:C18,D10 par la plage à verifier
      On Error Resume Next
      Set r = Range("B12:C18,D10").SpecialCells(xlCellTypeBlanks)
      On Error GoTo 0
      If Not r Is Nothing Then
        If r.Cells.Count > 1 Then
          MsgBox "Remplir les cellules " & r.Address(False, False)
        Else
          MsgBox "Remplir la cellule " & r.Address(False, False)
        End If
      End If
    End Sub
    1. Pour info, j'ai recopié la procédure mais ça ne fonctionne pas.
      en fait, quand je veux executer le macro, il n'y en a pas.
      Est-ce que cela vient du fait que c'est une private sub, je nen sais rien?
      mais, j'ai une solution qui fonctionne donc un grand merci à tout les deux
    2. Il faut copier cette procédure dans le module de la feuille, elle est déclenchée automatiquement par chaque modification de la feuille, ce qui n'est pas satisfaisant pendant le renseignement de la feuille d'où ma question concernant l'évènement de fin qui doit déclencher l'affichage.
    3. effectivement, en la recopiant dans le module de la feuille, elle fonctionne (j'avais dis que j'étais novice. lol). de manière différente.
      je pense qu'elle me servia pour une autre application.
      merci pour vos solutions.
      A bientôt.
  2. Modérateur
    En exemple, une fonction et une procédure d'appel de cette fonction :
    Sub AppelFonction()
    Dim maplage As Range
    
    Set maplage = Range("A1:A10,F1,G3")
    If CellRemplies(maplage) <> "" Then MsgBox CellRemplies(maplage)
    End Sub
    
    Function CellRemplies(Plage As Range) As String
    Dim cel As Range
    
    For Each cel In Plage
        If cel = "" Then CellRemplies = CellRemplies & cel.Address & "," & Chr(10)
    Next
    If CellRemplies <> "" Then CellRemplies = "Les cellules suivantes sont vides : " & Chr(10) & CellRemplies
    End Function


    Cordialement,
    Franck P
    1. un grand merci. c'est exactement ce dont j'avais besoin
    2. Modérateur
      De rien
      A+
    3. bonjour,
      je ne veux pas abuser, mais si je peux me permettre, j'ai une autre demande, une variante de la première.
      qu'est-ce que je devrais faire si je voudrais supprimer les lignes dont les cellules sont vides?
      Merci.
    4. je pensais avoir trouvé mais j'ai crié victoire trop vite
  3. En fait, si au moins une de ces cellules est vide, une msgbox s'ouvre pour me prévenir que j'ai oublié de remplir la cellule (pour remplir les cellules, plusieurs choix possibles, liste déroulante)
    il me faudrait avant d'appliquer la procédure principale, une fonction, procédure (excuse-moi pour les termes, je ne les connais pas encore très bien) qui vérifie si c'est vingt cellules ont bien été remplie.
    merci
    1. Bonjour,

      VBA est-il nécessaire ???

      Une formule (éventuellement matricielle) du type =SI(ESTVIDE(....);...;...) ne suffit-elle pas ???
      1. je suis déjà dans un petit programme VBA, je ne vois pas comment, c'est faisable en utilisant =SI(estvide....
    2. Modérateur
      Bonjour,

      Peux tu nous en dire plus sur ce que tu souhaites réellement?
      Veux tu :
      - vérifier si les 20 cellules sont TOUTES vides?
      - vérifier une par une si les 20 cellules sont vides et te prévenir de leur "vidité" au fur et à mesure?
      - etc...