Problème avec fonction MATCH

napo124

XLDnaute Junior
Bonjour à tous!

J'ai une petite difficulté avec cette ligne:

z = WorksheetFunction.Match(zone1.Cells(a, 2).Value, Worksheets(6).Range("B2:B60100"), 0)

La ligne fonctionne, seulement, celle-ci est incluse dans une fonction "if" elle même incluse dans une boucle "do loop".
Pas de problème pour tout cela, tout fonctionne.... pour une seule boucle! En effet, à partir du deuxième "passage" sur cette ligne, une erreur apparait !:mad:

Quelqu'un peut il m'expliqer pourquoi ?

Cordialement
 

napo124

XLDnaute Junior
Re : Problème avec fonction MATCH

Petite précision sur la structure de mon code:

If zone1.Cells(a, 1) = "ALS" Then

Set dest = Worksheets(6).Cells(1, 1).CurrentRegion
y = dest.Rows.Count

On Error GoTo ERREUR

z = WorksheetFunction.Match(zone1.Cells(a, 2).Value, Worksheets(6).Range("B2:B60100"), 0)

z = z + 1

(......)

GoTo PASERREUR


ERREUR:

PASERREUR:



Else

Set dest = Worksheets(4).Cells(1, 1).CurrentRegion
y = dest.Rows.Count

(.......)


End If
 

Etienne2323

XLDnaute Impliqué
Re : Problème avec fonction MATCH

Salut Napo,
tout d'abord, essaye d'utiliser les balises de code quand tu postes du code en ligne (Mode Avancé et le petit # pour le code)

Ensuite, il serait beaucoup plus simple de te conseiller si on pouvait voir le code en entier. Encore mieux, si tu pouvais déposer un fichier exemple pour qu'on puisse tester.

Sinon, vite comme ça, au niveau de la gestion de l'erreur, je te suggérerais de placer un
Code:
On Error Goto 0
juste avant ton
Code:
Loop
pour invalider la gestion d'erreur à chaque passage, ce qui te permettrait de réutiliser ta gestion d'erreur en boucle.

Cordialement,

Étienne
 

napo124

XLDnaute Junior
Re : Problème avec fonction MATCH

Bonjour Etienne,

Merci de ta réponse et de ton aide.

On error go to 0 ne semble rien changer.


Voici le code exemple:

Sub truc()

Dim a As Integer
Dim z As Integer

a = 1
z = 0

Do
a = a + 1

If Worksheets(1).Cells(a, 2) = B Then

On Error GoTo ERREUR

z = WorksheetFunction.Match(Worksheets(1).Cells(a, 1).Value, Worksheets(1).Range("E2:E13"), 0)
Worksheets(1).Cells(a, 3) = "youpi"

GoTo PASERREUR

ERREUR:

Worksheets(1).Cells(a, 3) = "loupé"

PASERREUR:

Else


End If


Loop Until a = 13

End Sub
 

Pièces jointes

  • TESTnapo.xls
    29.5 KB · Affichages: 30

Etienne2323

XLDnaute Impliqué
Re : Problème avec fonction MATCH

Salut Napo,
voici quelque chose qui ne nécessiterait pas de gestion d'erreur.

VB:
Option Explicit
Sub Test()
Dim i As Byte, Plage As Range, Cellule, c

Application.ScreenUpdating = False
Set Plage = Range("E2:E13")

For i = 2 To 13
    If Cells(i, 2).Value = "B" Then
        Cellule = Cells(i, 1).Value
        Set c = Plage.Find(Cellule, LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
            Cells(i, 3).Value = "Youpi!"
        Else
            Cells(i, 3).Value = "Loupé!"
        End If
    End If
Next i

Set Plage = Nothing

End Sub

Cordialement,

Étienne
 

Statistiques des forums

Discussions
291 501
Messages
1 915 830
Membres
178 990
dernier inscrit
shadowtheone
Haut Bas