Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA Worksheet_Change

  • Initiateur de la discussion Initiateur de la discussion chris
  • 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 !

chris

XLDnaute Barbatruc
Bonjour

Y a t'il un moyen de différencier la modification du contenu de la cellule de l'insertion d'une ligne lorsque l'on trappe le Worksheet_Change ?

En fait je veux interdire le changement de contenu mais permettre l'insertion de ligne.
 
Re : VBA Worksheet_Change

Bonjour le fil, Chris

Un petit bidouillage ...
Code:
Dim nbLig As Long
Dim V
 
Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False
    If Target.CurrentRegion.Rows.Count = nbLig + 1 Then Exit Sub
    If V Then Target.Value = V
  Application.EnableEvents = True
End Sub
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    nbLig = Target.CurrentRegion.Rows.Count
    V = Target.Value
End Sub
A plus
 
Dernière édition:
Re : VBA Worksheet_Change

Bonjour,

Dans les options de protection de la feuille (Outils/Protection/Protéger la feuille) tu trouveras normalement tout ce qu'il faut pour cela.

A+
[Edition] Hello Soenda, une combinaison des deux fera peut-être l'affaire????
 
Dernière modification par un modérateur:
Re : VBA Worksheet_Change

Bonjour
Merci à tous deux

Mon but était justement d'éviter la protection assez globale dans ce cas précis.

J'ai finalement opté pour un bidouillage.

Mes recherches m'ont aiguillé sur le le fait qu'en cas de demande d'ajout de ligne, target.columnwidth est null (même principe pour l'ajout de colonne avec target.rowheight)

Donc le même esprit que la solution de soenda que je vais tester (j'aime bien la confrontation d'idées !)
 
Re : VBA Worksheet_Change

Bonjour

Soenda

Tu déclares deux variables mais je ne comprends pas comment elles prennent miraculeusement pour V, le contenu de la cellule, et pour Nblig le nombre de lignes de la plage.

Peux-tu éclairer ma lanterne ?
 
Re : VBA Worksheet_Change

Bonjour le fil, Chris, Hasco

Hasco à dit:
Dans les options de protection de la feuille (Outils/Protection/Protéger la feuille) tu trouveras normalement tout ce qu'il faut pour cela.
... Une combinaison des deux fera peut-être l'affaire ?
Effectivement, ça devrait. Merci Hasco. 🙂

A plus
 
Re : VBA Worksheet_Change

Bosoir chris, soenda, Hasco,

Une macro un peu plus compliquée, mais qui interdit toute modif à part l'insertion (pas la suppression...) d'une ligne :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n1 As Double, lig1 As Long, n2 As Double, lig2 As Long
Application.EnableEvents = False
n1 = Application.CountA(Cells)
If n1 Then lig1 = Cells.Find(What:="*", After:=[A1], LookIn:=xlFormulas, _
  SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Application.Undo
n2 = Application.CountA(Cells)
If n2 Then lig2 = Cells.Find(What:="*", After:=[A1], LookIn:=xlFormulas, _
  SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
If n1 = n2 And lig1 = lig2 + 1 Then Application.Undo 'si insertion d'UNE ligne
Application.EnableEvents = True
End Sub

A+
 
- 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

Discussions similaires

Réponses
7
Affichages
695
Réponses
37
Affichages
1 K
Réponses
9
Affichages
509
Réponses
2
Affichages
259
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…