Transfert de données d'un classeur à l'autre [Résolu/Fermé]

- - Dernière réponse :  bm44000 - 6 avril 2012 à 08:41
Bonjour,

Avis aux experts de VBA !
J'ai deux fichiers: Fichier A et Fichier B.
J'ai 10 contenus de cellule du fichier A que je veux envoyer (copier/coller) dans le fichier B.
Par exemple en cellule B3 du fichier A j'ai le nom d'un client que je veux copier coller dans le fichier B dans la colonne intitulée "Nom du client" dans une cellule vide (à la suite d'une série de cellules remplies). Je veux faire cela pour 10 autres cellules.

Pouvez vous m'indiquer la démarche à suivre, les fonctions à utiliser ? Et si possible le code associé !!

Merci d'avance,

Cordialement,
bm44000
Afficher la suite 

10 réponses

Meilleure réponse
3
Merci
J'ai deux fichiers: Fichier A et Fichier B.
- Nom du fichier A [exemple : Classeur1.xls] : DRAFT Enregistrement projet.xls
- Chemin d'accès complet au fichier A [exemple : "C:\Travail\toto\Excel\"] :D:\Documents and Settings\bmatte\Bureau\Enregistrement de projets

J'ai 10 contenus de cellule du fichier A que je veux envoyer (copier/coller) dans le fichier B.
- fichier A : adresses complètes (nom de la feuille + adresse cellule) des 10 cellules à copier, [par exemple : feuil1!A2] : ce sont des cellules fusionnées
Contenu 1 : 'Demande d''enregistrement'!S23:W23
Contenu 2 : 'Demande d''enregistrement'!G23:O23
Contenu 3 : 'Demande d''enregistrement'!AD19:AJ19
Contenu 4 : 'Demande d''enregistrement'!G21:N21
Contenu 5 : 'Demande d''enregistrement'!K29:O29
Contenu 6 : 'Demande d''enregistrement'!AD40:AJ40
Contenu 7 : 'Demande d''enregistrement'!B73:AJ77
Contenu 8 : 'Demande d''enregistrement'!F15:P15

- fichier B : adresses complètes (nom de la feuille + adresse cellule) des 10 cellules ou coller.
Chemin d'accès au fichier B : M:\SPEC- \ENCOURS\TOOLS\Enregistrement commandes
Pour le contenu 1 : Feuille 'En cours'! / Colonne intitulée « A » en cellule B1
Pour le contenu 2 : Feuille 'En cours'! / Colonne intitulée « B » en cellule C1
Pour le contenu 3 : Feuille 'En cours'! / Colonne intitulée « C » en cellule E1
Pour le contenu 4 : Feuille 'En cours'! / Colonne intitulée « D » en cellule F1
Pour le contenu 5 : Feuille 'En cours'! / Colonne intitulée « E » en cellule G1
Pour le contenu 6 : Feuille 'En cours'! / Colonne intitulée « F » en cellule H1
Pour le contenu 7 : Feuille 'En cours'! / Colonne intitulée « G » en cellule J1
Pour le contenu 8 : Feuille 'En cours'! / Colonne intitulée « H » en cellule O1

Pour les adresses de cellules, il y a deja des valeurs dans les cellules, il faut donc que le contenu 1 se mette dans une case vide et que les autres contenus se mettent sur la même ligne.

Est -il possible d'ajouter un bouton sur le fichier A, afin que au clic, cela transfère les données vers le fichier B

Merci bcp d'avance pour ton aide.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62637 internautes nous ont dit merci ce mois-ci

Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2246
0
Merci
Bonjour,
Peut être un début de piste ici...
0
Merci
Merci pour ta réponse mais je suis un peu novice sous VBA.
Est ce que ton exemple pourrait plus se rapprocher de ma demande stp ?
Merci bcp d'avance,
bm44000
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2246
0
Merci
Est ce que ton exemple pourrait plus se rapprocher de ma demande stp ?
Oui bien sur. mais j'ai besoin de précisions :

J'ai deux fichiers: Fichier A et Fichier B.
- Nom du fichier A [exemple : Classeur1.xls]
- Chemin d'accès complet au fichier A [exemple : "C:\Travail\toto\Excel\"]

J'ai 10 contenus de cellule du fichier A que je veux envoyer (copier/coller) dans le fichier B.
- fichier A : adresses complètes (nom de la feuille + adresse cellule) des 10 cellules à copier, [par exemple : feuil1!A2]
- fichier B : adresses complètes (nom de la feuille + adresse cellule) des 10 cellules ou coller.
Cordialement,
Franck P
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2246
0
Merci
Salut,

Non je ne t'ai point oublié.
N'hésite pas à relancer.....

Exemple classeurA
Exemple ClasseurB

Dans le classeur "source" :
- En A1 : le chemin d'accès complet au fichier destination avec \ à la fin, sans le nom du classeur!
- En A2 : le nom du classeur avec extension (.xls, .xlsx...)
- dessines un bouton sur ta feuille, double clic dessus et copies colles ce code :

Private Sub CommandButton1_Click()
Dim Fichier As String, Tabl(7), Lig As Long

With Sheets("Demande d''enregistrement")
    Fichier = .Range("A1") & .Range("A2")
    Tabl(0) = .Range("S23").Value
    Tabl(1) = .Range("G23").Value
    Tabl(2) = .Range("AD19").Value
    Tabl(3) = .Range("G21").Value
    Tabl(4) = .Range("K29").Value
    Tabl(5) = .Range("AD40").Value
    Tabl(6) = .Range("B73").Value
    Tabl(7) = .Range("F15").Value
End With
Workbooks.Open Fichier
With ActiveWorkbook.Worksheets("En cours")
    Lig = .Range("B" & Rows.Count).End(xlUp).Row + 1
    .Cells(Lig, 2) = Tabl(0)
    .Cells(Lig, 3) = Tabl(1)
    .Cells(Lig, 5) = Tabl(2)
    .Cells(Lig, 6) = Tabl(3)
    .Cells(Lig, 7) = Tabl(4)
    .Cells(Lig, 8) = Tabl(5)
    .Cells(Lig, 10) = Tabl(6)
    .Cells(Lig, 15) = Tabl(7)
End With
With ActiveWorkbook
    .Save
    .Close
End With
End Sub


Ferme visual basic, arrête le mode création (icône en forme d'équerre + règle dans la barre d'outils boite à outils controles) et testes.
0
Merci
Merci beaucoup !
Mais ton code ne comporte pas les noms des deux fichier A et B ni les noms des entêtes de colonne pour savoir dans quelle colonne coller la valeur.
Quelles lignes de ton code représente ces données ?
Merci !
Bien cordialement,
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2246
0
Merci
Avec la feuille "Demande d''enregistrement", le chemin d'accès du fichier de destintaion des données en A1 (.Range("A1")) et le nom du fichier en A2 (.Range("A2")) :
With Sheets("Demande d''enregistrement") 
    Fichier = .Range("A1") & .Range("A2")


toujours dans la même feuille on "copie" dans une variable tableau les données contenues dans les plages que tu m'as donné... :
    Tabl(0) = .Range("S23").Value 
    Tabl(1) = .Range("G23").Value 
    Tabl(2) = .Range("AD19").Value 
    Tabl(3) = .Range("G21").Value 
    Tabl(4) = .Range("K29").Value 
    Tabl(5) = .Range("AD40").Value 
    Tabl(6) = .Range("B73").Value 
    Tabl(7) = .Range("F15").Value


On ouvre le classeur de destination des données :
Workbooks.Open Fichier


Dans la feuille "En cours" du classeur de destination on détermine la ligne de la première cellule vide dans la colonne B :
With ActiveWorkbook.Worksheets("En cours") 
    Lig = .Range("B" & Rows.Count).End(xlUp).Row + 1


On colle, dans cette ligne (Lig) les données collectées dans les colonnes 2, 3, 5, 6, 7, 8, 10, 15 soit B, C, E, F, G, H, J et O comme convenu... :
    .Cells(Lig, 2) = Tabl(0) 
    .Cells(Lig, 3) = Tabl(1) 
    .Cells(Lig, 5) = Tabl(2) 
    .Cells(Lig, 6) = Tabl(3) 
    .Cells(Lig, 7) = Tabl(4) 
    .Cells(Lig, 8) = Tabl(5) 
    .Cells(Lig, 10) = Tabl(6) 
    .Cells(Lig, 15) = Tabl(7)


OK Comme ça??

Cordialement,
Franck P
0
Merci
Merci ca marche bien !
J'aime bien ta facon de coder.
Est ce que tu aurais un bouquin ou une liste de codes à me fournir récapitulant les principales fonctions?
J'aimerais ajouter des conditions if ...
Merci !
bm44000
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2246
0
Merci
Bonjour !
J'ai encore un souci que je n'arrive pas à résoudre.
J'ai toujours deux fichiers excel A et B.

Le fichier A est tjrs ouvert. Je souhaite aller dans le fichier B pour récupérer des données avec la fonction vlookup mais je n'arrive pas à la faire marcher. par cette formule, je souhaite que des cellules de mon fichier A reste constamment à jour en un clic.

Merci bcp pour ton aide.

Bien cordialement,

bm44000