XL 2010 Affecter des bordures si cellules vides

  • Initiateur de la discussion Initiateur de la discussion Orson83
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
Bonsoir Tchotchoudu31, le forum,

Avec ceci
plage.Borders.ColorIndex = 3
plage.Borders.Weight = xlThick

A+

Martial
Bonsoir Yaloo, le forum,
Merci d'avoir regardé. Ton bout de code fonctionne uniquement sur la première cellule vide trouvée mais pas toutes les cellules vides. Il ne remet pas non plus les bordures dans leur état de départ (noir non gras).
Voici le code :
VB:
Sub BtnVaFeuil2()
Dim plage As Range
For Each plage In Range("D2:D5,D7:D9,D12,D15:D16").Cells
    If plage = "" Then
    plage.Borders.ColorIndex = 3
    plage.Borders.Weight = xlThick
    MsgBox ("Veuillez compléter les cellules vides.")
Exit Sub
        Exit For
    End If
Next
    Sheets("Feuil2").Select
End Sub
Existe t-il une solution pour corriger cela ?
 
Bonsoir Tchotchodu31, Yaloo,

Pourquoi parler de plage puisque vous voulez encadrer des cellules ?
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
        c.Borders.ColorIndex = 3
        c.Borders.Weight = xlThick
        flag = True
    End If
Next
If flag Then MsgBox "Veuillez compléter les cellules vides." Else Sheets("Feuil2").Activate
End Sub
A+
 
Dernière édition:
Bonsoir Tchotchodu31, Yaloo,

Pourquoi parler de plage puisque vous voulez encadrer des cellules ?
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
        c.Borders.ColorIndex = 3
        c.Borders.Weight = xlThick
        flag = True
    End If
Next
If flag Then MsgBox "Veuillez compléter les cellules vides." Else Sheets("Feuil2").Activate
End Sub
A+
Bonsoir job75, le forum,
C'est exact, il y a des plages non nommées et des cellules seules.
 
...
Ben rien si elles ne sont pas vides.
J'ai joins un fichier dans ce fil.
Explications :
Au départ les cellules concernées sont vidées avec bouton pour une RAZ.
Elles sont donc vides et en attente de remplissage.
L'utilisateur remplit les cellules et passe à la feuille suivante avec un bouton et c'est à ce moment là que les Warning se déclenchent avec msgbox + bordures rouge et impossibilité de passer à la feuille suivante.
 
C'est bien joli de mettre des bordures rouges épaisses mais que faut-il faire une fois ces cellules remplies ?

En fait il vaudrait mieux que les cellules soient colorées automatiquement par une MFC.
Job75, le fil,
@job75 : Le problème c'est que la MFC ne fonctionne pas avec le bouton.
J'ai fait un test avec votre macro et les bordures ne reviennent pas à l'état initial.
Je joins un fichier avec votre macro et des explications dans la feuille.
Tchotchodu31
 

Pièces jointes

Avec une MFC c'est bien simple, on ne s'occupe pas des couleurs :
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 flag = True
Next
If flag Then MsgBox "Veuillez compléter les cellules vides rouges." Else Sheets("Feuil2").Activate
End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour