Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recherche de valeurs dans une liste de variables

Dut

XLDnaute Nouveau
Bonjour,
sous VBA j'ai déclaré une liste de variables définies comme suit :
Code:
Dim variante(50) As String

Un peu plus loin dans ma macro, je parcoure la colonne E d'une feuille et je souhaiterais effectuer une recherche sur la liste précédente pour renvoyer le numéro de la variable correspondante. J'utilise donc le code suivant :
Code:
    For i = 2 To Range("E2").End(xlDown).Row
        For k = 0 To 50
            If Range("E" & i).Value = variante(k) Then Range("C" & i).Value = k
        Next k
    Next i

Le problème c'est qu'il existe environ 40 variantes et que j'ai plus de 40000 lignes à tester donc je voudrais essayer d'optimiser un peu le délai de traitement.

Existe-t-il une fonction qui me permettrait d'accélérer ma recherche ?
 

tototiti2008

XLDnaute Barbatruc
Re : Recherche de valeurs dans une liste de variables

Bonjour,

un petit plus :

Code:
For i = 2 To Range("E2").End(xlDown).Row
        For k = 0 To 50
            If Range("E" & i).Value = variante(k) Then Range("C" & i).Value = k
            Exit For
        Next k
Next i
 

Dut

XLDnaute Nouveau
Re : Recherche de valeurs dans une liste de variables

Exact ! bonne idée...
Code:
    For i = 2 To Range("E2").End(xlDown).Row
        For k = 0 To 50
            If Range("E" & i).Value = variante(k) Then
                Range("C" & i).Value = k
                Exit For
            End If
        Next k
    Next i
D'autres suggestions ?
 
Dernière édition:

cbea

XLDnaute Impliqué
Re : Recherche de valeurs dans une liste de variables

Bonjour dut, tototiti2008,

Voici une autre possibilité :
Code:
    Dim Plage As Range, Cell As Range

    Set Plage = Range("E2:E" & Range("E2").End(xlDown).Row)
    
    For k = 0 To UBound(variante)
        Set Cell = Plage.Find(variante(k), , LookIn:=xlValues, LookAt:=xlWhole)
        If Not Cell Is Nothing Then
            Range("C" & Cell.Row).Value = k
        End If
    Next k
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…