Rechercher par macro une valeur et afficher la correspondance.

klorane

XLDnaute Occasionnel
Bonsoir Forum,

J'ai une liste (voir fichier joint).

Je souhaiterais par une macro faire une recherche des valeurs situées en colonne A dans la colonne C et suite à ça remplacer la valeur située en A par la correspondance de colonne B

Ex pour le fichier joint :

La première valeur en A2 est 0.
On recherche 0 en colonne C.
La correspondance à 0 est en colonne B : Marque
On remplace 0 (A2) par : Marque

etc..

Après le passage de la macro on devrait à la fin obtenir le meme tableau à droite.

Nota : Je ne connais pas encore la longueur de la liste donc soit aller jusqu'a A65535 ou si cellule vide en A arret de la macro.

Ya til quelqu un qui serait en mesure de m aider là dessus.

Merci

Klorane
 

Pièces jointes

  • liste.xlsx
    10 KB · Affichages: 48
  • liste.xlsx
    10 KB · Affichages: 57
  • liste.xlsx
    10 KB · Affichages: 54

Si...

XLDnaute Barbatruc
Re : Rechercher par macro une valeur et afficher la correspondance.

salut

un exemple dans le Module de la feuille indépendamment de la colonne C -l'ordre correspondant à celui du tableau (Array),
Code:
Option Explicit
Sub Marque()
  Dim R As Range
  For Each R In Range("A2", [A65000].End(xlUp))
    R = Array("Marque", "Renault", "Peugeot", "BMW")(R)
  Next
End Sub
 

klorane

XLDnaute Occasionnel
Re : Rechercher par macro une valeur et afficher la correspondance.

Merci Si,

Mais je ne peux pas uttiliser ça car je vais avoir un grand nombre de "Références"....Près de 20000. Le tableau que j'ai fourni est juste un début de support.

Si j inscris les 20000 ref derriere Array la taille de la ligne va etre enorme et ingérable.

Mais je garde ça dans le cas d une petite recherche de correspondances.

klorane
 

Si...

XLDnaute Barbatruc
Re : Rechercher par macro une valeur et afficher la correspondance.

re

alors peut-être ainsi
Code:
Option Explicit
Sub Marque()
  Dim R As Range
  Application.ScreenUpdating = 0
  For Each R In Range("A2", [A65000].End(xlUp))
    If R = 0 Then
      R = "Marque"
    Else
      R = Cells([C:C].Find(R, , , 1).Row, 2)
    End If
  Next
End Sub

Si... trop long, on peut passer par un tableau ou autre.
 

Efgé

XLDnaute Barbatruc
Re : Rechercher par macro une valeur et afficher la correspondance.

Bonjour klorane, Bonjour Si.... :)

Comme ce sujet semble faire suite au précédent fil de klorane, je me permets une proposition:
VB:
Private Sub CommandButton1_Click()
Dim i&, Dico As Object, Data As Variant

Set Dico = CreateObject("Scripting.Dictionary")

With Sheets("Test")
    Data = .Range(.Cells(1, 1), .Cells(.Rows.Count, 3).End(3))
    For i = LBound(Data, 1) To UBound(Data, 1)
        Dico(Data(i, 3)) = Data(i, 2)
    Next i
    For i = LBound(Data, 1) + 1 To UBound(Data, 1)
        Data(i, 1) = Dico(Data(i, 1))
    Next i
    .Cells(1, 1).Resize(UBound(Data, 1), 1) = Data
End With

End Sub
Cordialement
 

Pièces jointes

  • liste(2).xls
    36 KB · Affichages: 40
  • liste(2).xls
    36 KB · Affichages: 43
  • liste(2).xls
    36 KB · Affichages: 42
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 387
Messages
2 087 860
Membres
103 671
dernier inscrit
rachid1983