VBA - Sélection et mise en forme
Bonjour, je vous explique mon problème :
J'ai déjà réalisé une macro me permettant de faire un double clic sur une cellules et de sélectionner un ensemble de cellule.
Jusque la tout vas bien, mais ensuite je souhaiterais ajouter à ce déclencheur une analyse de chacune des cellules et dans le cas ou la cellule est vide réinitialiser la couleur de fond
Dim cellules As Range
If Not Intersect(Target, Range("a1:p100")) Is Nothing And Target.Row Mod 14 = 5 Then
If Not Intersect(Target, Range("a1:p100")) Is Nothing And Target.Column Mod 3 = 1 Then
Range(ActiveCell.Offset(10, 2), ActiveCell.Offset(0, 0)).Select
For Each cellules In Selection
With cellules
If IsEmpty(Selection) Then
.Interior.ColorIndex = xlColorIndexNone
Else
End If
End With
Next cellules
End If
End IfBonjour,
Comme ceci:
Dim cellules As Range
If Not Intersect(Target, Range("a1:p100")) Is Nothing And Target.Row Mod 14 = 5 Then
If Not Intersect(Target, Range("a1:p100")) Is Nothing And Target.Column Mod 3 = 1 Then
Range(Target.Address, Target.Offset(10, 2)).Select
For Each cellules In Selection
With cellules
If cellules = "" Then
.Interior.ColorIndex = xlColorIndexNone
Else
End If
End With
Next cellules
End If
End Ifmais cela peut se réduire plus simplement:
If Not Intersect(Target, Range("a1:p100")) Is Nothing And Target.Row Mod 14 = 5 Then
If Not Intersect(Target, Range("a1:p100")) Is Nothing And Target.Column Mod 3 = 1 Then
Range(Target.Address, Target.Offset(10, 2)).Interior.ColorIndex = xlNone
End If
End IfCdlt
Ah oui d'accord ! C'est si facile pour toi...
Merci beaucoup en tout cas !
Par la même occasion j'ai un autre problème : J'ai crée des mises en forme conditionnel en VBA (je sais pas si on peu appeler ça de la sorte) donc lorsqu'une de mes cases devient "OK" on passe au bleu, "PAS OK" on passe au rouge. Pour l'instant tout vas bien car je fais une Target.value. et que je change la valeur d'une case par une case.
Mais lorsque je souhaite faire de même avec le cas ou If Target.value = ("") ou If IsEmpty(Target.Value) le code fonctionne si je viens dans la case en question pour supprimer la valeur. Mais lorsque je souhaite prendre 2 cases et faire SUPP (donc ma case D8 et D9) je reçois un code "erreur d'exécution 13 incompatibilité de type"
Pour information mon déclencheur est Worksheet_Change.
Merci d'avance pour ta réponse.
If Target.Row Mod 14 = 9 Or Target.Row Mod 14 = 8 Then
If Target.Column Mod 3 = 1 Then
'If Target.Value = ("") Then
If IsEmpty(Target.Value) Then
Target.Interior.ColorIndex = xlColorIndexNone
End If
End If
End IfLes MFC excel sont faites pour ça, le VBA n'est pas nécessaire, il vaut mieux travailler avec les fonctions natives d'excel plutôt que de bricoler quelque chose.
Sinon essayez ceci:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Sortie
Application.EnableEvents = False
If Target.Row Mod 14 = 9 Or Target.Row Mod 14 = 8 And Target.Column Mod 3 = 1 Then
Plage = Selection.Address
For Each cell In Range(Plage)
If cell <> "" Then Exit Sub
Next cell
Range(Plage).Interior.ColorIndex = xlNone
End If
Sortie:
Application.EnableEvents = True
End SubCdltSalut, re merci pour ta réponse.
Mais je n'étais trompé de post pour cette question.
Du coup j'ai essayé modifié mon message...
Et concernant les MFC je ne mes utilises pas car mon fichier est un planning et grande majorité de mes collègues font des copiées collées partout. Ce qui ne fonctionne pas super avec les MFC...
Merci d'avance
Mon nouveau problème est le suivant sur la première macro que tu m'as corrigé j'ai bien pris note de mon erreur.
Néanmoins il y a une partie que je n'arrive pas à élucider, ma macro est composé de 2 parties la première servant à sélectionner un ensemble de case ma seconde pour analyser. Chose que j'ai oublié de mentionner c'est que mon analyse sert après suppression des cellules sélectionné.
Car la je fais mon double clic mes cases sont sélectionnées je fais SUPPR pour "nettoyer" mon ensemble de cellule, mais le problème c'est que la macro est déjà fini donc elle ne remet pas les couleurs à jour. Je suis obligé de redouble cliquer sur ma cellule pour faire le "nettoyage".
Donc j'aurais voulu savoir si il était possible de faire en sorte que dans ma macro la seconde partie ce s'exécute uniquement après l'appuie sur la touche SUPPR ?
Merci beaucoup pour ta réactivité en tout cas.
Mais, la dernière proposition fonctionne-t-elle?
Je l'ai essayé elle me supprime l'erreur mais elle me désactive aussi les Events sans les réactiver.
Donc je l'ai supprimé. Je vais simplement informer mes collègues qu'il n'est pas possible de supprimer plusieurs cellules en même temps.