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é
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
Désolé job75, les cellules ne doivent pas être modifiées tant que le bouton "Aller à la feuille 2" n'est pas cliqué.
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.
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,

J'ai nommé la sélection les cellules concernées 'plControle'
En cas d'évolution tu as juste le nom à reprendre sans toucher au code.
Regarde si c'est ce que tu voulais.
eric
 

Pièces jointes

  • Exemple V1.xlsm
    19.4 KB · Affichages: 5

Orson83

XLDnaute Impliqué
Bonjour @eriiic

J'avais la solution ici mais entre temps le demandeur a changé de fichier et de mise ne forme du coup il faut tout refaire en espérant qu'il ne change pas de fichier encore ....o_O

@Phil69970
eriiic, Phil69970, le fil,
Phil69970 à raison, les bordures de mon premier fichier étaient toutes identiques. Je ne pensais pas que cela poserait un problème, j'en suis désolé.
Entre temps, j'ai posté le fichier présent dans ce post. Croyez-moi je ne cherche pas à compliquer.
En réalité je me moque des bordures pourvu qu'il y ait un élément distinctif qui indique à l'utilisateur que certaines cellules ne sont pas remplies.
Exemple : ?? dans les cellules vides ou fonds dégradés jaunes passe en fonds rouge, etc. -> à condition qu'elles reviennent à leur état de départ.
 

Pièces jointes

  • eriiic.xlsm
    25.6 KB · Affichages: 5

Phil69970

XLDnaute Barbatruc
Le fil

En partant de ce que tu as écris :
En réalité je me moque des bordures pourvu qu'il y ait un élément distinctif
Je te propose autre chose qui permet d'identifier les cellules vides....

*Essaye à l'avenir d'identifier clairement tes besoins cela évitera de refaire x fois le fichier
*Je pense que cela est faisable avec une MFC comme Job75 l'a dit.
@Phil69970
 

Pièces jointes

  • Bordure V4.xlsm
    26.3 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour le fil, le forum,

On peut tout simplement sélectionner les cellules vides :
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 flag Then MsgBox "Veuillez compléter les cellules vides sélectionnées." Else Sheets("Feuil2").Activate
End Sub
A+
 

job75

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

Pièces jointes

  • Job75(2).xlsm
    21 KB · Affichages: 1

Orson83

XLDnaute Impliqué
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
Bonjour job75, le fil, le forum,
C'est effectivement une très bonne solution qui permet d'identifier les cellules non complétées et de proposer le remplissage de la première cellule du haut à l'utilisateur, tous ceci sans modifier la mise en forme de la cellule. Merci pour cette proposition.
 

Discussions similaires