XL pour MAC ajouter une condition à une macro

Valter

XLDnaute Occasionnel
bonjour le forum, j'ai un petit programme de comptabilité avec un journal de saisie des écritures, et une feuille à part pour le plan comptable, dans le journal je ne peux ajouter que les numéros qui sont déjà présents dans le plan comptable par une liste déroulante, par contre dans le plan comptable je peux ajouter ou supprimer les comptes sans tenir compte des comptes qui sont déjà saisis dans le journal. L'ajout des comptes dans le plan comptable, ne peut se faire que par une ligne d'édition, l'effacement se fait en sélectionnant une cellule en B,C ou D et ensuite une macro m'efface la ligne. Je voudrais ajouter à ma macro une sécurité supplémentaire, je voudrais empêcher d'effacer un compte si ce compte contient des écritures.
Dans la copie d'écran de la partie supérieur de mon plan comptable ci-dessous, dans la colonne E, apparait le chiffre 1,(ce chiffre indique que ce compte contient déjà des écritures), je voudrais ajouter à ma macro une condition supplémentaire qui m'empêche d'effacer le compte s' il y a le chiffre 1 en colonne E, avec un message qui dit : tu ne peux pas effacer ce compte car il contient déjà des écritures.
Capture d’écran 2020-03-15 à 11.14.47.jpg


je joins ci-dessous ma macro avec laquelle j'efface actuellement une ligne, cette macro possède déjà 2 conditions, c'est que la ligne soit sélectionnée à l'intérieur d'une certaine plage, en effet je ne voudrais pas par erreur effacer la ligne des titres par exemple, ou que tout simplement on a oublié de sélectionner une ligne à effacer.....

Sub PlanCOMPTABLE_EffacerLignePlanComptable()
ActiveSheet.Unprotect

'définition de la plage de sélection autorisée
If
ActiveCell.Row >= 7 And ActiveCell.Row <= 106 And ActiveCell.Column >= 2 And ActiveCell.Column <= 4 Then

'message en indiquant les infos de la ligne à effacer

If MsgBox("Veux-tu effacer le compte : " & Cells(ActiveCell.Row, "C"), vbYesNo, "Demande de confirmation") = vbNo Then

Exit Sub

Else

'déprotège la feuille

ActiveSheet.Unprotect

'déprotège la feuille et efface les cellules des colonnes B,C,D, de la ligne sélectionnée
ActiveSheet.Range(Replace("B_,C_,D_", "_", ActiveCell.Row)).ClearContents

're-protège la feuille
ActiveSheet.Protect, DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlNoRestrictions

End If

Else

'message indiquant que on a oublié de sélectionner une ligne

MsgBox "HOUPS... ! tu as oublié de sélectionner une ligne"

End If
End Sub

voilà, j'espère avoir pu expliquer ce que je désire faire, merci pour votre aide.
 

MP59

XLDnaute Occasionnel
Bonjour Valter,
tu peux essayer de compléter ta macro comme ceci :

If Cells(ActiveCell.Row, 5) = 1 Then
MsgBox ("Tu ne peux pas effacer ce compte car il contient déjà des écritures.")
Exit Sub
Else
' ton code actuel (entre sub et end sub)

End If
 

Discussions similaires

Réponses
5
Affichages
285
Réponses
26
Affichages
924

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki