Insérer une ligne VBA

Résolu
Bonjour à tous,

J'ai fait une macro pour qu'à chaque fois que le commentaire "To reprocess" est inscrit dans une case le fichier ajoute une ligne au dessous en recopiant les données des colonnes A et B.
Je crois qu'elle ne marche pas bien car je n'obtiens pas ce que je veux. De plus, ca ne marche que si je clique sur un bouton je n'ai pas trouvé pour le faire de manière automatique.
Est ce que quelqu'un pourrait me dire ou je me suis trompée?

Private Sub CommandButton1_Click()

Dim c As Variant
Dim j As Integer

j = 1
Dim i
For i = 1 To 100
If Cells(i, 50) = "To reprocess" Then
Range("B2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(c + 1, 1).Resize(Cells(lig, "AX"), 1) = Cells(lig, "A")
Cells(c + 1, 2).Resize(Cells(lig, "AX"), 1) = Cells(lig, "B")
End If
Next i

For Each c In Selection
j = j + 1
Next c

Unload Me

End Sub

Merci beaucoup pour votre aide!!

3 réponses

  1. Bonjour,

    voici un début de solution à ton problème :
    éris to reprocess dans la colonne 3

    Regarde le code dans VBA, à gauche clique sur feuille 1 et tu verras le code dans sub worksheet_change

    https://www.cjoint.com/c/CHtkUEEiRSL
    0
    1. Bonjour,

      Merci pour le code, le seul problème c'est que du coup il m'efface la ligne du dessous pour y recopier les valeurs. Serait-il possible de lui dire d'insérer une ligne?

      merci
      0
  2. 0
    1. Vous rigolez? pas besoin d'excuses! C'est vraiement gentil d'avoir pris le temps de m'aider.

      Merci beaucoup!
      0
    2. mets le en résolu si ton pb est considéré comme tel.
      0
  3. Pour ceux que ca interesse (on en sait jamais ca peut aider qqn), j'ai bidouillé le code en utilisant les infos transmises par Mélanie pour l'adapter à mon fichier. Voici ce que ca donne :

    Private Sub CommandButton1_Click()

    Dim lig As Long

    Application.ScreenUpdating = False

    For lig = Cells(Rows.Count, 5).End(xlUp).Row To 2 Step -1

    If Cells(lig, "AX").Value = "To reprocess" Then
    Rows(lig + 1).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Cells(lig + 1, 1) = Cells(lig, 1).Value
    Cells(lig + 1, 2) = Cells(lig, 2).Value
    Cells(lig + 1, 3) = Cells(lig, 3).Value
    Cells(lig + 1, 4) = Cells(lig, 4).Value
    Cells(lig + 1, 15) = Cells(lig, 15).Value

    End If
    Next lig

    Unload Me
    End Sub

    Le seul soucis, c'est que ca se fait au click et non pas à l'inscription du coup il m'insère une ligne à chaque fois que je fais une mise à jour, mais en changeant de mot à chaque fois qu'une opération est faite on peut s'en sortir (oui je sais ici c'est du bidouillage mais le premier ne s'adaptait pas trés bien à mon fichier...)
    0