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.
Merci par avance,

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

6essai.xlsx (10.61 Ko)
7final.xlsx (9.99 Ko)
Rechercher des sujets similaires à "vba conservation mise forme rapatriement donnees"