Condition plage de cellule

  • Initiateur de la discussion Initiateur de la discussion mcp229
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

mcp229

Guest
Bonsoir à Tous,

Après cette période de vacances il est grand temps que je me perfection en VBA.

Je suis un peu dans le brouillard et j'ai donc besoin de votre aide

PS: je suis toujours novice en VBA.

Dans mon doc excel j'ai créé cette macro:



Sub SUPRIM()
If MsgBox("Voulez vous supprimer la ligne sélectionnée?", 36, "Confirmation") = vbYes Then 'Code à exécuter si OUI

ActiveSheet.Unprotect ("")
With ActiveCell
.EntireRow.Delete

ActiveSheet.PROTECT ("")

End With
End If
End Sub


Elle fonctionne bien, toutefois je voudrais ajouter 3 condition pour son execution:
Que la cellule selectionée soit de la plage C4😀23 ou bien C27😀47 ou encore C 53😀68

Y a t il une bonne âme pour un débutant?


Merci d'avance.
 
Re : Condition plage de cellule

Bonsoir mcp229, le Forum

May be like this 🙂 :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("C4:D23,C27:D47,C53:D68")) Is Nothing Then
    If MsgBox("Voulez vous supprimer la ligne sélectionnée?", 36, "Confirmation") = vbYes Then
        Target.EntireRow.Delete
    End If
End If
End Sub

A adapter, il faut doubleclicker dans les cellules.

@+ 😎
 
Re : Condition plage de cellule

Bonsoir mcp229, le FOrum,

Ou alors dans l'évennement Change de la feuille:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C4:D23,C27:D47,C53:D68")) Is Nothing Then
    If MsgBox("Voulez vous supprimer la ligne sélectionnée?", 36, "Confirmation") = vbYes Then
        Target.EntireRow.Delete
    End If
End If
End Sub

@+ 😎
 
Re : Condition plage de cellule

Bonjour mcp229, xhudi69,

Attention, je ne sais pas ce que vous désirez réellement faire mais si vous exécutez plusieurs fois de suite la macro, vous risquez d’effacer, peut-être, des lignes non désirées.

En effet le range désigné par Range("C4: D23,C27: D47,C53: D68") est fixe. Vous excluez (entre autres) les lignes 24 à 26 de l'effacement
.

  • vous vous placez sur C23 et exécutez une première fois la macro. La ligne 23 est effacée
  • conséquence => toutes les lignes à partir de la ligne 24 remonte d'un cran. Le numéro de l'ex-ligne 24 devient 23
  • vous vous placez sur la cellule C23 et exécutez une seconde fois la macro. La ligne 23 s'efface. Vous venez donc d'effacer l'ex- ligne 24 qui était à priori exclue du range de départ
 
Re : Condition plage de cellule

Merci,


En fait j'ai un peu changé la macro:

Private Sub OK_SUPPRIMER_Click()
If Not Intersect(Target, Range("FRAIS1:FRAIS2")) Is Nothing Then

ActiveSheet.Unprotect ("")
With ActiveCell
.EntireRow.Delete
End If

ActiveSheet.PROTECT ("")

End With

Me.Hide
End Sub


Mais il m'affiche un message d'erreur:
Erreur de compilation:
End If sans bloc If


Une idée?
 
Re : Condition plage de cellule

Bonsoir mcp229, le Forum,
Bonsoir mapomme 🙂

@ mapomme: je le sais parfaitement, mais je répondais au sens strict de la question 😀
il serait mieux de vider la ligne ou autre chose comme la cellule....

@ mcp229:
Code:
ActiveSheet.Unprotect ("")
 With ActiveCell
 .EntireRow.Delete
End If
Y-a pas de If.......
Puis il vaudrais mieux de retravaillé sur le code donné qui est dans les évennements de la WorkSheet et non dans un module ou sur un UserForm.

@+ 😎
 
Dernière édition:
Re : Condition plage de cellule

Désolé mais le fichier envoyé est édulcoré.... par la suite je vais avoir besoin des cellules fusionnées.


Pour être plus claire je voudrais lorsque je sélectionne une cellule et que je clic sur le bouton supprimer ligne, la ligne sélectionnée soit supprimée. Toutefois si la cellule sélectionnée n'est pas dans une partie bleue, je voudrais que la macro n'agisse pas.


est ce plus claire?
 
Re : Condition plage de cellule

Bonjour mcp229,

Un essai dans le fichier joint.

  • six nouveaux noms ont été définis: debSal,finSal, debFac,finFac, debNot,finNot
  • la fenêtre Userform1 a été supprimée
  • chaque procédure (Suppr_ligne_Active & Inser_ligne_Active) est dans son propre module
  • tous les autres modules ont été supprimés (ne sont pas l'objet de la question)
  • les procédures sont génériques pour les 3 tableaux.
  • quelques commentaires ont été ajoutés
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Protect/Unprotect
Réponses
18
Affichages
3 K
D
Réponses
49
Affichages
9 K
D
Réponses
2
Affichages
785
L
Réponses
1
Affichages
1 K
Lucien31
L
N
Réponses
1
Affichages
650
New_VBA_User
N
W
Réponses
6
Affichages
2 K
waligaroux
W
V
Réponses
3
Affichages
2 K
vdh_xavier
V
S
Réponses
0
Affichages
1 K
sylvestre09
S
Retour