XL 2016 transfert de données d'un onglet vers un autre classeur sous conditions

dindin

XLDnaute Occasionnel
bonjour le Forum
j'ai un onglet BDD dans un classeur 1.
je suis amené tous les jours à le copier sous conditions vers un autre classeur 2 sous condition:
copier que les lignes dont la colonne A contient : à facturer .
copie à l'identique c'est à dire la mise en page et formule et couleur ...etc
y a t'il moyen de faire cette manip via VBA discrètement et sans ouvrir le classeur.
pour info:
les 2 classeurs sont enregistrés dans le même fichier.
les 2 classeurs ne contiennent pas de mot de passe
je vous joins le classeur source.
 

Pièces jointes

  • Base de données 2020.xlsm
    36.1 KB · Affichages: 9

danielco

XLDnaute Accro
Je ne suis pas sûr du tout de savoir le faire. Esr-ce qu'on ne peut pas l'ouvrir de façon invisible le temps de la copie ? On peut alors copier les couleurs, les formules et tout ? Il me faut alors connaître le nom du classeur ainsi que celui de la feuille dans laquelle les données sont copiées. Et savoir quelle genre de copie : copie simple ? Copie en ajout des données ?

Daniel
 

dindin

XLDnaute Occasionnel
Je ne suis pas sûr du tout de savoir le faire. Esr-ce qu'on ne peut pas l'ouvrir de façon invisible le temps de la copie ? On peut alors copier les couleurs, les formules et tout ? Il me faut alors connaître le nom du classeur ainsi que celui de la feuille dans laquelle les données sont copiées. Et savoir quelle genre de copie : copie simple ? Copie en ajout des données ?

Daniel
Ok
Le 2ème classeur : copie 2020
Onglet : bdd
Copie en effaçant la feuille de destination à chaque fois et recopie de la base avec les données.
 

danielco

XLDnaute Accro
Ceci copie aussi les couleurs et les formules :

VB:
Sub Copie()
  Dim Wbk As Workbook, Plage As Range
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Set Wbk = GetObject(ThisWorkbook.Path & "\Copie 2020.xlsm")
  Application.EnableEvents = True
  With Sheets("BDD")
    .Cells.AutoFilter 1, "à facturer"
    Set Plage = .AutoFilter.Range
  End With
  With Wbk.Sheets("BDD")
    .Cells.ClearContents
    Plage.Copy .[A1]
  End With
  Wbk.Close True
  Cells.AutoFilter
  Application.ScreenUpdating = True
End Sub

Important : Il faut mettre cette macro dans le module ThisWorkbook du classeur Copie 2020 :

Code:
Private Sub Workbook_Open()
  Windows(ThisWorkbook.Name).Visible = True
End Sub
 

dindin

XLDnaute Occasionnel
Ceci copie aussi les couleurs et les formules :

VB:
Sub Copie()
  Dim Wbk As Workbook, Plage As Range
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Set Wbk = GetObject(ThisWorkbook.Path & "\Copie 2020.xlsm")
  Application.EnableEvents = True
  With Sheets("BDD")
    .Cells.AutoFilter 1, "à facturer"
    Set Plage = .AutoFilter.Range
  End With
  With Wbk.Sheets("BDD")
    .Cells.ClearContents
    Plage.Copy .[A1]
  End With
  Wbk.Close True
  Cells.AutoFilter
  Application.ScreenUpdating = True
End Sub

Important : Il faut mettre cette macro dans le module ThisWorkbook du classeur Copie 2020 :

Code:
Private Sub Workbook_Open()
  Windows(ThisWorkbook.Name).Visible = True
End Sub
Merci je regarde demain et vous tiens au courant
 

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 963
Membres
103 068
dernier inscrit
Strogoff