VBA Rechercher emplacement articles

bonjour,

quelque chiffres ont le format texte et les autres sont de vrai chiffres. Comme la colonne A de "Données" sont tous Texte, les "chiffres" ne trouvent pas un match exacte. En format "0,00" on voit les vrai chiffres et les textes.

Les 2 macros avec commentaire.

Sub sauv()

     Dim TabloA, tabloB, tabloC, TabloD, tabloU, TabloR, fd As Worksheet
     Dim iA&, iD&, t

     t = Timer
     TabloA = Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)     'array de la colonne A de Acceuil
     ReDim Preserve TabloA(1 To UBound(TabloA, 1), 1 To 2)     'agrandir cet array avec une colonne
     Set fd = Sheets("Données")
     TabloD = fd.Range("A2:A" & fd.Range("A" & Rows.Count).End(xlUp).Row)     'array de la colonne A de Données
     TabloR = fd.Range("C2:C" & fd.Range("C" & Rows.Count).End(xlUp).Row)     'array de la colonne C de Données
     For iA = 1 To UBound(TabloA, 1)     'boucle les données de la colonne A d'Acceuil
          For iD = 1 To UBound(TabloD, 1)     'boucle les données de la colonne A de Données
               If TabloA(iA, 1) = TabloD(iD, 1) Then     'MATCH
                    TabloA(iA, 2) = TabloR(iD, 1)     'copier le valeur de la colonne C de Données
               End If
          Next iD
     Next iA
     Range("B2").Resize(UBound(TabloA, 1), 2) = TabloA
     MsgBox Format(Timer - t, "0.00")
End Sub

Sub sauv2()

     Dim TabloA, TabloD, TabloR
     t = Timer
     With Sheets("Accueil")
          TabloA = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)     'array de la colonne A de Accueil
     End With
     ReDim Preserve TabloA(1 To UBound(TabloA, 1), 1 To 3)     'agrandir cet array avec une colonne

     With Sheets("Données")
          Set c = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)     'plage de la colonne A de Données
          TabloD = c.Value     'array de la colonne A de Données
          TabloR = c.Offset(, 2).Value     'array de la colonne C de Données, qui est 2 colonne vers droite
     End With

     For iA = 1 To UBound(TabloA, 1)     'boucle les données de la colonne A d'Accueil
          r = Application.Match(TabloA(iA, 1), TabloD, 0)  'recherche ce valeur dans TabloD, match exacte
          If Not IsNumeric(r) Then r = Application.Match(CStr(TabloA(iA, 1)), TabloD, 0)     'si no MATCH, recherche après conversion vers texte de ce valeur
          If IsNumeric(r) Then TabloA(iA, 2) = TabloR(r, 1)    'copier le valeur de la colonne C de Données
     Next iA

     Range("B2").Resize(UBound(TabloA, 1), 2) = TabloA
     MsgBox Format(Timer - t, "0.00")
End Sub
4exemple-v2.xlsm (166.50 Ko)

salutations d'un vieillard de 61 ans

Merci pour ton aide,

En fait l'onglet données est une importation de machine. environ 2500 lignes (tout est en format Standard) (je suis contrôleur qualité)

et mon but est d'aller chercher des résultats

Donc en A je mets les références que je veux voir. sachant qu'il peut y avoir des résultats de références absentes.

en B les informations (Noms des opérations (texte))

et en C les résultats, texte ou chiffres

J'ai cru comprendre que le tableau 3D c'est ce qu'il y aurait de mieux à faire, de plus l'exemple de GMB me plait bien, donc je suis parti sur ce principe

En fait 61 tu as passé le CAP moi je suis sous le choc

Bonjour les "vieillards"

Je comprends mieux cette obstination à vouloir utiliser du VBA

Un contrôleur qualité qui ne sait pas utiliser les formules ou TCD...

Bon, je n'étais que de passage

Nan le contrôleur qualité n'aime pas les formules classiques mais par contre adore VBA et Power Query

Bonjour à tous

Nouvelle version

5exemple-v3.xlsm (20.31 Ko)

Bye !

Ho merci maître GMB c'est exactement ce que je voulait

@GMB

@BsAlv

Merci ! Ce soir je m'endormirai heureux d'avoir appris quelque chose...

Bye !

C'était du sarcasme.

Un des buts d' "option explicit", c'est optimaliser la memoire, mais après execution de la macro ces TabloA, TabloD et TabloR persistent en mémoire.

Rechercher des sujets similaires à "vba rechercher emplacement articles"