Recherche marchand de vitesse

Le
garnote
Bonjour,

Sub Atteindre()
On Error Resume Next
Set ici = ActiveCell
Set la = Sheets("liste")
For i = 1 To 15219
If la.Cells(i, 4) = ici.Value And la.Cells(i, 5) = ici.Offset(0,
6).Value Then
la.Activate
Rows(i).Select
Exit Sub
End If
Next i
End Sub

Cette macro fait ce qu'elle doit faire mais je la trouve
un tantinet lente. Zauriez un truc pour l'accélérer ?
Éviter de boucler ? Méthode Find ? ou ???

Serge
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #20350431
bonjour Serge,

essai avec With la
et
Application.Goto .Rows(i)

Sub Atteindre()
On Error Resume Next
Set ici = ActiveCell
Set la = Sheets("liste")
With la
For i = 1 To 15219
If .Cells(i, 4) = ici.Value And .Cells(i, 5) = ici.Offset(0,
6).Value Then
Application.Goto .Rows(i)
Exit Sub
End If
Next i
End With
End Sub

isabelle

garnote a écrit :
Bonjour,

Sub Atteindre()
On Error Resume Next
Set ici = ActiveCell
Set la = Sheets("liste")
For i = 1 To 15219
If la.Cells(i, 4) = ici.Value And la.Cells(i, 5) = ici.Offset(0,
6).Value Then
la.Activate
Rows(i).Select
Exit Sub
End If
Next i
End Sub

Cette macro fait ce qu'elle doit faire mais je la trouve
un tantinet lente. Zauriez un truc pour l'accélérer ?
Éviter de boucler ? Méthode Find ? ou ???

Serge





isabelle
Le #20350701
il y a aussi cette formule qui retourne le numéro de ligne :
{=EQUIV(1;(a=$A$1)*(b=$G$1);0)}
matriciel
si les colonnes D et E sont nommées a et b

isabelle

isabelle a écrit :
bonjour Serge,

essai avec With la
et
Application.Goto .Rows(i)

Sub Atteindre()
On Error Resume Next
Set ici = ActiveCell
Set la = Sheets("liste")
With la
For i = 1 To 15219
If .Cells(i, 4) = ici.Value And .Cells(i, 5) = ici.Offset(0,
6).Value Then
Application.Goto .Rows(i)
Exit Sub
End If
Next i
End With
End Sub

isabelle

garnote a écrit :
Bonjour,

Sub Atteindre()
On Error Resume Next
Set ici = ActiveCell
Set la = Sheets("liste")
For i = 1 To 15219
If la.Cells(i, 4) = ici.Value And la.Cells(i, 5) =
ici.Offset(0, 6).Value Then
la.Activate
Rows(i).Select
Exit Sub
End If
Next i
End Sub

Cette macro fait ce qu'elle doit faire mais je la trouve
un tantinet lente. Zauriez un truc pour l'accélérer ?
Éviter de boucler ? Méthode Find ? ou ???

Serge






isabelle
Le #20355271
petite précision: les colonnes ne doivent pas être entière
$D$1:$D$10000 et $E$1:$E$10000 sont nommées a et b

isabelle

isabelle a écrit :
il y a aussi cette formule qui retourne le numéro de ligne :
{=EQUIV(1;(a=$A$1)*(b=$G$1);0)}
matriciel
si les colonnes D et E sont nommées a et b

isabelle

isabelle a écrit :
bonjour Serge,

essai avec With la
et
Application.Goto .Rows(i)

Sub Atteindre()
On Error Resume Next
Set ici = ActiveCell
Set la = Sheets("liste")
With la
For i = 1 To 15219
If .Cells(i, 4) = ici.Value And .Cells(i, 5) = ici.Offset(0,
6).Value Then
Application.Goto .Rows(i)
Exit Sub
End If
Next i
End With
End Sub

isabelle

garnote a écrit :
Bonjour,

Sub Atteindre()
On Error Resume Next
Set ici = ActiveCell
Set la = Sheets("liste")
For i = 1 To 15219
If la.Cells(i, 4) = ici.Value And la.Cells(i, 5) =
ici.Offset(0, 6).Value Then
la.Activate
Rows(i).Select
Exit Sub
End If
Next i
End Sub

Cette macro fait ce qu'elle doit faire mais je la trouve
un tantinet lente. Zauriez un truc pour l'accélérer ?
Éviter de boucler ? Méthode Find ? ou ???

Serge








garnote
Le #20357141
S'cuse Isabelle,

J'avais oublié de te répondre et de remercier.
C'est maintenant fait et je te souhaite une bonne journée.

Serge, qui ces temps-ci, néglige un peu trop les formules
au profit des macros ;-)


"isabelle" a écrit dans le message de news:

petite précision: les colonnes ne doivent pas être entière
$D$1:$D$10000 et $E$1:$E$10000 sont nommées a et b

isabelle

isabelle a écrit :
il y a aussi cette formule qui retourne le numéro de ligne :
{=EQUIV(1;(a=$A$1)*(b=$G$1);0)}
matriciel
si les colonnes D et E sont nommées a et b

isabelle

isabelle a écrit :
bonjour Serge,

essai avec With la
et
Application.Goto .Rows(i)

Sub Atteindre()
On Error Resume Next
Set ici = ActiveCell
Set la = Sheets("liste")
With la
For i = 1 To 15219
If .Cells(i, 4) = ici.Value And .Cells(i, 5) = ici.Offset(0,
6).Value Then
Application.Goto .Rows(i)
Exit Sub
End If
Next i
End With
End Sub

isabelle

garnote a écrit :
Bonjour,

Sub Atteindre()
On Error Resume Next
Set ici = ActiveCell
Set la = Sheets("liste")
For i = 1 To 15219
If la.Cells(i, 4) = ici.Value And la.Cells(i, 5) =
ici.Offset(0, 6).Value Then
la.Activate
Rows(i).Select
Exit Sub
End If
Next i
End Sub

Cette macro fait ce qu'elle doit faire mais je la trouve
un tantinet lente. Zauriez un truc pour l'accélérer ?
Éviter de boucler ? Méthode Find ? ou ???

Serge










isabelle
Le #20357341
salut Serge,

garnote a écrit :
Serge, qui ces temps-ci, néglige un peu trop les formules
au profit des macros ;-)




sans oublier les plage nommées combiné avec les macro ;-)
isabelle
Publicité
Poster une réponse
Anonyme