XL 2010 Affecter des bordures si cellules vides

Orson83

XLDnaute Impliqué
Bonsoir le forum,
Je rencontre un blocage pour affecter des bordures "rouge gras" à des cellules qui sont vides. En effet, au clic sur un bouton, j'ai une macro qui affiche une msgbox si certaines cellules sont vides (ça c'est OK) et j'aimerai ajouter des bordures aux cellules concernées mais je n'y parviens pas malgré mes recherches.
Je joins un fichier exemple dans ce fil.
Merci pour votre aide.
Tchotchodu31
 

Pièces jointes

  • Exemple V1.xlsm
    18.3 KB · Affichages: 29
Solution
Pour peaufiner on peut mettre la 1ère cellule vide en mode Edition avec SendKeys :
VB:
Sub BtnVaFeuil2()
Dim c As Range, flag As Boolean
For Each c In Range("D2:D5,D7:D9,D12,D15:D16")
    If c = "" Then
        Union(IIf(flag, Selection, c), c).Select 'sélection multiple
        flag = True
    End If
Next
If Not flag Then Sheets("Feuil2").Activate: Exit Sub
MsgBox "Veuillez compléter les cellules vides sélectionnées."
CreateObject("WScript.Shell").SendKeys "{F2}" 'mode Edition
End Sub

Orson83

XLDnaute Impliqué
@job75 : j'ai du mal à adapter votre macro à ma page qui comporte d'autres fonctionnalités. En effet, la fonction "sélection multiple" ne fonctionne pas.
Je précise que tout se passe dans la feuille 2 avec du masquage/affichage de lignes.
Voici le code complet :
VB:
Sub BtnAfficheEtape2() 'Tout se passe dans la même Feuille
   
Dim c As Range, flag As Boolean

    For Each c In Range("E10:E11")
    If c = "" Then
        Union(IIf(flag, Selection, c), c).Select 'sélection multiple
        flag = True
    End If
    Next

    If Not flag Then Sheets("Feuil2").Unprotect PassWord:="toto"
    Sheets("Feuil2").Rows("6:133").Hidden = True
    Sheets("Feuil2").Rows("36:56").Hidden = False
    Sheets("Feuil2").Rows("124:125").Hidden = False
    Sheets("Feuil2").Protect PassWord:="toto", UserInterfaceOnly:=True
    Application.Goto Sheets("Feuil2").Range("A1")
    Application.Goto Sheets("Feuil2").Range("E37")
    Exit Sub
   
    'Autre fonction connexe qui gère l'affichage d'une plage de cellules
    With ActiveSheet
    For Each cellule In .Range("E38:E49")
        cellule.EntireRow.Hidden = cellule.Value = ""
        cellule.EntireRow.Hidden = cellule.Value = 0
    Next cellule
    End With
   
    Exit Sub
   
     MsgBox "Veuillez compléter les cellules vides sélectionnées."
    CreateObject("WScript.Shell").SendKeys "{F2}" 'mode Edition

End Sub
Problème résolu, Exit Sub était mal placé :
VB:
...
     With ActiveSheet
    For Each cellule In .Range("E38:E49")
        cellule.EntireRow.Hidden = cellule.Value = ""
        cellule.EntireRow.Hidden = cellule.Value = 0
    Next cellule
    End With
    Exit Sub 'A placer ici
    End If
 

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 261
Membres
102 844
dernier inscrit
atori2