Recopie automatique d'infos d'un formulaire vers une BDD

Bonjour à tous,

Après avoir fait de nombreuses recherches sur le net, je m’en remets à la sagacité de vos esprits concernant mon fichier Excel car je n’ai pas réussi à trouver la solution.

Si le sujet a déjà été traité, je suis par avance désolée (j’ai cherché sur le forum mais pas trouvé).

Je reçois des demandes de réservation de vol via un tableau Excel et les infos sont ensuite capitalisées dans un autre tableau global qui recense tous les vols réservés.

Pour chaque réservation :

• je copie les infos du formulaire (onglet FORMULAIRE dans mon fichier en pj)

• que je colle ensuite dans la BDD (onglet BDD).

Je souhaite automatiser cette étape de copier-coller incessante (beaucoup de réservations tous les jours), avez-vous des suggestions svp ?

Merci de m’avoir lue

Anna

Bonjour Anna,

Je te propose :

  • De ne pas recopier les demandes de voyages dans l'onglet "Formulaire".
  • De copier directement les demandes dans la feuille "BDD" avec le code suivant :
Option Explicit
Sub AddNewTravels()
    Dim oWB As Workbook
    Dim oSheetFrom As Worksheet, oSheetTo As Worksheet
    Dim oRange As Range
    Dim lRowBDD As Long, lRow As Long, lCol As Long
    Dim sFileName As String

    'Recherche de la dernière ligne de la feuille BDD
    Set oSheetTo = ThisWorkbook.Worksheets("BDD")
    lRowBDD = oSheetTo.Cells(Rows.Count, 1).End(xlUp).Row

    'Récupération du nom du classeur de demandes de voyages
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Filters.Add "Excel demandes", "*.xls*"
        .Show
        If .SelectedItems.Count > 0 Then
            sFileName = .SelectedItems(1)
        End If
    End With

    'Si un fichier a été récupéré, on le traite
    If Len(sFileName) > 0 Then
        Set oWB = Workbooks.Open(sFileName, False, True)
        Set oSheetFrom = oWB.Worksheets(1)
        'On cherche les dernières ligne et colonne à copier
        lRow = oSheetFrom.Cells(Rows.Count, 1).End(xlUp).Row
        lCol = oSheetFrom.Cells(1, Columns.Count).End(xlToLeft).Column
        'On affecte la plage de cellules à copier
        Set oRange = oSheetFrom.Range(oSheetFrom.Cells(2, 1), oSheetFrom.Cells(lRow, lCol))
        'On copie la plage dans la feuille BDD
        oRange.Copy oSheetTo.Cells(lRowBDD + 1, 1)
        'On fait le ménage
        oWB.Close
        Set oWB = Nothing
        Set oSheetFrom = Nothing
        Set oRange = Nothing
    End If

    Set oSheetTo = Nothing
End Sub

Je joins mes 2 classeurs de test.

Rechercher des sujets similaires à "recopie automatique infos formulaire bdd"