VBA - Extraire des lignes d'une base de données

Bonjour

Besoin d'aide car là ça dépasse carrément mes compétences.

J'ai une base de données de laquelle :

- je souhaite extraire les lignes en fonction d'une date donnée (inputbox peut-être je ne sais pas)

- coller les lignes à extraire dans une nouvelle feuille du classeur qui serait automatiquement nommée selon la date extraite.

- puis avoir la possibilité d'envoyer par mail uniquement la feuille (date) concernée et non pas le fichier dans son ensemble ! l'équivalent de cette commande ci-dessous en gros..

image

Ma BDD

image


Le résultat attendu

image

+ la possibilité d'envoyer par mail uniquement la feuille active en fonction de sa date.

Je ne sais pas si je suis suffisamment explicite.
En espérant que quelqu'un puisse m'aider car là je sèche. (j'ai déjà par le passé fait des extractions de lignes d'une BDD vers une autre feuille mais cela concernait toujours le même critère alors que là les lignes doivent être extraites selon une date précise.)

je précise qu'il y aura des listes déroulantes et des formules dans certaines cellules de la BDD et qu'elles doivent aussi être copiées sur la feuille de destination. Il ne s'agit pas de copier juste les valeurs mais tout en réalité.

oulala, ça me parait compliqué !

Bien cordialement.

oups la feuille date concernée devra être envoyée en tant que pièce jointe ;xlsx(.xlsm) et non dans le corps du message.

Bonsoir BsAlv

Merci beaucoup pour ton code.

Je vais tester tout ça.

Bien cordialement.

Bonjour

Me revoilà sur le même sujet. Cela fonctionne très bien avec le code de BsAlv que je remercie à nouveau.

Toutefois je voudrai faire un collage spécial "validation" ! j'ai essayé de modifier le code en ajoutant la ligne ci-dessous en remplacement de celle actuelle mais ça ne marche pas !

En effet dans la base de données où nous allons chercher les lignes à extraire selon la date pour les exporter dans un autre classeur, j'ai des listes déroulantes et des formules de calcul que je souhaite voir après collage sur la feuille du nouveau classeur.

Pourtant il me semble bien que le ".Paste" dans le code actuel équivaut à "coller tout" mais visiblement ce n'est pas le cas car je ne vois plus ni mes listes, ni mes formules et le format des colonnes n'est pas conservé ! On dirait au contraire qu'il ne copie que la valeur !

Comment faire svp pour modifier ce petit bout de code ?

.PasteSpecial Paste:=xlPasteValidation

mais ça ne fonctionne pas.

Sub exemple_inputbox()

    MaDate = InputBox("Entrez une date au format JJ/MM/AA :", "Utilisateur")

    'Si une valeur a été entrée et si l'utilisateur a cliqué sur OK
    If MaDate <> "" Then
'        MsgBox MaDate 'Renvoie le prénom entré
'MaDate = DateSerial(2023, 11, 30)       'votre date
     Nom = Format(MaDate, "ddmmyyyy")        'nom de la feuille
     sFichier = ThisWorkbook.Path & "\" & Nom & ".xlsx"     'chemin&nom du fichier

    End If

    With Sheets("TB DES FLP")
          On Error Resume Next
          .AutoFilter.Range.AutoFilter
          On Error GoTo 0
          With .Range("tableau1").ListObject.Range     'votre tableau
               .AutoFilter 3, , xlFilterValues, Array(2, Format(MaDate, "mm/dd/yyyy"))     'filtrer le tableau
               .SpecialCells(xlCellTypeVisible).Copy     'copier les cellules visibles

               Set WB = Workbooks.Add        'nouveau fichier
               Range("A7").Select
               With ActiveSheet
                    .Paste                   'coller les données
                    .Name = Nom              'nom de la feuille

            End With

               On Error Resume Next
               Kill sFichier                 'supprimer fichier eventuel dans ce sous-répértoire
               On Error GoTo 0
               WB.SaveAs Filename:=sFichier  'sauvegarder nouveau fichier

              WB.Close SaveChanges:=False
               .AutoFilter
        End With
     End With
End Sub

Vous remerciant par avance de l'aide que vous pourrez m'apporter.

Bien cordialement.

MK

re,

il n'y avait pas de validation dans l'ancien fichier, maintenant les colonnes vertes l'ont et cela fonctionne avec le "Paste".

Effectivement vous avez raison...peut-etre dû à l'heure tardive !

Juste l'ajustement automatique des colonnes qui ne se fait pas dans le nouveau fichier.

Merci infiniment.

Bien à vous.

Rechercher des sujets similaires à "vba extraire lignes base donnees"