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

pb VBA avec XP et Excel 2003

2 réponses
Avatar
Bourby
Bonjour,

dans la fonction ci-dessous, largement due à l'aide de docm sur ce forum, je
rencontre un problème avec Excel 2003 sous xp, qui ne se produisait pas avec
Excel 97 sous W2000pro.

Lorsque les valeurs (1 à n) de rgREF ne sont pas au format texte, il génère
une erreur. Cette contrainte est bien gênante, surtout que le fichier est
partagé avec des collègues, qui n'ont pas de goût particulier pour les
raffinements informatiques, et me le font savoir vertement.

Y-a-t-il une solution pour que la fonction marche avec n'importe quel
format? (en particulier le format standard)

D'avance merci pour votre aide.

Bourby

Function ValeurMaxiDansListeDeRef(rgLISTE As Range, _
rgREF As Range, rgFIN As Range, rgDéBUT As Range) As Variant
Dim a, b, d, Ajout, x, y, rgVALEURS As Range

' ajout d'un ";" en fin de liste s'il n'y est pas déjà
If rgLISTE.Value = "" Then ValeurMaxiDansListeDeRef = "": Exit Function
If Right(rgLISTE.Value, 1) = ";" Then Ajout = "" Else Ajout = ";"
a = rgLISTE.Value & Ajout

' bouclage sur les occurences de ";"
While InStr(a, ";") > 0
b = InStr(a, ";")
d = Mid(a, 1, b - 1)
a = Mid(a, b + 1)
' recherche de la tâche et calcul de la date maxi
y = Application.Match(Trim(d), rgREF, 0)
x = Application.Index(rgVALEURS, y)
If x > ValeurMaxiDansListeDeRef Then ValeurMaxiDansListeDeRef = x

Wend

End Function

2 réponses

Avatar
papou
Bonjour
Peut-être qu'un simple rgREF = Cstr(rgREF) pourrait faire l'affaire ?
Mais je n'ai pas tout suivi.
Cordialement
Pascal

"Bourby" a écrit dans le message de
news:
Bonjour,

dans la fonction ci-dessous, largement due à l'aide de docm sur ce forum,
je

rencontre un problème avec Excel 2003 sous xp, qui ne se produisait pas
avec

Excel 97 sous W2000pro.

Lorsque les valeurs (1 à n) de rgREF ne sont pas au format texte, il
génère

une erreur. Cette contrainte est bien gênante, surtout que le fichier est
partagé avec des collègues, qui n'ont pas de goût particulier pour les
raffinements informatiques, et me le font savoir vertement.

Y-a-t-il une solution pour que la fonction marche avec n'importe quel
format? (en particulier le format standard)

D'avance merci pour votre aide.

Bourby

Function ValeurMaxiDansListeDeRef(rgLISTE As Range, _
rgREF As Range, rgFIN As Range, rgDéBUT As Range) As Variant
Dim a, b, d, Ajout, x, y, rgVALEURS As Range

' ajout d'un ";" en fin de liste s'il n'y est pas déjà
If rgLISTE.Value = "" Then ValeurMaxiDansListeDeRef = "": Exit Function
If Right(rgLISTE.Value, 1) = ";" Then Ajout = "" Else Ajout = ";"
a = rgLISTE.Value & Ajout

' bouclage sur les occurences de ";"
While InStr(a, ";") > 0
b = InStr(a, ";")
d = Mid(a, 1, b - 1)
a = Mid(a, b + 1)
' recherche de la tâche et calcul de la date maxi
y = Application.Match(Trim(d), rgREF, 0)
x = Application.Index(rgVALEURS, y)
If x > ValeurMaxiDansListeDeRef Then ValeurMaxiDansListeDeRef = x

Wend

End Function


Avatar
Bourby_m
bonjour

et merci d'avoir regardé; malheureusement, ça ne marche pas, ce qui est
intrigant...

Que faudrait-il faire?

D'avance merci

Bourby

"papou" wrote:

Bonjour
Peut-être qu'un simple rgREF = Cstr(rgREF) pourrait faire l'affaire ?
Mais je n'ai pas tout suivi.
Cordialement
Pascal

"Bourby" a écrit dans le message de
news:
Bonjour,

dans la fonction ci-dessous, largement due à l'aide de docm sur ce forum,
je

rencontre un problème avec Excel 2003 sous xp, qui ne se produisait pas
avec

Excel 97 sous W2000pro.

Lorsque les valeurs (1 à n) de rgREF ne sont pas au format texte, il
génère

une erreur. Cette contrainte est bien gênante, surtout que le fichier est
partagé avec des collègues, qui n'ont pas de goût particulier pour les
raffinements informatiques, et me le font savoir vertement.

Y-a-t-il une solution pour que la fonction marche avec n'importe quel
format? (en particulier le format standard)

D'avance merci pour votre aide.

Bourby

Function ValeurMaxiDansListeDeRef(rgLISTE As Range, _
rgREF As Range, rgFIN As Range, rgDéBUT As Range) As Variant
Dim a, b, d, Ajout, x, y, rgVALEURS As Range

' ajout d'un ";" en fin de liste s'il n'y est pas déjà
If rgLISTE.Value = "" Then ValeurMaxiDansListeDeRef = "": Exit Function
If Right(rgLISTE.Value, 1) = ";" Then Ajout = "" Else Ajout = ";"
a = rgLISTE.Value & Ajout

' bouclage sur les occurences de ";"
While InStr(a, ";") > 0
b = InStr(a, ";")
d = Mid(a, 1, b - 1)
a = Mid(a, b + 1)
' recherche de la tâche et calcul de la date maxi
y = Application.Match(Trim(d), rgREF, 0)
x = Application.Index(rgVALEURS, y)
If x > ValeurMaxiDansListeDeRef Then ValeurMaxiDansListeDeRef = x

Wend

End Function