vba: rechercher et récupérer les valeurs correspandantes

nayrous

XLDnaute Nouveau
bonjour le forum
Pour commencer je vais tenter de cadrer ma demande :
J'essaie de créer un code vba qui me permet de lier des feuilles excel d'un même classeur et les afficher dans un tableau récap
-copier la colonne "A" (extrémité) de la feuille extr dans la colonne "B" de recap
-La colonne est rempli
jusqu'ici mon code fonctionne;
-à partir de recap(colonne "A" que j'ai récupérée), je cherche dans la colonne "A"(extrémité) de la feuille acc la référence-acc de chaque extrémité(colonne C)
- valeur trouvée: retourner la référence-acc dans recap dans la colonne "D".
ici je suis bloquée
Ci-dessous voici une partie de mon code
Option Explicit
Sub COPIER()
Dim SheetSource As Worksheet ' la feuille source
Dim SheetTarget As Worksheet ' la feuille cible
Dim LineSource As Range ' la ligne source courante
Dim CellTarget As Range ' la ligne cible courante (retenir la première cellule suffit en fait)
Dim ZoneSource As Range ' la plage de cellules à considérer

'copier la colonne A du fichier extr vers la colonne B de fichier recap
Set SheetSource = Worksheets("extr")

Set SheetTarget = Worksheets("recap")

Set CellTarget = SheetTarget.Cells(2, "B")
Set ZoneSource = SheetSource.Range("A2:A1100")

For Each LineSource In ZoneSource.Rows
' Il faut copier la ligne vers la cible
LineSource.Copy Destination:=CellTarget

' Et on déplace la cible pour la prochaine fois !
Set CellTarget = CellTarget.Offset(1)
Next
End Sub
je suis bloquée sur "la recherche"
Pour la recherche j'utilise find ou bien je compare les deux cases des 2 feuilles
ma question: Quand la valeur est trouvée comment je recopie sa référence de la même ligne?
ENTIREROW copie toute la ligne et jai besoin que d'une colonne
Merci d'avance

cordialement
 

Modeste

XLDnaute Barbatruc
Re : vba: rechercher et récupérer les valeurs correspondantes

Bonjour nayrous,

... Et à un moment quelconque tu envisages de fournir un fichier exemple ... ou alors on doit essayer d'imaginer le contenu, la structure et les particularités :confused:

En imaginant que tu répondes à cette première demande, si quelqu'un peut proposer une solution par formule, tu es preneuse?
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : vba: rechercher et récupérer les valeurs correspandantes

Bonjour Nayrous, bonjour le forum,

Sans fichier exemple il nous faut tout recréer nous-même, pour d'abord comprendre, puis ensuite t'expliquer. Fais un effort, commence par lire la
Lien supprimé...
 

nayrous

XLDnaute Nouveau
Re : vba: rechercher et récupérer les valeurs correspandantes

Merci pour la réponse
D'accord je vous joins d'un fichier exemple
j'ai besoin d'un programme vba c'est ce qu'on m'a exigée de faire
 

Pièces jointes

  • copierrecherche.xlsx
    14.6 KB · Affichages: 62

Robert

XLDnaute Barbatruc
Repose en paix
Re : vba: rechercher et récupérer les valeurs correspandantes

Bonjour le fil, bonjour le forum,

Hmmmm... le code que tu places dans l'exemple ne correspond pas à l'exemple lui même (nom des onglets...). Quand je te demandais un effort tu vois, que c'était pas pour rien...
Une proposition avec le code ci-dessous :
Code:
Public Sub Macro1()
Dim o1 As Object 'déclare la variable o1 (Onglet1)
Dim o2 As Object 'déclare la variable o2 (Onglet2)
Dim o3 As Object 'déclare la variable o3 (Onglet3)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim r As Range 'déclare la variable r (Recherche) 

Set o1 = Sheets("recap") 'définit l'onglet o1
Set o2 = Sheets("extre") 'définit l'onglet o2
Set o3 = Sheets("accessoire") 'définit l'onglet o3
dl = o2.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne A de l'onglet o2
Set pl = o2.Range("A2:A" & dl) 'définit la plage pl
pl.Copy o1.Range("B3") 'copie la plage pl et la colle dans B3 de l'onglet o1
Set pl = o1.Range("B3:B" & dl + 1) 'redéfinit la plage pl
For Each cel In pl 'boucle sur toutes les cellule cel de la plage pl
    Set r = o3.Columns(1).Find(cel.Value, , xlValues, xlWhole) 'définit la recherche r
    'si il existe au moins une occurrence trouvée dans la colonne A de l'onglet o3, récupère la référence
    If Not r Is Nothing Then cel.Offset(0, 2).Value = r.Offset(0, 2).Value
Next cel 'prochaine cellule de la boucle
End Sub
tu adapteras les noms des onglets car j'en perd mon latin...
 

Discussions similaires

Réponses
7
Affichages
470
Réponses
0
Affichages
214

Statistiques des forums

Discussions
313 138
Messages
2 095 627
Membres
106 308
dernier inscrit
F.DIAS