Condition plage de cellule

mcp229

XLDnaute Junior
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:D23 ou bien C27:D47 ou encore C 53:D68

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


Merci d'avance.
 

xhudi69

XLDnaute Accro
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.

@+ :cool:
 

xhudi69

XLDnaute Accro
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

@+ :cool:
 

mapomme

XLDnaute Barbatruc
Supporter XLD
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
 

mcp229

XLDnaute Junior
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?
 

xhudi69

XLDnaute Accro
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 :D
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.

@+ :cool:
 
Dernière édition:

mcp229

XLDnaute Junior
Re : Condition plage de cellule

Désolé mais je suis vraiment trop novice pour te comprendre

Voici le fichier ce sera surement plus claire


PS: il n'y a pas de code pour la protection de la feuille.
 

Pièces jointes

  • Essais.xlsm
    142.3 KB · Affichages: 21
  • Essais.xlsm
    142.3 KB · Affichages: 31
  • Essais.xlsm
    142.3 KB · Affichages: 27

mcp229

XLDnaute Junior
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?
 

mapomme

XLDnaute Barbatruc
Supporter XLD
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

  • mcp229-Essais v1.xlsm
    110.6 KB · Affichages: 26
Dernière édition:

Discussions similaires

Réponses
3
Affichages
600
Réponses
18
Affichages
2 K

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux