MAJ base de données...

Fernandez67

XLDnaute Nouveau
Bonsoir à tous :woohoo:

J'aimerai pouvoir copier les infos renseignées dans la plage A09:E21 (cf fichier joint) vers un fichier xls fermé.

Cette base serait mise à jour au fur et a mesure des ajouts dans le fichier maître.

Cela est il possible ?

J'ai tenté la solution Assisant Modele de base de donnée, mais cela n'est pas très concluant...

Auriez vous des pistes svp

Cordialement
 

Fernandez67

XLDnaute Nouveau
Oups j'ai oublié le fichier joint...

[file name=MAJBase_20050802181425.zip size=36803]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/MAJBase_20050802181425.zip[/file]
 

Pièces jointes

  • MAJBase_20050802181425.zip
    35.9 KB · Affichages: 13

tontoncarton

XLDnaute Occasionnel
hello :)

voila j'espere que ca t'ira

With Sheets('feuille a copier').Activate
Worksheets('feuille a copier ').Range('A09:e21').Copy
Workbooks.Open ('C:\\destination')
Sheets('feuille pour coller').Range('A:e').PasteSpecial
ActiveWorkbook.Save
ActiveWorkbook.Close
end with

ensuite si tu veux mettre tes infos a la suite d'une liste deja existante alors fait ton coller en recherchant la derniere cellule vide de la colonne A

@ +
 

Fernandez67

XLDnaute Nouveau
Tontoncarton,

J'ai un peu modifié le code... et ca marche (c'est en test, les cellules et quelques trucs vont changer).


Worksheets('Feuil1').Range('B13:M25').Copy
Workbooks.Open ('C:\\ ...\\Bureau\\Base')
Sheets('Feuil1').Select
Range('A3:L15').Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=-3
ActiveWorkbook.Save
ActiveWorkbook.Close

Par contre, quel est la commande pour ajouter les infos copié à la suite dans le fichier de destination sans écraser les précedentes ?

De plus, j'aimerai envoyer ce fichier à quelqu'un, mais le chemin ou se trouve le fichier va changer, donc cela risque de bugger.

Comment puis je résoudre ce problème ?

Cordialement
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Fernadez, Tonton, le Forum

En premier lieu pour résoudre l'incrémentation de lignes dans le Ficher de réception 'Database.xls' , je propose un code un peu plus structuré :

Const CheminDatabase As String = 'C:\Documents and Settings\Thierry\My Documents\Database.xls'


Sub CopyDataToDatabase()
Dim WBSource As Workbook, WSSource As Worksheet
Dim WBCible As Workbook, WSCible As Worksheet
Dim RSource As Range, RCible As Range

Set WBSource = ThisWorkbook
Set WSSource = WBSource.Sheets('Feuil1')
Set RSource = WSSource.Range('B13:M25')

Set WBCible = Workbooks.Open(CheminDatabase)
Set WSCible = WBCible.Sheets('Feuil1')

Set RCible = WSCible.Range('A65536').End(xlUp)(2)

RSource.Copy RCible
WBCible.Close
True


End Sub

Ensuite si ce Fichier doit circuler, il faudra de toute manière que le Fichier 'Database.xls' existe... (Ou bien le générer à la volé)...

Enfin en partant du principe qu'il existe, il faudra dire au destinataire de dézipper les Deux fichier dans le même répertoire... Si cette condition est remplie on peut enviager ceci comme code :

Option Explicit

Sub CopyDataToDatabase()
Dim WBSource As Workbook, WSSource As Worksheet
Dim WBCible As Workbook, WSCible As Worksheet
Dim RSource As Range, RCible As Range
Dim CheminDatabase As String

CheminDatabase = ThisWorkbook.Path & '\Database.xls'

Set WBSource = ThisWorkbook
Set WSSource = WBSource.Sheets('Feuil1')
Set RSource = WSSource.Range('B13:M25')

Set WBCible = Workbooks.Open(CheminDatabase)
Set WSCible = WBCible.Sheets('Feuil1')

Set RCible = WSCible.Range('A65536').End(xlUp)(2)

RSource.Copy RCible
WBCible.Close
True


End Sub


Bon Après Midi
[ol]@+Thierry[/ol]
 

Fernandez67

XLDnaute Nouveau
Super Thierry ton code marche au poil !!!

Je ne comprend pas le passage suivant :

'Ensuite si ce Fichier doit circuler, il faudra de toute manière que le Fichier \\'Database.xls\\'
existe... (Ou bien le générer à la volé)...'


Ok pour envoyer le fichier existant qui sera par la suite 'updaté' par le programme. Reste un problème, le chemin du fichier sera sans doute différent d'un utilisateur à l'autre.

'Enfin en partant du principe qu'il existe, il faudra dire au destinataire de dézipper les Deux
fichier dans le même répertoire... Si cette condition est remplie on peut enviager ceci comme code :'



C'est cette version du code que je privilegie, par contre, je ne peux pas demander à l'utilisateur lambda de renseigner dans le code le chemin du fichier une fois le tout dézippé. J'ai du coup un problème pour que le code VB trouve le chemin du fichier Database.






Code:
Option Explicit 

[b][i]Pourquoi 'Option Explicit' quelle est l'incidence sur le code ? [/i][/b]

Sub CopyDataToDatabase() 
Dim WBSource As Workbook, WSSource As Worksheet 
Dim WBCible As Workbook, WSCible As Worksheet 
Dim RSource As Range, RCible As Range 
Dim CheminDatabase As String 

CheminDatabase = ThisWorkbook.Path & '\\Database.xls' 

[[b]i]C'est là qu'interviens le fait de dézippé dans le même repertoir ?[/i][/b]

Set WBSource = ThisWorkbook 
Set WSSource = WBSource.Sheets('Feuil1') 
Set RSource = WSSource.Range('B13:M25') 

Set WBCible = Workbooks.Open(CheminDatabase) 
Set WSCible = WBCible.Sheets('Feuil1') 

Set RCible = WSCible.Range('A65536').End(xlUp)(2) 

RSource.Copy RCible 
WBCible.Close True 


End Sub


Encore une question, la code est 'pondu' de tête ? Sans te referer à une macro ou je ne sais quoi d'autre, j'en suis au stade de 'tenter' d'adapter les bouts de code que je trouve par ci par là
:woohoo:
 

Discussions similaires

Statistiques des forums

Discussions
312 487
Messages
2 088 824
Membres
103 971
dernier inscrit
abdazee