Macro permanente pour recopier une ligne dans une autre feuille
Résolu
Phildemarseille
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
Phildemarseille Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
Phildemarseille Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
sur XP, avec Excel 2000
j'ai un tableau de compta avec deux feuilles.
Dans la première, je rentre toutes les factures qui m'arrivent.
Je voudrais que dans la deuxième, soient dupliquées automatiquement les lignes qui correspondent à un "Service concerné" (colonne M) portant le code 640.
J'ai bien trouvé une macro qui réalise cette opération mais je ne sais pas comment la rendre active en permanence, sans recopier toutes les lignes concernées chaque fois !?
Sub Transfert_lignes_sur_autre_feuille()
'
' Transfert_lignes_sur_autre_feuille Macro
' Macro enregistrée le 30/05/2013 par vdm
'
' Touche de raccourci du clavier: Ctrl+f
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("Patrimoine").Activate
Col = "M"
NumLig = 3
With Sheets("Général")
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 4 To NbrLig
If .Cells(Lig, Col).Value = "640" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Sheets("Patrimoine").Cells(NumLig, 1).Insert Shift:=xlDown
End If
Next
End With
End Sub
Je dois ajouter que je ne touche pas du tout ma bille en VB, merci donc d'être très clair ... et très patient.
Au plaisir de vous lire.
Phil
sur XP, avec Excel 2000
j'ai un tableau de compta avec deux feuilles.
Dans la première, je rentre toutes les factures qui m'arrivent.
Je voudrais que dans la deuxième, soient dupliquées automatiquement les lignes qui correspondent à un "Service concerné" (colonne M) portant le code 640.
J'ai bien trouvé une macro qui réalise cette opération mais je ne sais pas comment la rendre active en permanence, sans recopier toutes les lignes concernées chaque fois !?
Sub Transfert_lignes_sur_autre_feuille()
'
' Transfert_lignes_sur_autre_feuille Macro
' Macro enregistrée le 30/05/2013 par vdm
'
' Touche de raccourci du clavier: Ctrl+f
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("Patrimoine").Activate
Col = "M"
NumLig = 3
With Sheets("Général")
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 4 To NbrLig
If .Cells(Lig, Col).Value = "640" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Sheets("Patrimoine").Cells(NumLig, 1).Insert Shift:=xlDown
End If
Next
End With
End Sub
Je dois ajouter que je ne touche pas du tout ma bille en VB, merci donc d'être très clair ... et très patient.
Au plaisir de vous lire.
Phil
A voir également:
- Macro permanente pour recopier une ligne dans une autre feuille
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Partager photos en ligne - Guide
- Aller à la ligne dans une cellule excel - Guide
- Bruler une feuille de laurier - Guide
- Comment supprimer une feuille sur word - Guide
6 réponses
Bonjour,
Si j'ai bien compris ton soucis, le plus simple serait que tu ajoutes une colonne ou la macro met un x lorsque la ligne a été copiée.
Au passage suivant tu testes cette colonne pour ne copier que les nouvelles lignes.
Tu peux masquer cette colonne.
Exemple sur N :
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Si j'ai bien compris ton soucis, le plus simple serait que tu ajoutes une colonne ou la macro met un x lorsque la ligne a été copiée.
Au passage suivant tu testes cette colonne pour ne copier que les nouvelles lignes.
Tu peux masquer cette colonne.
Exemple sur N :
.... If .Cells(Lig, Col).Value = "640" And .Cells(Lig, "N").Value = "" Then .Cells(Lig, "N") = "x" .Cells(Lig, Col).EntireRow.Copy ....
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Bonjour Eriiic,
j'ai intégré tes lignes dans la macro mais elle recopie toujours l'intégralité des lignes marquées 640, y compris celles comportant un "x" dans la colonne N (que j'ai rajouté) ??
Je n'ai peut être pas inséré au bon endroit ? :
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("Patrimoine").Activate
Col = "M"
NumLig = 3
With Sheets("Général")
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 4 To NbrLig
If .Cells(Lig, Col).Value = "640" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Sheets("Patrimoine").Cells(NumLig, 1).Insert Shift:=xlDown
If .Cells(Lig, Col).Value = "640" And .Cells(Lig, "N").Value = "" Then .Cells(Lig, "N") = "x"
End If
Next
End With
End Sub
j'ai intégré tes lignes dans la macro mais elle recopie toujours l'intégralité des lignes marquées 640, y compris celles comportant un "x" dans la colonne N (que j'ai rajouté) ??
Je n'ai peut être pas inséré au bon endroit ? :
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("Patrimoine").Activate
Col = "M"
NumLig = 3
With Sheets("Général")
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 4 To NbrLig
If .Cells(Lig, Col).Value = "640" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Sheets("Patrimoine").Cells(NumLig, 1).Insert Shift:=xlDown
If .Cells(Lig, Col).Value = "640" And .Cells(Lig, "N").Value = "" Then .Cells(Lig, "N") = "x"
End If
Next
End With
End Sub
Re,
essaie avec :
eric
PS: en début de macro ajoute :
application.screenupdating=false
ça fera plus joli et ça ira plus vite
Remettre avec application.screenupdating=true en fin de macro
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
essaie avec :
For Lig = 4 To NbrLig If .Cells(Lig, Col).Value = "640" And .Cells(Lig, "N") = "" Then .Cells(Lig, Col).EntireRow.Copy Sheets("Patrimoine").Cells(NumLig, 1).Insert Shift:=xlDown .Cells(Lig, "N") = "x" NumLig = NumLig + 1 End If Next Lig
eric
PS: en début de macro ajoute :
application.screenupdating=false
ça fera plus joli et ça ira plus vite
Remettre avec application.screenupdating=true en fin de macro
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Eriiic bonjour,
https://www.cjoint.com/?3EFo03GcIx1
Voilà le fichier en question.
Merci de ta patience !
Phil
https://www.cjoint.com/?3EFo03GcIx1
Voilà le fichier en question.
Merci de ta patience !
Phil
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Super, ça marche !
Seul hic, ça me colle les nouvelles lignes en haut du tableau, alors qu'elles devraient venir à la suite, les dates de la colonne "A" étant chronologiques ...
As-tu encore un peu de patience à me consacrer ?
Seul hic, ça me colle les nouvelles lignes en haut du tableau, alors qu'elles devraient venir à la suite, les dates de la colonne "A" étant chronologiques ...
As-tu encore un peu de patience à me consacrer ?