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é
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 ?
 

job75

XLDnaute Barbatruc
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:

Orson83

XLDnaute Impliqué
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.
 

Orson83

XLDnaute Impliqué
...
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.
 

Orson83

XLDnaute Impliqué
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

  • Job75.xlsm
    21 KB · Affichages: 4

job75

XLDnaute Barbatruc
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

  • Job75(1).xlsm
    20.1 KB · Affichages: 7

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo