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é
L'intérêt de la sélection multiple c'est que quand on valide on passe à la cellule vide suivante.

Et si on valide la 1ère cellule par Ctrl+Entrée on entre la même valeur dans toutes les cellules.
@job75 : j'ai une question par rapport à l'argument "SendKeys".
Est-il compatible avec Excel de 2010 à 365 et avec Windows de 7 à 10 en version 32 et 64 bits ?
Je pose cette question parce-ce-que cet argument à souvent posé problème dans le passé.
 

Phil69970

XLDnaute Barbatruc
Le fil

@Tchotchodu31 tu es difficile à suivre à chaque fois tu modifies ton fichier que cela soit dans la mise en forme avec les bordures ou maintenant dans le dégradé de la couleur de fond....et en même temps du dis :
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.
Car ce que tu veux c'est que les cellules non remplies soit facile à voir et des qu'elles sont remplies elles retrouvent lors état initial.
Donc la couleur de départ n'a pas d'importance c'est juste du décor....dégradé ou uni...

@Phil69970
 

Orson83

XLDnaute Impliqué
Le fil

@Tchotchodu31 tu es difficile à suivre à chaque fois tu modifies ton fichier que cela soit dans la mise en forme avec les bordures ou maintenant dans le dégradé de la couleur de fond....et en même temps du dis :

Car ce que tu veux c'est que les cellules non remplies soit facile à voir et des qu'elles sont remplies elles retrouvent lors état initial.
Donc la couleur de départ n'a pas d'importance c'est juste du décor....dégradé ou uni...

@Phil69970
J'aurai aimé que ce soit si facile. Sauf que l'utilisateur devra revenir sur cette page et devra même l'imprimer. Il est donc essentiel que la mise en forme revienne à l'état de départ.
 

Orson83

XLDnaute Impliqué
Le fil,
j'ai eu plusieurs propositions et je vous remercie pour ce travail et les solutions que vous avez trouvé. Nul doute que certaines feront le bonheur des prochains visiteurs.
Je vais retenir la proposition de job75 qui finalement fait le travail sans modifier la mis en forme des cellules.
Un grand merci pour votre aide.
Très belle journée.
Tchotchodu31
 

Phil69970

XLDnaute Barbatruc
Le fil

J'ai bien compris ton besoin

Car ce que tu veux c'est que les cellules non remplies soit facile à voir et des qu'elles sont remplies elles retrouvent lors état initial.
Donc la couleur de départ n'a pas d'importance c'est juste du décor....dégradé ou uni...
Ce que j'ai dit c'est que la couleur de départ peut être jaune, verte ou bleu .... peu importe mais quand l'utilisateur laisse la cellule vide elle change de couleur et des qu'il la rempli elle redevient jaune, verte ou bleu ... selon sa couleur de départ c'est ce que fait mon fichier au post #24

@Phil69970
 

Orson83

XLDnaute Impliqué
Le fil

J'ai bien compris ton besoin


Ce que j'ai dit c'est que la couleur de départ peut être jaune, verte ou bleu .... peu importe mais quand l'utilisateur laisse la cellule vide elle change de couleur et des qu'il la rempli elle redevient jaune, verte ou bleu ... selon sa couleur de départ c'est ce que fait mon fichier au post #24

@Phil69970
D'accord, je vais regarder. Merci beaucoup.
Bonne journée.
 

Orson83

XLDnaute Impliqué
Le fil


Cela veut dire que tu n'avais même pas regarder .....alors que je te demandais déjà ici ce que tu en pensais...

@Phil69970
J'ai vu le problème. J'ai le mérite de pas être ingrat, mais plutôt reconnaissant du travail des autres.
Voir la capture d'écran.
Tu remarqueras que les cellules de départ sont en jaune "dégradé" et que ta macro modifie ces mêmes cellules en jaune "NON DEGRADE".
Merci pour ta compréhension.
 

Pièces jointes

  • capture.jpg
    capture.jpg
    82.2 KB · Affichages: 10

Orson83

XLDnaute Impliqué
Merci, c'est noté.
Merci également pour votre contribution que je vais retenir.
Bonne journée.
Tchotchodu31
@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
 

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 143
Membres
112 669
dernier inscrit
Guigui2502