Liste de donnée.

Valent1980

XLDnaute Nouveau
Bonjour tout le monde. J ai un petit soucis sous exel, est il possible de m'aider ?
Situation: J ai en fait un classeur A sur mon disque C: ou j ai une feuille nomee contact avec en colone A les noms, B prénom, C adresse, ....
Et un classeur B sur mon disque D avec la même feuille nommée contact....
Problème: quand je modifie une adresse ou ajoute un nouveau contact dans le classeur A je voudrais qu'il s ajoute automatiquement dans le classeur B. J ai essayé un code de boisgautier mais celui ne copié que les données de une colone. Moi je souhaiterais qu'il me copie les données de 11 colonnes. Comment puis je faire ?
D'avance merci :)
 

JBOBO

XLDnaute Accro
Re : Liste de donnée.

Bonjour,

Si j'ai bien compris, tu souhaites en fait avoir une copie à jour de ton fichier contact de ton classeur A en C: sur ton classeur B en D. Si c'est ça à mon avis une simple macro enregistrer avec l'enregistreur de macro devrait faire l'affaire. En gros, tu ouvres ton fichier A. Tu cliques sur l'enregistreur de macro, et tu executes la manip suivante. tu selectionnes toute ta feuille où se trouve les données, tu fais copier, tu ouvres ensuite ton classeur B, tu te positionne en A1 de la feuille sur laquelle tu veux copier tes données, tu fais coller (ou collage spécial selon le besoin.), tu enregistres ton fichier B, tu le fermes, tu reviens sur ton classeur A, tu arretes l'enregistreur de macro. Tu crée un bouton pour pouvoir appeler ta macro et à chaque fois que tu rajoutes des données, tu cliques sur ce boutons et ça mettra à jour le classeur B.
 

Valent1980

XLDnaute Nouveau
Re : Liste de donnée.

En fait, ce n'est pas vraiment cela, ou alors je n'ai pas compris.

Voir fichier en annexe pour exemple:

J'ai le fichier AdresseSource.xls qui est le fichier adresse de reference, la ou je rentre toute les données de contact. Celui ci se trouvera sur le disque reseau J:/

Le deuxième fichier client.xls, est un classeur pouvant se trouver sur n'importe quel pc. Et qui se met à jour suivant les données entrée dans le classeur adressesource.xls

un exemple concret, deux secretaire travaille dans le même batiment, on un fichier exel avec des macro qui font des mails automatique. Ce fichier est donc personel. une chose est commune, c'est la liste des contacts. ce fichier contact est donc sur le reseau. Soit ... si une personne modifie ou entre une nouvelle adresse dans le fichier source, il faut qu'il se mette à jour dans les fichiers des secretaires.

J'ai repris le codage de boisgautier et l'ai un peu modifié. celui ci fonctionne, à la seule condition que les fichiers soit dans le même dossier.
Peu être que cela est un mauvais codage je ne sais pas, je ne sais pas ou spécifier le chemin pour le fichier source.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  If Target.Address = "$F$2" Then
   repertoire = ThisWorkbook.Path & "\"
   Dim rs As ADODB.Recordset
   
   Set cnn = New ADODB.Connection
   cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire & "\" & "AdresseSource.xls"
   
   Set rs = cnn.Execute("SELECT Name FROM BD_Name")
   Sheets("Adresses").[A2:A100].ClearContents
   Sheets("Adresses").[A2].CopyFromRecordset rs
   
   Set rs = cnn.Execute("SELECT Street FROM BD_Street")
   Sheets("Adresses").[B2:B100].ClearContents
   Sheets("Adresses").[B2].CopyFromRecordset rs
   
   Set rs = cnn.Execute("SELECT PCode FROM BD_PC")
   Sheets("Adresses").[C2:C100].ClearContents
   Sheets("Adresses").[C2].CopyFromRecordset rs
   
   Set rs = cnn.Execute("SELECT Town FROM BD_Town")
   Sheets("Adresses").[D2:D100].ClearContents
   Sheets("Adresses").[D2].CopyFromRecordset rs
   
   Set rs = cnn.Execute("SELECT Country FROM BD_Country")
   Sheets("Adresses").[E2:E100].ClearContents
   Sheets("Adresses").[E2].CopyFromRecordset rs
   
   Set rs = cnn.Execute("SELECT Telephone FROM BD_Tel")
   Sheets("Adresses").[F2:F100].ClearContents
   Sheets("Adresses").[F2].CopyFromRecordset rs
   
   Set rs = cnn.Execute("SELECT FAX FROM BD_Fax")
   Sheets("Adresses").[G2:G100].ClearContents
   Sheets("Adresses").[G2].CopyFromRecordset rs
   
   Set rs = cnn.Execute("SELECT Accreditation FROM BD_Acc")
    Sheets("Adresses").[H2:H100].ClearContents
   Sheets("Adresses").[H2].CopyFromRecordset rs
   
   Set rs = cnn.Execute("SELECT EMail1 FROM BD_Mail1")
   Sheets("Adresses").[I2:I100].ClearContents
   Sheets("Adresses").[I2].CopyFromRecordset rs
   
   Set rs = cnn.Execute("SELECT EMail2 FROM BD_Mail2")
   Sheets("Adresses").[J2:J100].ClearContents
   Sheets("Adresses").[J2].CopyFromRecordset rs
   
   Set rs = cnn.Execute("SELECT Contact FROM BD_Contact")
    Sheets("Adresses").[K2:K100].ClearContents
   Sheets("Adresses").[K2].CopyFromRecordset rs
   
   Set rs = cnn.Execute("SELECT Phone2 FROM BD_Phone2")
   Sheets("Adresses").[L2:L100].ClearContents
   Sheets("Adresses").[L2].CopyFromRecordset rs
   
  End If
End Sub

Voila, je pense que je dois modifier cette ligne, mais par quoi ???

Code:
   cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire & "\" & "AdresseSource.xls"
 

Pièces jointes

  • AdresseSource.xls
    32 KB · Affichages: 37
  • Client.xls
    58 KB · Affichages: 44
  • Client.xls
    58 KB · Affichages: 43
  • Client.xls
    58 KB · Affichages: 42

Discussions similaires

Réponses
0
Affichages
263

Statistiques des forums

Discussions
312 697
Messages
2 091 064
Membres
104 749
dernier inscrit
Boussou