Comment améliorer une macro créé avec l'enregistreur?
Utilisateur anonyme
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
La macro que j’ai créé avec l’enregistreur et divers codes sur le net fonctionne très bien mais je trouve qu’elle est un peu trop longue.
Est-il possible d'améliorer ou simplifier les codes de cette macro du fichier ci-dessous?
https://www.cjoint.com/c/IFCpJyVhKps
Merci
Geoffroy
La macro que j’ai créé avec l’enregistreur et divers codes sur le net fonctionne très bien mais je trouve qu’elle est un peu trop longue.
Est-il possible d'améliorer ou simplifier les codes de cette macro du fichier ci-dessous?
https://www.cjoint.com/c/IFCpJyVhKps
Merci
Geoffroy
1 réponse
-
Bonjour,
Filtre pour copie ligne(s) filtree(s) et cadrillage
Peut-être plus besoin de la procedure suppression lignes vides
Faites un test avec code et si ok, intégrez le ou a defaut je le ferai. Pour le reste ai pas regarde en detail, mais je peux'Sub Fitre_Recup_Info(ns) Sub Fitre_Recup_Info() ns = 26 ' a passer en parametre With Worksheets("Feuil1") 'adaptez nom de feuille .Range("A2:M2").AutoFilter 'filtre en place With .Range("$A$2:$M$49") 'plage de cellules utilisees .AutoFilter Field:=13, Criteria1:=ns 'filtre Num semaine '--------- ajouter code si pas de lignes filtrees ----------------- If .Cells(3, 13) <> "" Then 'cellule colonne filtre Worksheets("Feuil1").Range("A1:M1").Copy Worksheets("feuil5").Range("A1") Set Plage_ST = .Cells(1, 1).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible) 'plage de cellules sans les entetes Plage_ST.EntireRow.Copy Worksheets("feuil5").Range("A2") Else MsgBox ("Mot introuvable !") End If '------------------------------------------------------------------ End With .Range("A2:M2").AutoFilter 'enleve filtre End With End Sub-
Bonjour,
Merci beaucoup.
Je n'avais pas passé au filtre... :)
mais il me faut le code de 'dernière ligne' car c'est une feuille de 3 km de lignes, apparemment ...oui sérieux si ce n'est pas plus...
doncWith .Range("$A$3:$M$49") 'plage de cellules utilisees49 remplacé par dernière ligne
ça réduit pas mal déjà, super...
J'avais fait une "copie" mais on peut ajouter une nouvelle feuille à chaque fois, renommée puis supprimée mais là je bloque un peu car plantage avec l'enregistreur.
par contre cette lignePlage_ST.EntireRow.Copy Worksheets("feuil5").Range("A2")
fait un doublon
merci encore, je vais modifier tout ça....
@+ -
Bonjour,
mais il me faut le code de 'dernière ligne'derlig = .Range("A" & Rows.Count).End(xlUp).Row With .Range("$A$3:$M$" & derlig)
Pourquoi cette ligne fait doublon. Vous récupérez les lignes filtrées comment?????????
je bloque un peu car plantage avec l'enregistreur.
Pige pas ........
Pour moi, une feuille modele serait plus adaptée remplie et initialisée a chaque demande. Comme ca plus de mise en page -
-
-