Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recherche marchand de vitesse

5 réponses
Avatar
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

5 réponses

Avatar
isabelle
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





Avatar
isabelle
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






Avatar
isabelle
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








Avatar
garnote
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










Avatar
isabelle
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