Copie cellules entre fichiers excel avec condition

Résolu
jonew Messages postés 9 Date d'inscription dimanche 20 octobre 2013 Statut Membre Dernière intervention 22 octobre 2013 - 20 oct. 2013 à 01:27
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 22 oct. 2013 à 21:26
Bonjour,
Je suis débutant dans l'utilisation de macro Excel et je dois faire l'opération suivante :
J'ai 2 fichiers :
* a-fichier session test, avec 3 colonnes: « Presentation _name » - « abstract text » et « code »
* b-fichier speaker test, avec 3 colonnes: "Speaker name" - "Abstract text Speaker" - "code"
Je voudrai copier le contenu de la colonne "Abstract text speaker" du fichier 2 dans la colonne "Abstract text" du fichier 1 à condition que le code soit le même dans les 2 fichiers.
Comment faire.
Merci par avance.

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 235
Modifié par ucfoutu le 20/10/2013 à 08:11
Bonjour,
Il te suffit donc de :
- ajouter les deux colonnes nécessaires à ton fichier 1
-parcourir en boucle le fichier 2 pour y lire chaque code
- pour chaque code ainsi lu utiliser la méthode Find (rubrique Range.find dans ton aide VBVA) pour y repérer (si présent) le même code en la colonne des codes du Fichier 1
- ajouter à cette ligne, dans les colonnes ajoutées au fichier 1, les données correspondantes des colonnes "Speaker name" et "Abstract text Speaker" du fichier 2

C'est là la réponse à :
"Comment faire. "
Reviens avec ton code d'essai écrit sur ces bases, si encore en difficulté
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 235
20 oct. 2013 à 08:34
PS : il va de soi que ton fichier 2 ne doit comporter aucun dans sa colonne des codes. Mais je pense que tel est bien le cas (sinon : grave défait de conception).
0
jonew Messages postés 9 Date d'inscription dimanche 20 octobre 2013 Statut Membre Dernière intervention 22 octobre 2013
20 oct. 2013 à 09:44
Je ne suis pas sur d'avoir compris ta deuxieme remarque? Voici la tete de mes 2 fichiers
Fichier 1 - a-fichier session test
Presentation _name / abstract_text / code
presentation_1 ................... code 1
presentation_2 ................... code 2
presentation_5 ................... code 5

Fichier 2 - b-fichier speaker test
Speaker_name / Abstract_text_Speaker / code
speaker_1 text 1 du speaker 1 code 1
speaker_1 text 2 du speaker 1 code 2
speaker_3 text 3 du speaker 3 code 3
speaker_5 text 5 du speaker 5 code 5

L'objectif est de copier "textx du speaker x" du fichier 2 dans le fichier 1 quand il trouve la meme valeur code dans les 2 fichiers. Il peut y a voir le cas ou un speaker fait 2 presentations. Y a t-il un pb de conception ?

D'autre part, c'est la premiere fois que je code qq chose en VBA. Peut tu me donner un lien sur VBA pour faire mon aprentissage et demarrer l'ecriture de ce programme.

Merci par avance.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 235
20 oct. 2013 à 10:31
"D'autre part, c'est la premiere fois que je code qq chose en VBA. Peut tu me donner un lien sur VBA pour faire mon aprentissage et demarrer l'ecriture de ce programme. "
Tu trouveras plein de cours sur la toile.
Je n'en ai quant à moi suivi aucun. L'aide VBA m'a amplement suffi
"Il peut y a voir le cas ou un speaker fait 2 presentations. Y a t-il un pb de conception ? "
Et où mets-tu alors (dans ce cas), la seconde présentation ? (cette question est en soi la réponse à ton interrogation).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jonew Messages postés 9 Date d'inscription dimanche 20 octobre 2013 Statut Membre Dernière intervention 22 octobre 2013
22 oct. 2013 à 09:25
Re-bonjour,

Merci pour les informations precedentes. Finalement apres bien des efforts j'ai reussi a faire tourner ce script pour mon cas de figure. La colonne "code" commune aux 2 tableaux etant en premiere colonne.
Mais j'ai un autre probleme. J'ai voulu tester dans la boucle (if z = ....) que si une cellule de la colonne "code" du 1er fichier etait vide il fallait continuer le traitement.... et je n'arrive pas a introduire ce test. Sinon le code s'arrete des qu'il trouve une cellule vide. Pouvez vous m'aider.

Voici le code utilise:

Sub AddAbstractTextToSession()
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, i1, i2, i3, k, kk, z
Set ws1 = Worksheets(1)
Set ws2 = Worksheets(2)
Set ws3 = Worksheets(3)
i1 = ws1.Range("A1").End(4).Row
i2 = ws2.Range("A1").End(4).Row
With ws1
For k = 1 To i1
z = .Range("A" & k)
For kk = 1 To i2
If z = ws2.Range("A" & kk) Then
ws3.Range("A" & i3 + 1) = z
ws3.Range("B" & i3 + 1) = .Range("B" & k)
ws3.Range("C" & i3 + 1) = ws2.Range("C" & kk)
ws3.Range("D" & i3 + 1) = ws2.Range("B" & kk)
ws3.Range("E" & i3 + 1) = ws2.Range("C" & kk)
i3 = i3 + 1
End If
Next
Next
End With
End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 235
Modifié par ucfoutu le 22/10/2013 à 10:30
i1 = ws1.Range("A1").End(4).Row
à remplacer par :
i1 = ws1.Range("A" & rows.count).end(xlup).row

PS : présente toujours ton code entre balises code, s'il te plait)
2ème icône à partir de la droite.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
jonew Messages postés 9 Date d'inscription dimanche 20 octobre 2013 Statut Membre Dernière intervention 22 octobre 2013
22 oct. 2013 à 10:33
Merci pour l'info.
Mais je n'ai pas compris ton commentaire:
1 - présente toujours ton code entre balises code ???
2 - 2ème icône à partir de la droite ??? quel icone ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 235
Modifié par ucfoutu le 22/10/2013 à 10:48
Au dessus de la zone de saisie (là où tu frappes a réponse) : tu as des petites icônes, non ?
Balaye-les avec ta souris. L'une d'entre elles "dit" code :
Elle sert à mettre ton code en forme et donc à en garder l'indentation et donc la lisibilité (sélection de ton code puis un clic sur cette icône)

observe la différence de lisibilité entre (exemple) :

for i = 0 tp 10
for j = 1 to 5
for k = 2 to 7
......
next
next
next
et
for i = 0 tp 10
for j = 1 to 5
for k = 2 to 7
......
next
next
next
0
jonew Messages postés 9 Date d'inscription dimanche 20 octobre 2013 Statut Membre Dernière intervention 22 octobre 2013
22 oct. 2013 à 10:50
OK j'ai compris et teste. Je comprends que le code est plus lisible.
Merci encore
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 235
22 oct. 2013 à 10:52
Si problème résolu, sujet à clore, s'il te plait (un clic sur le tag "Résolu", au niveau de ton premier message).
0
jonew Messages postés 9 Date d'inscription dimanche 20 octobre 2013 Statut Membre Dernière intervention 22 octobre 2013
22 oct. 2013 à 10:54
c'est fait
0