integrer au vba une alerte pour ne pas effacer certaines cellules

boudu

XLDnaute Occasionnel
Bonjour au forum
je travaille sur un fichier de planning
les plages horaires sont entrées dans le tableau à l'aide de macros qui entourent la plage et inserent la durée de celle ci
les durées sont totalisées en bas de chaque journée
Je souhaiterais integrer aux macros une alerte au cas où on essaie de mettre une plage sur les formules (pour ne pas les ecraser)
dans mon exemple il ne faut pas effacer les formules en ligne 12
les macros sont dans le fichier pour des plages de 1 2 3 ou 4 (cellules)
Je veux donc que par exemple si on essaie d'entrer une plage de 2 en B11, il y ait un message d'alerte qui s'affiche
par contre et c'est toute la difficulté une plage peut en effacer une autre sans que cela derange
merci d'avance pour vos propositions
 

Pièces jointes

  • empechereffacement.xls
    34 KB · Affichages: 81

TooFatBoy

XLDnaute Barbatruc
Re : integrer au vba une alerte pour ne pas effacer certaines cellules

Re,

Si tu as un problème pour "deux" et "quatre", n'hésite pas. ;)

Au fait : j'ai modifié le comportement de la macro.
C'est à dire qu'au lieu de renvoyer systématiquement vers la cellule B2, je reste sur la cellule sélectionnée au départ.
Dis-moi si ce comportement te convient. Sinon on peut le changer à ta guise. :)


ATTENTION toutefois : si tu as supprimé le code de PJ dans la macro SelectionChange et que les cellules B12 à F12 ne sont pas protégées, elles peuvent alors être modifiées manuellement par l'utilisateur.
 
Dernière édition:

boudu

XLDnaute Occasionnel
Re : integrer au vba une alerte pour ne pas effacer certaines cellules

re marcel
je te remercie, j'ai réussi à adapter et j'avais remarqué le changement de comportement qui correspond à ce que je souhaitais
merci encore et bonne continuation
 

TooFatBoy

XLDnaute Barbatruc
Re : integrer au vba une alerte pour ne pas effacer certaines cellules

Re,

Petite remarque : vu que tu fais la même chose dans les quatre macros ("une", "deux", "trois" et "quatre"), il est possible de quasiment remplacer les quatre macro par une seule macro commune.
Les quatre macro ne comportant alors plus qu'une seule ligne de code servant à appeler la macro commune.
 

boudu

XLDnaute Occasionnel
Re : integrer au vba une alerte pour ne pas effacer certaines cellules

re Marcel
je vois bien que ça doit etre possible mais je sais pas trop faire (c'est pour ça que mon code est toujours tres verbeux et lourd mais bon...
si tu peux encore me souffler une petite idée ce serait tres bien
merci, bonne soirée
 

TooFatBoy

XLDnaute Barbatruc
Re : integrer au vba une alerte pour ne pas effacer certaines cellules

Regarde si cela fonctionne et te convient :
Code:
Sub une()
    Call Encadrer(1)
End Sub

Code:
Sub deux()
    Call Encadrer(2)
End Sub

Code:
Sub trois()
    Call Encadrer(3)
End Sub

Code:
Sub quatre()
    Call Encadrer(4)
End Sub

Code:
Sub Encadrer(Taille As Integer)
ActiveCell.Range("A1:A" & Taille).Select
    Set isect = Application.Intersect(ActiveCell.Range("A1:A" & Taille), Range("B12:F12"))
    If Not isect Is Nothing Then
        MsgBox ("Attention vous allez modifier une Formule")
    Else
        Set isect = Application.Intersect(ActiveCell.Range("A1:A" & Taille), Range("B2:F" & (12 - Taille)))
        If Not isect Is Nothing Then
            selection.Borders(xlDiagonalDown).LineStyle = xlNone
            selection.Borders(xlDiagonalUp).LineStyle = xlNone
            With selection.Borders(xlEdgeLeft)
                .LineStyle = xlContinuous
                .Weight = xlMedium
                .ColorIndex = xlAutomatic
            End With
            With selection.Borders(xlEdgeTop)
                .LineStyle = xlContinuous
                .Weight = xlMedium
                .ColorIndex = xlAutomatic
            End With
            With selection.Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
                .Weight = xlMedium
                .ColorIndex = xlAutomatic
            End With
            With selection.Borders(xlEdgeRight)
                .LineStyle = xlContinuous
                .Weight = xlMedium
                .ColorIndex = xlAutomatic
            End With
            selection.Borders(xlInsideHorizontal).LineStyle = xlNone
            ActiveCell.FormulaR1C1 = Taille
        End If
    End If
    ActiveCell.Range("A1").Select
End Sub
 
Dernière édition:

boudu

XLDnaute Occasionnel
Re : integrer au vba une alerte pour ne pas effacer certaines cellules

re Marcel
ben voila
ça marche impecc et c'est beaucoup plus clean comme code
(et pour tout dire j'ai beaucoup plus de plages que ça dans mon vrai fichier donc c'est vraiment tip top

merci beaucoup et bonne continuation
 

boudu

XLDnaute Occasionnel
Re : integrer au vba une alerte pour ne pas effacer certaines cellules

Re Marcel

je mets le fichier avec la protection dans thisworkbook qui permet de lancer les macros sur la feuille protégée et j'ai adapté tes macros qui collent impecc
merci et bon week end à toi aussi
 

Pièces jointes

  • empechereffacement1.xls
    37.5 KB · Affichages: 40

Discussions similaires