Ajouter une ligne
J'aimerais qu'une ligne s'ajoute en-dessous de celle Active lorsque l'utilisateur sélectionne "Oui" dans une liste déroulante.
Est-ce que quelqu'un pourrait corriger mon code s'il vous plait ?
Merci de votre collaboration !
PrivateSub Worksheet_Change(ByVal Target As Range)
ForEach c In Range("M21:M171").Cells
If(c.Value = "Oui")Then
ActiveSheet.Rows(Row + 1).EntireRow.Insert Shift:=xlDown
EndIf
Next
EndSub
Bonsoir CaT41 et
Voici le code corrigé
Private Sub Worksheet_Change(ByVal Target As Range)
' Si modification dans la plage M21:M171
If Not Intersect(Target, Range("E1:E10")) Is Nothing Then
' Si le choix est oui
If Target.Value = "Oui" Then
' Désactiver les évènements
Application.EnableEvents = False
' On insère une ligne en dessous
ActiveSheet.Rows(Target.Row + 1).EntireRow.Insert Shift:=xlDown
' Réactiver les évènements
Application.EnableEvents = True
End If
End If
End SubEdit : code corrigé
@+
Bonjour,
Merci de m'avoir aidé rapidement.
Merci, j'ai essayé le code que tu m'as donné. Il m'ajoute une ligne après la ligne 10.
Est-ce que c'est possible qu'il ajoute la ligne mais après celle où j'ai sélectionné "Oui".Dans le cas présent, après la ligne 1.
Private Sub Worksheet_Change(ByVal Target As Range)
' Si modification dans la plage M21:M171
If Not Intersect(Target, Range("E1:E10")) Is Nothing Then
' Si le choix est oui
If Target.Value = "Oui" Then
' On insère une ligne en dessous
ActiveSheet.Rows(Target.Row + 1).EntireRow.Insert Shift:=xlDown
End If
End If
End SubJ'obtiens cet erreur:
Bonjour,
Oups, j'ai oublié une chose primordiale
Private Sub Worksheet_Change(ByVal Target As Range)
' Si modification dans la plage M21:M171
If Not Intersect(Target, Range("E1:E10")) Is Nothing Then
' Si le choix est oui
If Target.Value = "Oui" Then
' Désactiver les évènements
Application.EnableEvents = False
' On insère une ligne en dessous
ActiveSheet.Rows(Target.Row + 1).EntireRow.Insert Shift:=xlDown
' Réactiver les évènements
Application.EnableEvents = True
End If
End If
End SubCa devrait mieux aller
@+
Oui, merci, c'est mieux, il n'y a plus d'erreur
Mais est-ce que la ligne peut être ajoutée après celle ou j'ai sélectionné "Oui" donc après la ligne où je me trouve actuellement ?
Pour l'instant, elle s'ajoute à la fin complétement de mon tableau.
Merci d'être si efficace, tu es un pro VBA !
Re,
Ce n'est pas normal, la ligne doit s'ajouter après la ligne ou on répond OUI
Target = cellule actuellement modifiée
Target.Row + 1 = Ligne de la cellule modifiée + 1
Testé de mon côté sans problème, avec une petite vidéo en prime
https://*drive*.google.com/file/d/16UeFfkIsCqmanj91CQRdIaaeYS-Xzn99/view?usp=sharingNota : enlever les *
@+
Super ça fonctionne !
Avec ce code :
En ajoutant une ligne en-dessous, est-ce qu'on peut faire copier aussi le contenu de la cellule D23 et E23 (1ière année et Oui)
Private Sub Worksheet_Change(ByVal Target As Range)
' Si modification dans la plage M21:M171
If Not Intersect(Target, Range("M23:M173")) Is Nothing Then
' Si le choix est oui
If Target.Value = "Oui" Then
' Désactiver les évènements
Application.EnableEvents = False
' On insère une ligne en dessous
ActiveSheet.Rows(Target.Row + 1).EntireRow.Insert Shift:=xlDown
' Réactiver les évènements
Application.EnableEvents = True
End If
End If
End SubUn gros merci !
Bonjour,
Je ne sais pas si je dois créer une nouvelle demande si j'ai une autre question.
Ajouter une ligne c'est réglé.Par contre, je me demandais si on peut copier le contenu d'une cellule dans une cellule de la nouvelle ligne ajoutée ?
Le code utilisé:
Private Sub Worksheet_Change(ByVal Target As Range)
' Si modification dans la plage M21:M171
If Not Intersect(Target, Range("E1:E10")) Is Nothing Then
' Si le choix est oui
If Target.Value = "Oui" Then
' Désactiver les évènements
Application.EnableEvents = False
' On insère une ligne en dessous
ActiveSheet.Rows(Target.Row + 1).EntireRow.Insert Shift:=xlDown
' Réactiver les évènements
Application.EnableEvents = True
End If
End If
End SubMerci !