XL 2016 Copier_feuille_dans_nouveau_classeur_à.nomer_avec valeurset envoyer par mail

MONTREAL2020

XLDnaute Junior
Salut,

Dans le fichier en PJ, je souhaiterai:

1- Filtrer le la feuille (PRICE_LIST) <>0
2- Faire une copie de la feuille ( PRICE_LIST) avec uniquement des lignes visibles (le format et valeurs) pas de formules
3- Nommer le nouveau classeur
4- Envoyer par mail

J'ai tenté comme vous pourriez le voire avec une macro, mais le résultat est 0.

Merci par avance
 

Pièces jointes

  • Copier plage filtrée- nouveau classeur et colle valeurs.xlsb
    180.3 KB · Affichages: 8

vgendron

XLDnaute Barbatruc
Bonjour

ca manque de précision
1) filtrer la feuille... sur quelle colonne?
ton bout de macro qui ne fonctionne pas (le tableau 913 de la macro n'existe pas), filtre sur la colonne "Commentaire"
comme il n'y a aucun commentaire.. il n'y a rien à filtrer...

2) faire la copie..
lorsque le filtre sera bon, tu pourras copier coller la zone filtrée: avec un truc du genre
ZoneFiltrée.columns(6).specialcells(xlcelltypeblanks).entirerow.copy destination:= .....
3) sauvegarder le classeur..

pour tout ca, utilise l'enregistreur de macro: ca te donnera un premier code qu'on pourra opitimiser par la suite.
 

MONTREAL2020

XLDnaute Junior
Bonjour,
Merci pour le retour.

C'est vrai j'ai oublié de préciser que la colonne prix est celle à filtrer.

Mais l'enregistreur ne permet pas la créationn de classeur, le nommer copier la feuille filtrée et la coller avec valeur.

Sauf si cela est possible et que mes connaissances retreintes en VBA.

merci
 

MONTREAL2020

XLDnaute Junior
Désolé.. mais je ne vois pas de colonne "PRIX" dans ton fichier

pour l'enregistreur.. as tu au moins essayé??
J'ai essayé mais â ne donne rien malheureusement.
colonne (OFFRES) qui contient des prix.
le fait de filtrer sans les valeur 0, empêche le code de faire une copie "dupliquer" de la feuille (PRICE_LIST)
juste en valeur lui donner un nom et faire une sauvegarde temporaire, l'envoyer par mail. et supprimer enfin le classeur créé.

Mille merci pour ta disponibilité
 

vgendron

XLDnaute Barbatruc
chez moi, l'enregistreur de macro donne un début de code que voici optimisé
j'ai commenté==> à toi d'adapter

VB:
Sub Macro1()

NomClasseur = Application.InputBox("Saisissez le nom du classeur à enregistrer") 'on demande à l'utilisateur un nom de classeur
NomClasseur = NomClasseur & ".xlsx" 'on ajoute l'extension
RepertoireSauv = "C:\Users\vince\Downloads" 'définition du répertoire de sauvegarde ==> à adapter
With ActiveSheet.ListObjects("Tableau9") 'avec le tableau structuré "Tableau9"
    .Range.AutoFilter Field:=5, Criteria1:="<>0", Operator:=xlAnd 'on applique le filtre sur la colonne 5
    .Range.Copy 'on copie le RESULTAT du filtre==> uniquement les lignes visibles
End With
Sheets.Add After:=Sheets(Sheets.Count) 'on ajoute une feuille en dernier ==> devient la feuille active
Range("A1").Select
ActiveSheet.Paste 'on colle le résultat


ActiveSheet.Copy 'on copie la feuille

ChDir RepertoireSauv 'on se place dans le répertoire de destination
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=RepertoireSauv & "\" & NomClasseur, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Application.DisplayAlerts = True
Range("A2").Select
End Sub
 

Discussions similaires