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

Problème avec function en VBA : ca ne veut pas fonctionner

6 réponses
Avatar
dunkelzahn
Bonjour,

J'ai une fonction qui permet de changer des mots cl=E9s dans un texte et
le renvoit. Le probl=E8me est que je n'arrive pas =E0 faire fonctionner la
fonction.
Quand je mets les appels en direct, tout fonctionne. Mais, d=E8s que je
les mets dans une fonction, ca ne vient plus. d'ou vient le probl=E8me
selon vous ?

Voici mon code :
Function ConversionTags(Cellule As Range, ChaIne As String) As String
Dim CONF As Worksheet
Set CONF =3D Worksheets("Configuration")
'Remplacement du tag [year] par la date
ChaIne =3D Replace(ChaIne, "[year]", Year(Now()), 1, -1,
vbTextCompare)
'Remplacement du tag [assoc] par le nom de l'association
ChaIne =3D Replace(ChaIne, "[assoc]", CONF.Cells(26, 5).Value, 1,
-1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ChaIne =3D Replace(ChaIne, "[RespAdh]", CONF.Cells(27, 5).Value, 1,
-1, vbTextCompare)
'Remplacement du tag [PreAdh] par le pr=E9nom de l'adh=E9rent
ChaIne =3D Replace(ChaIne, "[PreAdh]", Cellule.Offset(0, -9).Value,
1, -1, vbTextCompare)
'Remplacement du tag [NomAdh] par le nom de l'adh=E9rent
ChaIne =3D Replace(ChaIne, "[NomAdh]", Cellule.Offset(0, -8).Value,
1, -1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ConversionTags =3D Replace(ChaIne, "[RespNom]", CONF.Cells(28,
5).Value, 1, -1, vbTextCompare)
End Function

With ObjMail
.=2E..
.Subject =3D ConversionTags(cell.Address, CONF.Cells(4, 12).Value)
.=2E..
End With

6 réponses

Avatar
LSteph
Bonsoir,

Normal.

Une fonction, function, renvoie un résultat, et ne peut effectuer
d'actions. Il faut une procédure, sub, pour effectuer une action.

Dans ta fonction tu peux faire des substitutions de texte dans des
variables mais pas modifier des cellules ou des plages de feuille de calcul.

Cordialement.

lSteph

Bonjour,

J'ai une fonction qui permet de changer des mots clés dans un texte et
le renvoit. Le problème est que je n'arrive pas à faire fonctionner la
fonction.
Quand je mets les appels en direct, tout fonctionne. Mais, dès que je
les mets dans une fonction, ca ne vient plus. d'ou vient le problème
selon vous ?

Voici mon code :
Function ConversionTags(Cellule As Range, ChaIne As String) As String
Dim CONF As Worksheet
Set CONF = Worksheets("Configuration")
'Remplacement du tag [year] par la date
ChaIne = Replace(ChaIne, "[year]", Year(Now()), 1, -1,
vbTextCompare)
'Remplacement du tag [assoc] par le nom de l'association
ChaIne = Replace(ChaIne, "[assoc]", CONF.Cells(26, 5).Value, 1,
-1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ChaIne = Replace(ChaIne, "[RespAdh]", CONF.Cells(27, 5).Value, 1,
-1, vbTextCompare)
'Remplacement du tag [PreAdh] par le prénom de l'adhérent
ChaIne = Replace(ChaIne, "[PreAdh]", Cellule.Offset(0, -9).Value,
1, -1, vbTextCompare)
'Remplacement du tag [NomAdh] par le nom de l'adhérent
ChaIne = Replace(ChaIne, "[NomAdh]", Cellule.Offset(0, -8).Value,
1, -1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ConversionTags = Replace(ChaIne, "[RespNom]", CONF.Cells(28,
5).Value, 1, -1, vbTextCompare)
End Function

With ObjMail
....
.Subject = ConversionTags(cell.Address, CONF.Cells(4, 12).Value)
....
End With



Avatar
dunkelzahn
Bonjour,

Je n'ai pas compris ta réponse. Je ne modifie aucunement les données
dans les cellules. Plutôt je récupère des données pour faire un
traitement.
Mais, d'après l'aide, j'ai cru comprendre qu'une fonction sub ne peut
pas renvoyer de données. Comment puis-je faire alors ?

On 31 mar, 23:24, LSteph wrote:
Bonsoir,

Normal.

Une fonction, function, renvoie un résultat, et ne peut effectuer
d'actions. Il faut une procédure, sub, pour effectuer une action.

Dans ta fonction tu peux faire des substitutions de texte dans des
variables mais pas modifier des cellules ou des plages de feuille de calc ul.

Cordialement.

lSteph


Bonjour,

J'ai une fonction qui permet de changer des mots clés dans un texte et
le renvoit. Le problème est que je n'arrive pas à faire fonctionner la
fonction.
Quand je mets les appels en direct, tout fonctionne. Mais, dès que je
les mets dans une fonction, ca ne vient plus. d'ou vient le problème
selon vous ?

Voici mon code :
Function ConversionTags(Cellule As Range, ChaIne As String) As String
Dim CONF As Worksheet
Set CONF = Worksheets("Configuration")
'Remplacement du tag [year] par la date
ChaIne = Replace(ChaIne, "[year]", Year(Now()), 1, -1,
vbTextCompare)
'Remplacement du tag [assoc] par le nom de l'association
ChaIne = Replace(ChaIne, "[assoc]", CONF.Cells(26, 5).Value, 1,
-1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ChaIne = Replace(ChaIne, "[RespAdh]", CONF.Cells(27, 5).Value, 1,
-1, vbTextCompare)
'Remplacement du tag [PreAdh] par le prénom de l'adhérent
ChaIne = Replace(ChaIne, "[PreAdh]", Cellule.Offset(0, -9).Value,
1, -1, vbTextCompare)
'Remplacement du tag [NomAdh] par le nom de l'adhérent
ChaIne = Replace(ChaIne, "[NomAdh]", Cellule.Offset(0, -8).Value,
1, -1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ConversionTags = Replace(ChaIne, "[RespNom]", CONF.Cells(28,
5).Value, 1, -1, vbTextCompare)
End Function

With ObjMail
....
.Subject = ConversionTags(cell.Address, CONF.Cells(4, 12).Value)
....
End With




Avatar
LSteph
Bonjour,

Je n'ai pas compris ta réponse. Je ne modifie aucunement les données



J'avais lu un peu vite mais qd même,suggestion:

Au lieu d'assigner ta feuille à une variable objet
Set CONF
Function ConversionTags(Cellule As Range, ChaIne As String) As String
Dim CONF As Worksheet
Set CONF = Worksheets("Configuration")
'Remplacement du tag [year] par la date
...



End Function
Essaie plus simplement un With et cela devrait aller




Function ConversionTags(Cellule As Range, ChaIne As String) As String
With Worksheets("Configuration")
'Remplacement du tag [year] par la date
'....
End With
End Function

Ensuite évidemment modifier ainsi ce qui y fait appel
ChaIne = Replace(ChaIne, "[assoc]", CONF.Cells(26, 5).Value, 1,
ChaIne = Replace(ChaIne, "[assoc]", .Cells(26, 5).Value, 1,





'....


Sinon il y avait aussi cette instruction
With ObjMail
mais effectivement elle sest en dehors de la fonction
d'ailleurs je ne saisis pas bien ce qu'elle fait là toute seule ..


Mais, d'après l'aide, j'ai cru comprendre..


Une procédure (sub) permet d'effecuer des actions, (autrement dit)
un traitement.
Une fonction (Function) sert précisément à renvoyer des données
dans une cellule.

... Comment puis-je faire alors ?
Une fois ta fonction écrite, tu dois la placer dans une cellule

elle y renverra le résultat.


Cordialement.

lSteph

Bonjour,

Je n'ai pas compris ta réponse. Je ne modifie aucunement les données
dans les cellules. Plutôt je récupère des données pour faire un
traitement.
Mais, d'après l'aide, j'ai cru comprendre qu'une fonction sub ne peut
pas renvoyer de données. Comment puis-je faire alors ?

On 31 mar, 23:24, LSteph wrote:
Bonsoir,

Normal.

Une fonction, function, renvoie un résultat, et ne peut effectuer
d'actions. Il faut une procédure, sub, pour effectuer une action.

Dans ta fonction tu peux faire des substitutions de texte dans des
variables mais pas modifier des cellules ou des plages de feuille de calcul.

Cordialement.

lSteph


Bonjour,
J'ai une fonction qui permet de changer des mots clés dans un texte et
le renvoit. Le problème est que je n'arrive pas à faire fonctionner la
fonction.
Quand je mets les appels en direct, tout fonctionne. Mais, dès que je
les mets dans une fonction, ca ne vient plus. d'ou vient le problème
selon vous ?
Voici mon code :
Function ConversionTags(Cellule As Range, ChaIne As String) As String
Dim CONF As Worksheet
Set CONF = Worksheets("Configuration")
'Remplacement du tag [year] par la date
ChaIne = Replace(ChaIne, "[year]", Year(Now()), 1, -1,
vbTextCompare)
'Remplacement du tag [assoc] par le nom de l'association
ChaIne = Replace(ChaIne, "[assoc]", CONF.Cells(26, 5).Value, 1,
-1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ChaIne = Replace(ChaIne, "[RespAdh]", CONF.Cells(27, 5).Value, 1,
-1, vbTextCompare)
'Remplacement du tag [PreAdh] par le prénom de l'adhérent
ChaIne = Replace(ChaIne, "[PreAdh]", Cellule.Offset(0, -9).Value,
1, -1, vbTextCompare)
'Remplacement du tag [NomAdh] par le nom de l'adhérent
ChaIne = Replace(ChaIne, "[NomAdh]", Cellule.Offset(0, -8).Value,
1, -1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ConversionTags = Replace(ChaIne, "[RespNom]", CONF.Cells(28,
5).Value, 1, -1, vbTextCompare)
End Function
With ObjMail
....
.Subject = ConversionTags(cell.Address, CONF.Cells(4, 12).Value)
....
End With









Avatar
dunkelzahn
Bonjour,

Merci de ton aide apportée. Je n'ai pas encore tout compris et je vais
étudier tout cela attentivement.
Ce que je veux faire en fait est d'envoyer un mail "personnalisé" à
chaque personne d'une liste déterminée. Pour le personnaliser,
j'utilise des tags ou mots clés. Le souci est que je l'utilise en
plusieurs endroits et je me vois mal répéter mon code à chaque fois.
Pour cette raison que j'utilise function (au départ je voulais
utiliser sub mais j'ai vu qu'il ne renvoit aucune donnée).Une sorte
d'alias ou de DLL. Mais d'après ce que tu viens de me dire, j'ai
l'impression que je fais fausse route avec function. Il faut passer
par un sub semble t il.


Pour le set CONF, je n'étais pas sûr qu'il renvoit ces variables alors
qu'ils sont déjà déterminés dans la fonction ou function est appel ée.
Mais comme je travaille sur plusieurs feuilles....

On 1 avr, 11:56, LSteph wrote:
Bonjour,

Je n'ai pas compris ta réponse. Je ne modifie aucunement les données


J'avais lu un peu vite mais qd même,suggestion:

Au lieu d'assigner ta feuille à une variable objet
Set CONF
Function ConversionTags(Cellule As Range, ChaIne As String) As String
Dim CONF As Worksheet
Set CONF = Worksheets("Configuration")
'Remplacement du tag [year] par la date
...



End Function
Essaie plus simplement un With et cela devrait aller




Function ConversionTags(Cellule As Range, ChaIne As String) As String
With Worksheets("Configuration")
'Remplacement du tag [year] par la date
'....
End With
End Function

Ensuite évidemment modifier ainsi ce qui y fait appel>>>> ChaIne = Replace(ChaIne, "[assoc]", CONF.Cells(26, 5).Value, 1,

ChaIne = Replace(ChaIne, "[assoc]", .Cells(26, 5).Value, 1,

'....

Sinon il y avait aussi cette instruction
With ObjMail
mais effectivement elle sest en dehors de la fonction
d'ailleurs je ne saisis pas bien ce qu'elle fait là toute seule ..

Mais, d'après l'aide, j'ai cru comprendre..


Une procédure (sub) permet d'effecuer des actions, (autrement dit)
un traitement.
Une fonction (Function) sert précisément à renvoyer des données
dans une cellule.

... Comment puis-je faire alors ?


Une fois ta fonction écrite, tu dois la placer dans une cellule
elle y renverra le résultat.

Cordialement.

lSteph




Bonjour,

Je n'ai pas compris ta réponse. Je ne modifie aucunement les données
dans les cellules. Plutôt je récupère des données pour faire un
traitement.
Mais, d'après l'aide, j'ai cru comprendre qu'une fonction sub ne peut
pas renvoyer de données. Comment puis-je faire alors ?

On 31 mar, 23:24, LSteph wrote:
Bonsoir,

Normal.

Une fonction, function, renvoie un résultat, et ne peut effectuer
d'actions. Il faut une procédure, sub, pour effectuer une action.

Dans ta fonction tu peux faire des substitutions de texte dans des
variables mais pas modifier des cellules ou des plages de feuille de c alcul.

Cordialement.

lSteph




Bonjour,
J'ai une fonction qui permet de changer des mots clés dans un texte et
le renvoit. Le problème est que je n'arrive pas à faire fonctionn er la
fonction.
Quand je mets les appels en direct, tout fonctionne. Mais, dès que je
les mets dans une fonction, ca ne vient plus. d'ou vient le problème
selon vous ?
Voici mon code :
Function ConversionTags(Cellule As Range, ChaIne As String) As String
Dim CONF As Worksheet
Set CONF = Worksheets("Configuration")
'Remplacement du tag [year] par la date
ChaIne = Replace(ChaIne, "[year]", Year(Now()), 1, -1,
vbTextCompare)
'Remplacement du tag [assoc] par le nom de l'association
ChaIne = Replace(ChaIne, "[assoc]", CONF.Cells(26, 5).Value, 1,
-1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ChaIne = Replace(ChaIne, "[RespAdh]", CONF.Cells(27, 5).Value, 1,
-1, vbTextCompare)
'Remplacement du tag [PreAdh] par le prénom de l'adhérent
ChaIne = Replace(ChaIne, "[PreAdh]", Cellule.Offset(0, -9).Valu e,
1, -1, vbTextCompare)
'Remplacement du tag [NomAdh] par le nom de l'adhérent
ChaIne = Replace(ChaIne, "[NomAdh]", Cellule.Offset(0, -8).Valu e,
1, -1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ConversionTags = Replace(ChaIne, "[RespNom]", CONF.Cells(28,
5).Value, 1, -1, vbTextCompare)
End Function
With ObjMail
....
.Subject = ConversionTags(cell.Address, CONF.Cells(4, 12).Value)
....
End With- Masquer le texte des messages précédents -




- Afficher le texte des messages précédents -





Avatar
dunkelzahn
Bon, j'ai trouvé la source du problème. Ca venait d'un on "error goto
next" qui supprimait l'erreur que j'avais. J'avais mal renvoyé les
données qu'il fallait dans la def de function.
Merci encore.

On 2 avr, 16:56, "dunkelzahn" wrote:
Bonjour,

Merci de ton aide apportée. Je n'ai pas encore tout compris et je vais
étudier tout cela attentivement.
Ce que je veux faire en fait est d'envoyer un mail "personnalisé" à
chaque personne d'une liste déterminée. Pour le personnaliser,
j'utilise des tags ou mots clés. Le souci est que je l'utilise en
plusieurs endroits et je me vois mal répéter mon code à chaque fois.
Pour cette raison que j'utilise function (au départ je voulais
utiliser sub mais j'ai vu qu'il ne renvoit aucune donnée).Une sorte
d'alias ou de DLL. Mais d'après ce que tu viens de me dire, j'ai
l'impression que je fais fausse route avec function. Il faut passer
par un sub semble t il.

Pour le set CONF, je n'étais pas sûr qu'il renvoit ces variables alors
qu'ils sont déjà déterminés dans la fonction ou function est appe lée.
Mais comme je travaille sur plusieurs feuilles....

On 1 avr, 11:56, LSteph wrote:

Bonjour,

Je n'ai pas compris ta réponse. Je ne modifie aucunement les donn ées


J'avais lu un peu vite mais qd même,suggestion:

Au lieu d'assigner ta feuille à une variable objet
Set CONF
Function ConversionTags(Cellule As Range, ChaIne As String) As Str ing
Dim CONF As Worksheet
Set CONF = Worksheets("Configuration")
'Remplacement du tag [year] par la date
...



End Function
Essaie plus simplement un With et cela devrait aller




Function ConversionTags(Cellule As Range, ChaIne As String) As String
With Worksheets("Configuration")
'Remplacement du tag [year] par la date
'....
End With
End Function

Ensuite évidemment modifier ainsi ce qui y fait appel>>>> ChaIne = Replace(ChaIne, "[assoc]", CONF.Cells(26, 5).Value, 1,

ChaIne = Replace(ChaIne, "[assoc]", .Cells(26, 5).Value, 1,

'....

Sinon il y avait aussi cette instruction
With ObjMail
mais effectivement elle sest en dehors de la fonction
d'ailleurs je ne saisis pas bien ce qu'elle fait là toute seule ..

Mais, d'après l'aide, j'ai cru comprendre..


Une procédure (sub) permet d'effecuer des actions, (autrement dit)
un traitement.
Une fonction (Function) sert précisément à renvoyer des données
dans une cellule.

... Comment puis-je faire alors ?


Une fois ta fonction écrite, tu dois la placer dans une cellule
elle y renverra le résultat.

Cordialement.

lSteph



Bonjour,

Je n'ai pas compris ta réponse. Je ne modifie aucunement les donn ées
dans les cellules. Plutôt je récupère des données pour faire un
traitement.
Mais, d'après l'aide, j'ai cru comprendre qu'une fonction sub ne pe ut
pas renvoyer de données. Comment puis-je faire alors ?

On 31 mar, 23:24, LSteph wrote:
Bonsoir,

Normal.

Une fonction, function, renvoie un résultat, et ne peut effectuer
d'actions. Il faut une procédure, sub, pour effectuer une action.

Dans ta fonction tu peux faire des substitutions de texte dans des
variables mais pas modifier des cellules ou des plages de feuille de calcul.

Cordialement.

lSteph





Bonjour,
J'ai une fonction qui permet de changer des mots clés dans un tex te et
le renvoit. Le problème est que je n'arrive pas à faire fonctio nner la
fonction.
Quand je mets les appels en direct, tout fonctionne. Mais, dès qu e je
les mets dans une fonction, ca ne vient plus. d'ou vient le probl ème
selon vous ?
Voici mon code :
Function ConversionTags(Cellule As Range, ChaIne As String) As Stri ng
Dim CONF As Worksheet
Set CONF = Worksheets("Configuration")
'Remplacement du tag [year] par la date
ChaIne = Replace(ChaIne, "[year]", Year(Now()), 1, -1,
vbTextCompare)
'Remplacement du tag [assoc] par le nom de l'association
ChaIne = Replace(ChaIne, "[assoc]", CONF.Cells(26, 5).Value, 1,
-1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ChaIne = Replace(ChaIne, "[RespAdh]", CONF.Cells(27, 5).Value , 1,
-1, vbTextCompare)
'Remplacement du tag [PreAdh] par le prénom de l'adhérent
ChaIne = Replace(ChaIne, "[PreAdh]", Cellule.Offset(0, -9).Va lue,
1, -1, vbTextCompare)
'Remplacement du tag [NomAdh] par le nom de l'adhérent
ChaIne = Replace(ChaIne, "[NomAdh]", Cellule.Offset(0, -8).Va lue,
1, -1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ConversionTags = Replace(ChaIne, "[RespNom]", CONF.Cells(28,
5).Value, 1, -1, vbTextCompare)
End Function
With ObjMail
....
.Subject = ConversionTags(cell.Address, CONF.Cells(4, 12).Value)
....
End With- Masquer le texte des messages précédents -




- Afficher le texte des messages précédents -







Avatar
LSteph
Bonjour,

;-) effectivement, la prochaine fois tu en donnera un peu plus.
(pour voir toutes les instructions)

L'essentiel est que ton pb soit résolu.



Cordialement.

lSteph

Bon, j'ai trouvé la source du problème. Ca venait d'un on "error goto
next" qui supprimait l'erreur que j'avais. J'avais mal renvoyé les
données qu'il fallait dans la def de function.
Merci encore.

On 2 avr, 16:56, "dunkelzahn" wrote:
Bonjour,

Merci de ton aide apportée. Je n'ai pas encore tout compris et je vais
étudier tout cela attentivement.
Ce que je veux faire en fait est d'envoyer un mail "personnalisé" à
chaque personne d'une liste déterminée. Pour le personnaliser,
j'utilise des tags ou mots clés. Le souci est que je l'utilise en
plusieurs endroits et je me vois mal répéter mon code à chaque fois.
Pour cette raison que j'utilise function (au départ je voulais
utiliser sub mais j'ai vu qu'il ne renvoit aucune donnée).Une sorte
d'alias ou de DLL. Mais d'après ce que tu viens de me dire, j'ai
l'impression que je fais fausse route avec function. Il faut passer
par un sub semble t il.

Pour le set CONF, je n'étais pas sûr qu'il renvoit ces variables alors
qu'ils sont déjà déterminés dans la fonction ou function est appelée.
Mais comme je travaille sur plusieurs feuilles....

On 1 avr, 11:56, LSteph wrote:

Bonjour,
Je n'ai pas compris ta réponse. Je ne modifie aucunement les données
J'avais lu un peu vite mais qd même,suggestion:

Au lieu d'assigner ta feuille à une variable objet
Set CONF
Function ConversionTags(Cellule As Range, ChaIne As String) As String
Dim CONF As Worksheet
Set CONF = Worksheets("Configuration")
'Remplacement du tag [year] par la date
...



End Function
Essaie plus simplement un With et cela devrait aller



Function ConversionTags(Cellule As Range, ChaIne As String) As String
With Worksheets("Configuration")
'Remplacement du tag [year] par la date
'....
End With
End Function
Ensuite évidemment modifier ainsi ce qui y fait appel>>>> ChaIne = Replace(ChaIne, "[assoc]", CONF.Cells(26, 5).Value, 1,
ChaIne = Replace(ChaIne, "[assoc]", .Cells(26, 5).Value, 1,
'....
Sinon il y avait aussi cette instruction
With ObjMail
mais effectivement elle sest en dehors de la fonction
d'ailleurs je ne saisis pas bien ce qu'elle fait là toute seule ..
Mais, d'après l'aide, j'ai cru comprendre..
Une procédure (sub) permet d'effecuer des actions, (autrement dit)

un traitement.
Une fonction (Function) sert précisément à renvoyer des données
dans une cellule.
... Comment puis-je faire alors ?
Une fois ta fonction écrite, tu dois la placer dans une cellule

elle y renverra le résultat.
Cordialement.
lSteph
Bonjour,
Je n'ai pas compris ta réponse. Je ne modifie aucunement les données
dans les cellules. Plutôt je récupère des données pour faire un
traitement.
Mais, d'après l'aide, j'ai cru comprendre qu'une fonction sub ne peut
pas renvoyer de données. Comment puis-je faire alors ?
On 31 mar, 23:24, LSteph wrote:
Bonsoir,
Normal.
Une fonction, function, renvoie un résultat, et ne peut effectuer
d'actions. Il faut une procédure, sub, pour effectuer une action.
Dans ta fonction tu peux faire des substitutions de texte dans des
variables mais pas modifier des cellules ou des plages de feuille de calcul.
Cordialement.
lSteph
Bonjour,
J'ai une fonction qui permet de changer des mots clés dans un texte et
le renvoit. Le problème est que je n'arrive pas à faire fonctionner la
fonction.
Quand je mets les appels en direct, tout fonctionne. Mais, dès que je
les mets dans une fonction, ca ne vient plus. d'ou vient le problème
selon vous ?
Voici mon code :
Function ConversionTags(Cellule As Range, ChaIne As String) As String
Dim CONF As Worksheet
Set CONF = Worksheets("Configuration")
'Remplacement du tag [year] par la date
ChaIne = Replace(ChaIne, "[year]", Year(Now()), 1, -1,
vbTextCompare)
'Remplacement du tag [assoc] par le nom de l'association
ChaIne = Replace(ChaIne, "[assoc]", CONF.Cells(26, 5).Value, 1,
-1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ChaIne = Replace(ChaIne, "[RespAdh]", CONF.Cells(27, 5).Value, 1,
-1, vbTextCompare)
'Remplacement du tag [PreAdh] par le prénom de l'adhérent
ChaIne = Replace(ChaIne, "[PreAdh]", Cellule.Offset(0, -9).Value,
1, -1, vbTextCompare)
'Remplacement du tag [NomAdh] par le nom de l'adhérent
ChaIne = Replace(ChaIne, "[NomAdh]", Cellule.Offset(0, -8).Value,
1, -1, vbTextCompare)
'Remplacement du tag [RespAdh] par l'adresse de la personne
ConversionTags = Replace(ChaIne, "[RespNom]", CONF.Cells(28,
5).Value, 1, -1, vbTextCompare)
End Function
With ObjMail
....
.Subject = ConversionTags(cell.Address, CONF.Cells(4, 12).Value)
....
End With- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -