Problème de formule pour envoi d'une feuille a une autre
Bonjour à tous,
Je travaille depuis quelques mois en autodidacte sur un fichier de réservation. Version Excel 365. Mes réservations du jour sont résumées dans l'onglet "Print", une macro les sépare selon si les résas sont en Brasserie ou Salons.
Mon problème se trouve au niveau de la macro qui doit envoyer les résas sur les onglets petit déjeuner et déjeuner et je cales. La macro pour les petits déjeuners pas de soucis mais celle pour le déjeuner m'envoies les données en désordonné dans le tableau, une partie en C3:C7 et une autre partie en A51/A61, pourtant les deux macros sont identiques et les tableaux sont des copiés collés.
La sub pour les Résas Brasserie:
Sub remplir_Résas_Brasserie()
Dim WS_1 As Worksheet
Dim WS_2 As Worksheet
Dim ws_3 As Worksheet
Dim der_ligne As Long
Dim der_ligne2 As Long
Dim ligne_coller As Long
Dim ligne_coller2 As Long
Set WS_1 = Worksheets("Brasserie")
Set WS_2 = Worksheets("Petit Déjeuner")
Set ws_3 = Worksheets("Déjeuner")
'identifier la dernière ligne de brasserie
der_ligne = WS_1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To der_ligne
If WS_1.Cells(i, 2).Value = "07:15" Or WS_1.Cells(i, 2).Value = "07:30" Or WS_1.Cells(i, 2).Value = "07:45" Or WS_1.Cells(i, 2).Value = "08:00" Or WS_1.Cells(i, 2).Value = "08:15" Or WS_1.Cells(i, 2).Value = "08:30" Or WS_1.Cells(i, 2).Value = "08:45" Or WS_1.Cells(i, 2).Value = "09:00" Or WS_1.Cells(i, 2).Value = "09:15" Or WS_1.Cells(i, 2).Value = "09:30" Or WS_1.Cells(i, 2).Value = "09:45" Or WS_1.Cells(i, 2).Value = "10:00" Or WS_1.Cells(i, 2).Value = "10:15" Or WS_1.Cells(i, 2).Value = "10:30" Then
'colle en brasserie petit déjeuner selon nouveau layout
ligne_coller = WS_2.Cells(Rows.Count, 2).End(xlUp).Row + i
WS_1.Range(WS_1.Cells(i, 2), WS_1.Cells(i, 9)).Copy WS_2.Cells(ligne_coller, 3)
'colle en brasserie déjeuner selon nouveau layout
Else: ligne_coller2 = ws_3.Cells(Rows.Count, 2).End(xlUp).Row + i
WS_1.Range(WS_1.Cells(i, 2), WS_1.Cells(i, 9)).Copy ws_3.Cells(ligne_coller2, 3).Offset(1, 0)
End If
Next i
End Subet la sub pour les résas salons
Sub remplir_Résas_Salon()
Dim WS_1 As Worksheet
Dim WS_2 As Worksheet
Dim ws_3 As Worksheet
Dim der_ligne As Long
Dim der_ligne2 As Long
Dim ligne_coller As Long
Dim ligne_coller2 As Long
Set WS_1 = Worksheets("Salon")
Set WS_2 = Worksheets("Petit déjeuner")
Set ws_3 = Worksheets("Déjeuner")
'identifier la dernière ligne de brasserie
der_ligne2 = WS_1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To der_ligne2
If WS_1.Cells(i, 2).Value = "07:15" Or WS_1.Cells(i, 2).Value = "07:30" Or WS_1.Cells(i, 2).Value = "07:45" Or WS_1.Cells(i, 2).Value = "08:00" Or WS_1.Cells(i, 2).Value = "08:15" Or WS_1.Cells(i, 2).Value = "08:30" Or WS_1.Cells(i, 2).Value = "08:45" Or WS_1.Cells(i, 2).Value = "09:00" Or WS_1.Cells(i, 2).Value = "09:15" Or WS_1.Cells(i, 2).Value = "09:30" Or WS_1.Cells(i, 2).Value = "09:45" Or WS_1.Cells(i, 2).Value = "10:00" Or WS_1.Cells(i, 2).Value = "10:15" Or WS_1.Cells(i, 2).Value = "10:30" Then
'colle en salon petit déjeuner selon nouveau layout
ligne_coller = WS_2.Cells(Rows.Count, 2).End(xlUp).Row + i
WS_1.Range(WS_1.Cells(i, 2), WS_1.Cells(i, 9)).Copy WS_2.Cells(ligne_coller, 15)
'colle en salon déjeuner selon nouveau layout
Else: ligne_coller2 = ws_3.Cells(Rows.Count, 1).End(xlUp).Row + i
WS_1.Range(WS_1.Cells(i, 2), WS_1.Cells(i, 9)).Copy ws_3.Cells(ligne_coller2, 1).Offset(1, 0)
End If
Next i
End SubEdit modo : code à mettre entre balises avec le bouton </> merci d'y faire attention la prochaine fois
Je vous remercie d'avance pour votre aide !
Bonjour iamOB et
Vous voudrez bien prendre le temps de lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum et notamment :
- Pour plus de lisibilité, utilisez la fonctionnalité </> pour insérer vos codes VBA (et si possible aussi pour vos formules Excel).
Merci de votre compréhension
A+
Bonjour BrunoM45,
Je suis navré j'avais pourtant bien lu mais cela m'a complètement échapé! Je serais plus vigilant la prochaine fois!
A+