XL 2013 plus rapide

Chombi

XLDnaute Occasionnel
Bonjour le Forum

Existe t'il quelques chose de plus rapide que cela:

Code:
   Set f = Worksheets("zaza")
   
  For Each b In Range(f.[A1], f.[A65000].End(xlUp))

    If b <> "" Then
      b.Offset(0, 1) = b.Offset(0, 1) + b.Offset(0, 3)
    End If
Next

j'ai ce code dans une procédure qui prend déjà un peu de temps, mais qu'en je l'enlève je gagne quelques secondes,
Petite précision: "b" (la valeur rechercher) est une valeur unique qui se trouve dans une liste trié par ordre alphabétique

Merci
 

JM27

XLDnaute Barbatruc
Bonjour
pourquoi ne pas faire une recherche avec la fonction match ?
cela supprimera la boucle

par exemple ( 9 étant la valeur recherché)
Code:
'Donne la positi0n de la valeur 9par rapport à A1
Sub FindFirst()
    MyVar = Application.WorksheetFunction _
        .Match(9, Worksheets(1).Range("A1:A10"), 0)
    MsgBox MyVar
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Pour traiter toutes les cellules non vides de la colonne A, ceci serait certainement beaucoup plus rapide :
VB:
   Dim F As Worksheet, R As Range, TE(), TS(), L As Long
   Set F = Worksheets("zaza")
   Set R = F.[A1].Resize(F.[A65000].End(xlUp).Row, 4)
   TE = R.Value
   ReDim TS(1 To UBound(TE, 1), 1 To 1) ' si vider les vides,
   TS = R.Columns(2).Value ' si garder les anciens devenus vides.
   For L = 1 To UBound(TE, 1)
      If TE(L, 1) <> "" Then TS(L, 1) = TE(L, 2) + TE(L, 4)
      Next L
   R.Columns(2).Value = TS
 

Chombi

XLDnaute Occasionnel
Bonjour JM27, bonjour Dranreb

Merci à vous 2

JM27, ma liste est évolutive donc difficile de dire si la donnée est un A1 A2 ou etc

Dranreb, ta solution est parfaite et me fait gagner 5 s à chaque recherche, comme le temps c'est de l'argent je te suis redevable.

Un grand grand merci à vous deux pour vos réponses rapides
 

Discussions similaires

Réponses
15
Affichages
482
Réponses
17
Affichages
1 K

Statistiques des forums

Discussions
312 182
Messages
2 086 001
Membres
103 084
dernier inscrit
Hervé30120