VBA-Conservation mise en forme rapatriement de données
Bonjour à tous,
J'ai un fichier "BDD" (ci-joint le fichier essai) qui va être une base de données vivante, c'est à dire que de nouvelles lignes pourront y être créées. De ce fait toutes les lignes du classeur peuvent potentiellement être concernées.
Dans ce fichier BDD, la colonne A sert à sélectionner les lignes que l'on souhaite reporter dans le deuxième fichier: "Exemple". La sélection de ces lignes se fait via une liste déroulante "Oui" pour que la ligne soit reportée dans le fichier exemple, "Non" pour qu'elle ne le soit pas.
Dans le fichier "Exemple" sont reportées dans les deux onglets "BPU" et "DQE" les colonnes suivantes: (ci-joint le fichier final)
- colonne B : Code
- Colonne C : Désignation des prestations
- Colonne E: unité
- Le code suivant fait ceci très bien, cependant j'aimerais que les lignes reportées gardent la mise en forme (format, caractères, espacement des cellules etc.). Connaissez vous un moyen?
- Ensuite une fois "exemple" généré et que je l'enregistre après avoir travaillé dessus est-il possible de retourner sur BDD de rajouter des lignes et/ou changer la sélection faîte via la colonne A? Car après l'enregistrement de Exemple, j'ai fait volontairement une modification de la BDD que j'ai actualisée. Quand Exemple c'est ouvert toutes les lignes ont été ajoutés, y compris les nouvelles lignes, mais à la suite de la version précédente sans la supprimer. Résultat : les prix conservés de la version sont en double dans les onglets BPU et le DQE de Exemple.
Option Explicit
Option Base 1
'------------------------------------------------------------------
Sub rapatrier_BPU()
Dim Derlig As Integer, Nbre As Integer, T_bdd, T_oui
Dim Lig As Integer, Cptr As Integer, Index As Integer
Dim Ligvid As Integer
Dim chemin As String
'------------initialisations
Application.ScreenUpdating = False
With ThisWorkbook.Sheets("BDD")
Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
Nbre = Application.CountIf(.Columns("A"), "oui")
'mémorisation en RAm des données et _
préparation de variable-tableau des lignes "oui"
T_bdd = .Range("B2:E" & Derlig)
ReDim T_oui(Nbre, 3)
'----------------selection des lignes "oui"
Lig = 1
For Cptr = 1 To Nbre
Lig = .Columns("A").Find("oui", Cells(Lig, "A")).Row
Index = Index + 1
'copie des données "oui"
T_oui(Index, 1) = T_bdd(Lig - 1, 1)
T_oui(Index, 2) = T_bdd(Lig - 1, 2)
T_oui(Index, 3) = T_bdd(Lig - 1, 4)
Next
End With
'---------------------rapatriement
chemin = ThisWorkbook.Path & "\"
Workbooks.Open Filename:=chemin & "BPU_DQE.xls"
With Sheets("BPU")
Ligvid = .Columns("A").Find(what:="", after:=.Range("A1")).Row
.Cells(Ligvid, "A").Resize(Nbre, 3) = T_oui
.Activate
End With
With Sheets("DQE")
Ligvid = .Columns("A").Find(what:="", after:=.Range("A1")).Row
.Cells(Ligvid, "A").Resize(Nbre, 3) = T_oui
.Activate
End With
End Sub