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

Impossible de lire la propriété Match

13 réponses
Avatar
Gilbert
Bonjour,

Dans une procédure j'utilise le code suivant
--------------
.........
NumLigne = Application.WorksheetFunction.Match(NomOrganisme,
Range("A:A"), 0)
Cells(NumLigne, 4) = NbHeuresPrescrites
NumOnglet = Format(Me.ListeMois, "m") + 1
ActiveWorkbook.Worksheets(NumOnglet).Activate
NumLigne = Application.WorksheetFunction.Match(NomOrganisme,
Range("A:A"), 0)
........
FinProc:
Application.ScreenUpdating = True
Exit Sub
TraitementErreur:
MsgBox "Erreur " & Err.Number & " : " & Err.Description
Resume FinProc
End Sub
------------------------------

A l'exécution, sur le 2° NumLigne=...., je reçois le message suivant :
Impossible de lire la propriété Match de la classe WorkSheetFunction

Si je mets un point d'arrêt sur le MsgBox dans le traitement d'erreur et que
j'exécute le ligne dans la fenêtre Exécution, je récupère bien la valeur
attendue dans NumLigne.
Si je mets un point d'arrêt sur NumLigne=.... et que j'appuie sur F5 à
chaque passage (c'est dans une boucle) je n'ai pas d'erreur

Avez-vous une idée pour résoudre ce problème?

Merci d'avance

--
Cordialement,

Gilbert

3 réponses

1 2
Avatar
Gilbert
Merci de t'intéresser à mon problème.

Je veux bien tester ce que tu proposes, mais l'erreur ne se produit pas
lorsque je mets un point d'arrêt.
La valeur cherchée existe donc bien dans la plage où je la cherche.

--
Cordialement,

Gilbert


"Misange" a écrit dans le message de
news:OLd93$
Bonjour
Deux choses :
Il y a une petite subtilité dans le choix entre l'utilisation de
application.worksheetfunction.match ou de worksheetfunction.match :
avec la formulation longue, s'il n'y a pas d'équivalence, vba te renvoie
une erreur et s'arrête. Avec la formulation courte, tu peux tester
l'erreur (if iserror...) et la gérer.

ensuite essaie déjà de remplacer nomorganisme par sa valeur pour voir si
le problème ne vient pas de là. Comme tu travailles avec plusieurs
classeurs, assure toi que ta macro sait bien où trouver le nom défini.
Ne serait-il pas attribué de façon différente à divers classeurs ?

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Gilbert a écrit :
> Bonjour,
>
> Dans une procédure j'utilise le code suivant
> --------------
> .........
> NumLigne = Application.WorksheetFunction.Match(NomOrganisme,
> Range("A:A"), 0)
> Cells(NumLigne, 4) = NbHeuresPrescrites
> NumOnglet = Format(Me.ListeMois, "m") + 1
> ActiveWorkbook.Worksheets(NumOnglet).Activate
> NumLigne = Application.WorksheetFunction.Match(NomOrganisme,
> Range("A:A"), 0)
> ........
> FinProc:
> Application.ScreenUpdating = True
> Exit Sub
> TraitementErreur:
> MsgBox "Erreur " & Err.Number & " : " & Err.Description
> Resume FinProc
> End Sub
> ------------------------------
>
> A l'exécution, sur le 2° NumLigne=...., je reçois le message suivant :
> Impossible de lire la propriété Match de la classe WorkSheetFunction
>
> Si je mets un point d'arrêt sur le MsgBox dans le traitement d'erreur et


que
> j'exécute le ligne dans la fenêtre Exécution, je récupère bien la valeur
> attendue dans NumLigne.
> Si je mets un point d'arrêt sur NumLigne=.... et que j'appuie sur F5 à
> chaque passage (c'est dans une boucle) je n'ai pas d'erreur
>
> Avez-vous une idée pour résoudre ce problème?
>
> Merci d'avance
>


Avatar
michdenis
Afin d'isoler ta problématique,

Crée toi une toute petite procédure qui
reprend essentiellement seulement les éléments
nécessaires à l'obtention du résultat que tu cherches
avec la fonction "Match"...

Y arrives-tu ?





"Gilbert" a écrit dans le message de groupe de
discussion :
Merci de t'intéresser à mon problème.

Je veux bien tester ce que tu proposes, mais l'erreur ne se produit pas
lorsque je mets un point d'arrêt.
La valeur cherchée existe donc bien dans la plage où je la cherche.

--
Cordialement,

Gilbert


"Misange" a écrit dans le message de
news:OLd93$
Bonjour
Deux choses :
Il y a une petite subtilité dans le choix entre l'utilisation de
application.worksheetfunction.match ou de worksheetfunction.match :
avec la formulation longue, s'il n'y a pas d'équivalence, vba te renvoie
une erreur et s'arrête. Avec la formulation courte, tu peux tester
l'erreur (if iserror...) et la gérer.

ensuite essaie déjà de remplacer nomorganisme par sa valeur pour voir si
le problème ne vient pas de là. Comme tu travailles avec plusieurs
classeurs, assure toi que ta macro sait bien où trouver le nom défini.
Ne serait-il pas attribué de façon différente à divers classeurs ?

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Gilbert a écrit :
> Bonjour,
>
> Dans une procédure j'utilise le code suivant
> --------------
> .........
> NumLigne = Application.WorksheetFunction.Match(NomOrganisme,
> Range("A:A"), 0)
> Cells(NumLigne, 4) = NbHeuresPrescrites
> NumOnglet = Format(Me.ListeMois, "m") + 1
> ActiveWorkbook.Worksheets(NumOnglet).Activate
> NumLigne = Application.WorksheetFunction.Match(NomOrganisme,
> Range("A:A"), 0)
> ........
> FinProc:
> Application.ScreenUpdating = True
> Exit Sub
> TraitementErreur:
> MsgBox "Erreur " & Err.Number & " : " & Err.Description
> Resume FinProc
> End Sub
> ------------------------------
>
> A l'exécution, sur le 2° NumLigne=...., je reçois le message suivant :
> Impossible de lire la propriété Match de la classe WorkSheetFunction
>
> Si je mets un point d'arrêt sur le MsgBox dans le traitement d'erreur et


que
> j'exécute le ligne dans la fenêtre Exécution, je récupère bien la valeur
> attendue dans NumLigne.
> Si je mets un point d'arrêt sur NumLigne=.... et que j'appuie sur F5 à
> chaque passage (c'est dans une boucle) je n'ai pas d'erreur
>
> Avez-vous une idée pour résoudre ce problème?
>
> Merci d'avance
>


Avatar
Gilbert
J'ai trouvé l'origine du problème.
Il y avait dans le modèle de classeur une feuille cachée que je n'avais pas
vue (c'est normal, elle était cachée!) dans laquelle ne se trouvaient
évidemment pas les valeurs recherchées.
Désolé de vous avoir fait perdre votre temps (et votre latin) sur une
"conceté" de ma part.

Encore un grand merci à tous

--
Cordialement,

Gilbert


"michdenis" a écrit dans le message de
news:
Afin d'isoler ta problématique,

Crée toi une toute petite procédure qui
reprend essentiellement seulement les éléments
nécessaires à l'obtention du résultat que tu cherches
avec la fonction "Match"...

Y arrives-tu ?





"Gilbert" a écrit dans le message de


groupe de
discussion :
Merci de t'intéresser à mon problème.

Je veux bien tester ce que tu proposes, mais l'erreur ne se produit pas
lorsque je mets un point d'arrêt.
La valeur cherchée existe donc bien dans la plage où je la cherche.

--
Cordialement,

Gilbert


"Misange" a écrit dans le message de
news:OLd93$
> Bonjour
> Deux choses :
> Il y a une petite subtilité dans le choix entre l'utilisation de
> application.worksheetfunction.match ou de worksheetfunction.match :
> avec la formulation longue, s'il n'y a pas d'équivalence, vba te renvoie
> une erreur et s'arrête. Avec la formulation courte, tu peux tester
> l'erreur (if iserror...) et la gérer.
>
> ensuite essaie déjà de remplacer nomorganisme par sa valeur pour voir si
> le problème ne vient pas de là. Comme tu travailles avec plusieurs
> classeurs, assure toi que ta macro sait bien où trouver le nom défini.
> Ne serait-il pas attribué de façon différente à divers classeurs ?
>
> Misange migrateuse
> XlWiki : Participez à un travail collaboratif sur excel !
> http://xlwiki.free.fr/wiki
> http://www.excelabo.net
>
> Gilbert a écrit :
> > Bonjour,
> >
> > Dans une procédure j'utilise le code suivant
> > --------------
> > .........
> > NumLigne = Application.WorksheetFunction.Match(NomOrganisme,
> > Range("A:A"), 0)
> > Cells(NumLigne, 4) = NbHeuresPrescrites
> > NumOnglet = Format(Me.ListeMois, "m") + 1
> > ActiveWorkbook.Worksheets(NumOnglet).Activate
> > NumLigne = Application.WorksheetFunction.Match(NomOrganisme,
> > Range("A:A"), 0)
> > ........
> > FinProc:
> > Application.ScreenUpdating = True
> > Exit Sub
> > TraitementErreur:
> > MsgBox "Erreur " & Err.Number & " : " & Err.Description
> > Resume FinProc
> > End Sub
> > ------------------------------
> >
> > A l'exécution, sur le 2° NumLigne=...., je reçois le message suivant :
> > Impossible de lire la propriété Match de la classe


WorkSheetFunction
> >
> > Si je mets un point d'arrêt sur le MsgBox dans le traitement d'erreur


et
que
> > j'exécute le ligne dans la fenêtre Exécution, je récupère bien la


valeur
> > attendue dans NumLigne.
> > Si je mets un point d'arrêt sur NumLigne=.... et que j'appuie sur F5 à
> > chaque passage (c'est dans une boucle) je n'ai pas d'erreur
> >
> > Avez-vous une idée pour résoudre ce problème?
> >
> > Merci d'avance
> >


1 2