Insérer une ligne VBA

Résolu/Fermé
lucieaup - 19 août 2013 à 10:35
 lucieaup - 19 août 2013 à 16:44
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

melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
19 août 2013 à 10:47
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
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
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
19 août 2013 à 11:04
0
Vous rigolez? pas besoin d'excuses! C'est vraiement gentil d'avoir pris le temps de m'aider.

Merci beaucoup!
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
19 août 2013 à 11:34
mets le en résolu si ton pb est considéré comme tel.
0
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