Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Question code VBA

Maxou69

XLDnaute Nouveau
Bonjour à tous,

J'ai un soucis avec mon code VBA. Enfin plutôt avec mon fichier Excel.
Mon fichier Excel comprend plusieurs onglets, il y'a déjà 2 modules qui contiennent des codes, et je créer un 3eme module avec le code suivant :

Sub ExporterParDate()
Dim wsSource As Worksheet
Dim wsNew As Worksheet
Dim rngSource As Range
Dim cell As Range
Dim startDate As Date
Dim endDate As Date
Dim OutApp As Object
Dim OutMail As Object
Dim TempFileName As String
Dim lastRow As Long

' Spécifiez la feuille de données source
Set wsSource = ThisWorkbook.Sheets("Feuil1")

' Récupérer les dates de début et de fin depuis les cellules spécifiées
startDate = CDate(wsSource.Range("A1").Value)
endDate = CDate(wsSource.Range("B1").Value)

' Spécifiez la plage de données à filtrer (à partir de la ligne S2)
lastRow = wsSource.Cells(wsSource.Rows.Count, "S").End(xlUp).Row
Set rngSource = wsSource.Range("S2:S" & lastRow)

' Créer une nouvelle feuille pour les données filtrées
Set wsNew = Sheets.Add(After:=Sheets(Sheets.Count))
wsNew.Name = "Matrice d'entree"

' Filtrer les données entre les deux dates
rngSource.AutoFilter Field:=1, Criteria1:=">=" & CLng(startDate), Operator:=xlAnd, Criteria2:="<=" & CLng(endDate)
rngSource.SpecialCells(xlCellTypeVisible).EntireRow.Copy Destination:=wsNew.Cells(wsNew.Rows.Count, "A").End(xlUp).Offset(1, 0)

' Supprimer le filtre
wsSource.AutoFilterMode = False

' Enregistrez la feuille filtrée dans un fichier temporaire
TempFileName = Environ$("temp") & "\" & "Matrice_d_entree.xlsx"
wsNew.Copy
ActiveWorkbook.SaveAs TempFileName
ActiveWorkbook.Close SaveChanges:=False

' Envoyer le fichier par e-mail
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

With OutMail
.To = "votre@email.com" ' Remplacez par votre adresse e-mail
.Subject = "Données filtrées entre deux dates"
.Body = "Veuillez trouver les données filtrées en pièce jointe."
.Attachments.Add TempFileName
.Display ' Ouvre le client de messagerie Outlook avec le message
End With

' Supprimer le fichier temporaire
Kill TempFileName

' Supprimer la feuille temporaire
Application.DisplayAlerts = False
wsNew.Delete
Application.DisplayAlerts = True
End Sub

J'ai fait un test sur un fichier vierge (en pièce jointe), j'y ai ajouté mes données à l'état brut et tester le code qui fonctionne !
Sauf que, lorsque j'utilise ce même code, dans mon fichier avec plusieurs onglets et déjà 2 modules, le code de ne fonctionne pas..
Je ne comprends pas pourquoi il fonctionne dans un fichier "vierge" et pas dans un fichier avec déjà des codes

Merci par avance pour votre aide

Bonne journée à vous !
 

Phil69970

XLDnaute Barbatruc
Bonjour @Maxou69

Quelques remarques :

1) J'attends toujours ton retour
==> https://excel-downloads.com/threads/probleme-envoi-fichier-piece-jointe.20077545/#post-20596347

2) Mettre le code entre balise c'est plus digeste !!!


3) J'ai pas vu ceci
J'ai fait un test sur un fichier vierge (en pièce jointe),

4) Ni ceci
j'utilise ce même code, dans mon fichier avec plusieurs onglets et déjà 2 modules,

Bonne lecture
 

Maxou69

XLDnaute Nouveau
Bonjour Phil,

Merci pour ton retour. J'ai en effet oublier la pièce jointe du fichier vierge que voici.
Désolé pour la présentation je pensais que le code se mettrait automatiquement entre guillemet..

En effet, je te répond sur l'autre discussion !

Pour l'autre fichier, je ne peux pas l'ajouter en pièce jointe de suite, il contient des données sensibles
 

Pièces jointes

  • Classeur3.xlsm
    24.5 KB · Affichages: 5

Discussions similaires

Réponses
7
Affichages
554
Réponses
12
Affichages
823
Réponses
3
Affichages
354
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…