Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Je travaille actuellement sur une macro qui pourrait me permettre de couper et coller des lignes dans une feuille nommée "Actions clôturées à mettre DU" dont les actions sont "clôturées" afin de les voir disparaître de mon plan d'action en cours (feuille nommée "Plan d'action").
Je pense que je ne suis pas loin d'y arriver car le code que j'ai écris me copie la ligne dans mon autre feuille cependant elle reste présente dans mon tableau de base "Plan d'action" et je dois donc les supprimer manuellement.
Voici le code :
VB:
Sub Essai_macro_export_actions_cloturées()
'
' Essai_macro_export_actions_cloturées Macro
'
Sheets("Plan d'action").Range("$B$8:$I$500").AutoFilter Field:=8, Criteria1:="<>"
Range("A10:I500" & Range("I65563").End(xlUp).Row).Select
Selection.Copy
Sheets("Actions clôturées à mettre DU").Select
Range("A1048576").End(xlUp).Offset(1, 0).Select
ActiveSheet.Copy
Sheets("Plan d'action").Range("$B$8:$I$500").AutoFilter Field:=8
ActiveWindow.SmallScroll Down:=-9
Range("A8:A9").Select
MsgBox "Déplacement et suppression du ou des action(s) clôturée(s)."
End Sub
Pouvez-vous m'indiquer ce qu'il me manque pour que les lignes soient coupées et non copiées ? Et comment faire en sorte que les lignes vides présentes dans mon tableau "Plan d'action" soient également supprimées ?
Je travaille actuellement sur une macro qui pourrait me permettre de couper et coller des lignes dans une feuille nommée "Actions clôturées à mettre DU" dont les actions sont "clôturées" afin de les voir disparaître de mon plan d'action en cours (feuille nommée "Plan d'action").
Je pense que je ne suis pas loin d'y arriver car le code que j'ai écris me copie la ligne dans mon autre feuille cependant elle reste présente dans mon tableau de base "Plan d'action" et je dois donc les supprimer manuellement.
Voici le code :
VB:
Sub Essai_macro_export_actions_cloturées()
'
' Essai_macro_export_actions_cloturées Macro
'
Sheets("Plan d'action").Range("$B$8:$I$500").AutoFilter Field:=8, Criteria1:="<>"
Range("A10:I500" & Range("I65563").End(xlUp).Row).Select
Selection.Copy
Sheets("Actions clôturées à mettre DU").Select
Range("A1048576").End(xlUp).Offset(1, 0).Select
ActiveSheet.Copy
Sheets("Plan d'action").Range("$B$8:$I$500").AutoFilter Field:=8
ActiveWindow.SmallScroll Down:=-9
Range("A8:A9").Select
MsgBox "Déplacement et suppression du ou des action(s) clôturée(s)."
End Sub
Pouvez-vous m'indiquer ce qu'il me manque pour que les lignes soient coupées et non copiées ? Et comment faire en sorte que les lignes vides présentes dans mon tableau "Plan d'action" soient également supprimées ?
Sub Essai_macro_export_actions_cloturées()
Dim plage
' Essai_macro_export_actions_cloturées Macro
Set plage = Sheets("Plan d'action").Range("$B$8:$I$500")
plage.AutoFilter Field:=8, Criteria1:="<>"
Set plage = plage.Offset(1).Resize(plage.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
With Sheets("Actions clôturées à mettre DU")
plage.Copy .Range("a" & .Cells(.Rows.Count, "A").End(xlUp).Row + 1)
End With
plage.AutoFilter
plage.EntireRow.Delete
MsgBox "Déplacement et suppression du ou des action(s) clôturée(s)."
End Sub
Sub Essai_macro_export_actions_cloturées()
Dim plage
' Essai_macro_export_actions_cloturées Macro
Set plage = Sheets("Plan d'action").Range("$B$8:$I$500")
plage.AutoFilter Field:=8, Criteria1:="<>"
Set plage = plage.Offset(1).Resize(plage.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
With Sheets("Actions clôturées à mettre DU")
plage.Copy .Range("a" & .Cells(.Rows.Count, "A").End(xlUp).Row + 1)
End With
plage.AutoFilter
plage.EntireRow.Delete
MsgBox "Déplacement et suppression du ou des action(s) clôturée(s)."
End Sub
Il y a un problème sur la ligne :
plage.Copy .Range("a" & .Cells(.Rows.Count, "A").End(xlUp).Row + 1)
Il me dit que "erreur définie par l'application ou par l'objet". Je n'arrive pas à comprendre par quoi je dois remplacer les "a" et "A" sur cette ligne.
Re..
Cette instruction copy la plage filtrée "Plage" dans la plage de la feuille "Actions clôturées à mettre DU" (défini dans With Sheets) à la première cellule vide de la colonne A
Cela peut-être testé par
Je comprend pourquoi ça ne fonctionne pas.. s'il me cherche la première cellule vide dans la colonne A de la feuille "Actions clôturées à mettre DU" il tombe sur mon en-tête de tableau de A1 à A9.
Comment écrire le code pour qu'il m'insère la plage de cellule copiée à partir de la colonne A10 en prenant la première cellule vide ?
Re..
Cette instruction copy la plage filtrée "Plage" dans la plage de la feuille "Actions clôturées à mettre DU" (défini dans With Sheets) à la première cellule vide de la colonne A
Cela peut-être testé par
Alors j'ai fais quelques modifications et le code fonctionne très bien à un petit détail prés.. il me copie les lignes à partir de la ligne A29 et je ne comprend pas pourquoi 😱
Voici le code actuel :
VB:
Sub Essai_macro_export_actions_cloturées()
'
' Essai_macro_export_actions_cloturées Macro
Dim plage
' Essai_macro_export_actions_cloturées Macro
Set plage = Sheets("Plan d'action").Range("$A$8:$I$500")
plage.AutoFilter Field:=9, Criteria1:="<>"
Set plage = plage.Offset(1).Resize(plage.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
With Sheets("Actions clôturées à mettre DU")
plage.Copy .Range("a" & .Cells(.Rows.Count, "A").End(xlUp).Row + 1)
End With
plage.AutoFilter
plage.EntireRow.Delete
MsgBox "Déplacement et suppression du ou des action(s) clôturée(s)."
End Sub
Alors j'ai fais quelques modifications et le code fonctionne très bien à un petit détail prés.. il me copie les lignes à partir de la ligne A29 et je ne comprend pas pourquoi 😱
Voici le code actuel :
VB:
Sub Essai_macro_export_actions_cloturées()
'
' Essai_macro_export_actions_cloturées Macro
Dim plage
' Essai_macro_export_actions_cloturées Macro
Set plage = Sheets("Plan d'action").Range("$A$8:$I$500")
plage.AutoFilter Field:=9, Criteria1:="<>"
Set plage = plage.Offset(1).Resize(plage.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
With Sheets("Actions clôturées à mettre DU")
plage.Copy .Range("a" & .Cells(.Rows.Count, "A").End(xlUp).Row + 1)
End With
plage.AutoFilter
plage.EntireRow.Delete
MsgBox "Déplacement et suppression du ou des action(s) clôturée(s)."
End Sub
Finalement j'ai trouvé le problème qui venait de la ligne suivante du code :
plage.Copy .Range("a" & .Cells(.Rows.Count, "A").End(xlUp).Row + 1)
Il ne voulait pas me coller mes lignes dans mon tableau car il y a des en-têtes à mon tableau excel.
Pour cela j'ai donc modifié totalement cette ligne et j'obtiens le code suivant :
VB:
Sub Essai_macro_export_actions_cloturées()
'
' Essai_macro_export_actions_cloturées Macro
Dim plage
' Essai_macro_export_actions_cloturées Macro
Set plage = Sheets("Plan d'action").Range("$A$8:$I$500")
plage.AutoFilter Field:=9, Criteria1:="<>"
Set plage = plage.Offset(1).Resize(plage.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
With Sheets("Actions clôturées à mettre DU")
plage.Copy .Range("A1048576").End(xlUp).Offset(1, 0)
End With
plage.AutoFilter
plage.EntireRow.Delete
MsgBox "Déplacement et suppression du ou des action(s) clôturée(s)."
End Sub
Je vous remercie de vos réponses qui m'ont bien aidé 🙂
Re..
Ces deux instructions
plage.Copy .Range("A1048576").End(xlUp).Offset(1, 0)
plage.Copy .Range("a" & .Cells(.Rows.Count, "A").End(xlUp).Row + 1) Font exactement la même chose
La première n'est valable qu'à partir de Xl 2007 🙄
La deuxième, toute version 🙂
D'accord alors dans ce cas je ne comprend pas d'où pouvait provenir le problème avec le premier code. Surtout que j'ai une version 2013 cela aurait dû tout aussi bien fonctionner 😵
En tout cas la macro fonctionne à merveille, merci pour votre aide 🙂
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD