Insérer une ligne VBA
Résolu
lucieaup
-
lucieaup -
lucieaup -
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!!
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!!
A voir également:
- Insérer une ligne VBA
- Insérer une vidéo dans powerpoint - Guide
- Partager photos en ligne - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
- Insérer une ligne sur word - Guide
3 réponses
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
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
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...)
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...)
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