Ajouter une ligne

Catherine -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,

J'aimerais qu'une ligne s'ajoute en-dessous de celle Active lorsque l'utilisateur sélectionne "Oui" dans une liste déroulante. La colonne M est celle avec la liste déroulante oui/non pour chacune des lignes 21 à 171.

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

2 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Déjà, tu sembles avoir une erreur ici
    ActiveSheet.Rows(Row + 1)
    

    A corriger par
    ActiveSheet.Rows(c.Row + 1)
    


    Ensuite, vu que tu ajoutes des lignes, je pense qu'il serait préférable de faire une boucle en partant du bas.
    Pour ça, il faut utiliser un for et step -1
    un truc du genre
    for i = 171 to 21 step -1
       c = celles(i,13)
       If(c.Value = "Oui")Then
               ActiveSheet.Rows(l+1).EntireRow.Insert Shift:=xlDown
        end if
    next
    

    0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour à tous les deux

    une ligne s'ajoute en-dessous de celle Active lorsque l'utilisateur sélectionne "Oui"
    Une autre solution
    Option Explicit
    
    Const plage = "M21:M171"
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim li As Long
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range(plage)) Is Nothing Then
      If UCase(Target.Value) = "OUI" Then
        li = Target.Row
        Rows(li + 1).Insert
      End If
    End If
    End Sub

    https://www.cjoint.com/c/JIqqJ4AjUWB

    Cdlmnt
    0