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

procédure (en création) qui bloque et me désespère !

3 réponses
Avatar
Antoine76
Bonjour à tous,

recevez tous les meilleurs d'un adepte 2005 du forum, pour l'instant plus
"bénéficiaire" du savoir collectif que "contributeur" à ce même savoir. (Ne
dit-on point que la roue tourne ?)

Mais l'année ne fait que débuter en jour de l'an, et il semble qu'il est
encore trop tôt pour que je franchisse la "borderline" du savoir ! En tout
cas si j'en juge par la macro, fort simple d'apparence, qui refuse
obstinément de me donner le résultat escompté...

Dans un classeur, j'ai en K1 le nom de la personne responsable des RH d'une
société, en L1 le nom du DRH de cette même société, pour autant qu'on le
connaisse (dont la cellule est parfois vide). Le contenu de ces 2 cellules
doit, via une macro, alimenter une cellule A14, qui sous analyse de la
cellule L1, va générer en A14 une formule de politesse qui sera "Cher
Monsieur" (si L1 non vide et si le 1er mot de L1 est Monsieur), sinon "Chère
Madame" (si L1 non vide et si le 1er mot de L1 est différent de Monsieur)
Si par contre la cellule L1 est vide, l'analyse se fait alors sur la cellule
K1 (qui correspond à l'intitulé du correspondant des RH) et crédite de
manière similaire en A14 une formule de politesse qui sera "Monsieur" (si L1
vide et si le 1er mot de K1 est Monsieur), sinon "Madame" (si L1 vide et si
le 1er mot de K1 est différent de Monsieur). Dans la ligné de ce qui a été
abordé, la cellule C7 qui contient le nom du correspondant (faisant suite à
la cellule qui disait "A l'attention de ") attribue le nom du DRH ou du
correspondant des RH selon les mêmes critères...
ce qui donne pour la macro,

Sub politesse_drh()
' change la formule de politesse pour les DRH "VIP"
If Range("L1").Value= "" Then
' affiche la bonne formule de politesse de début de texte
Range("C7").Select
Selection.Value = Range("K1").Value
If Left("K1", 8) = "Monsieur" Then
Range("A14").Value = "Cher Monsieur,"
Else
Range("A14").Value = "Chère Madame,"
End If
Else
' affiche la bonne formule de politesse de début de texte
Range("C7").Select
Selection.Value = Range("L1").Value
If Left("L1", 8) = "MONSIEUR" Then
Range("C14").Select
Selection.Value = "Cher Monsieur,"
Else
Range("A14").Value = "Chère Madame,"
End If
End If
End Sub

Si j'ai Madame ZAZA en K1, et Monsieur ZOZO en L1, il est censé préférer L1
à K1. Point donc ! en effet, il m'affiche "Chère Madame" en C14, et
m'affiche Monsieur ZOZO en C7 !
Si j'introduit une variable pour recevoir le nom du DRH (pour le cas où cela
serait responsable du problème), rien n'y fait ! la formule du recours à une
variable pour le nom du DRH n'a rien changé, avec :
Dim nom_drh As String
nom_drh = Range("L1").Value
If nom_drh = "" Then
...
Je crois que je suis pas encore prêt à jeter l'ancre de l'autre côté de la
"borderline"; ou alors 2006 commence pas favorablement, pour moi !

Un avis, ou mieux une aide ? ...

(sinon, le recours au Prozac ; il faudrait peut-être que j'achète des
actions ; c'est quel labo déjà ?)

Antoine

3 réponses

Avatar
JB
Bonjour,

=SI(L1="";SI(GAUCHE(K1;8)="Monsieur";"Cher Monsieur";"Chere
Madame");SI(GAUCHE(L1;8)="monsieur";"Cher Monsieur";"Chere Madame"))

Cordialement JB
Avatar
FxM
Bonjour,

If Left("K1", 8) = "Monsieur" Then


Les 8 caractères les plus à gauche de "K1" n'ont jamais été "Monsieur"
mais "K1". Tel que tu l'écris, "K1" n'est que le texte "K1" et pas le
contenu de la cellule K1. Pour cela, il te faut utiliser l'expression
range("K1")

left(...,8) considère les 8 caractères les plus à gauche de ... et le
if(..) vérifie que ce soit "Monsieur" et implicitement PAS "monsieur",
ni "MONSIEUR", ni " Monsieu", ni même "M. " ou "Mr "

Vois du coté de :
if ucase(left(range("K1"),8)) = "MONSIEUR" then

et vérifies également les A14/C14/selection qui semblent avoir été mélangés.

@+
FxM




Antoine76 wrote:
Bonjour à tous,

recevez tous les meilleurs d'un adepte 2005 du forum, pour l'instant plus
"bénéficiaire" du savoir collectif que "contributeur" à ce même savoir. (Ne
dit-on point que la roue tourne ?)

Mais l'année ne fait que débuter en jour de l'an, et il semble qu'il est
encore trop tôt pour que je franchisse la "borderline" du savoir ! En tout
cas si j'en juge par la macro, fort simple d'apparence, qui refuse
obstinément de me donner le résultat escompté...

Dans un classeur, j'ai en K1 le nom de la personne responsable des RH d'une
société, en L1 le nom du DRH de cette même société, pour autant qu'on le
connaisse (dont la cellule est parfois vide). Le contenu de ces 2 cellules
doit, via une macro, alimenter une cellule A14, qui sous analyse de la
cellule L1, va générer en A14 une formule de politesse qui sera "Cher
Monsieur" (si L1 non vide et si le 1er mot de L1 est Monsieur), sinon "Chère
Madame" (si L1 non vide et si le 1er mot de L1 est différent de Monsieur)
Si par contre la cellule L1 est vide, l'analyse se fait alors sur la cellule
K1 (qui correspond à l'intitulé du correspondant des RH) et crédite de
manière similaire en A14 une formule de politesse qui sera "Monsieur" (si L1
vide et si le 1er mot de K1 est Monsieur), sinon "Madame" (si L1 vide et si
le 1er mot de K1 est différent de Monsieur). Dans la ligné de ce qui a été
abordé, la cellule C7 qui contient le nom du correspondant (faisant suite à
la cellule qui disait "A l'attention de ") attribue le nom du DRH ou du
correspondant des RH selon les mêmes critères...
ce qui donne pour la macro,

Sub politesse_drh()
' change la formule de politesse pour les DRH "VIP"
If Range("L1").Value= "" Then
' affiche la bonne formule de politesse de début de texte
Range("C7").Select
Selection.Value = Range("K1").Value
If Left("K1", 8) = "Monsieur" Then
Range("A14").Value = "Cher Monsieur,"
Else
Range("A14").Value = "Chère Madame,"
End If
Else
' affiche la bonne formule de politesse de début de texte
Range("C7").Select
Selection.Value = Range("L1").Value
If Left("L1", 8) = "MONSIEUR" Then
Range("C14").Select
Selection.Value = "Cher Monsieur,"
Else
Range("A14").Value = "Chère Madame,"
End If
End If
End Sub

Si j'ai Madame ZAZA en K1, et Monsieur ZOZO en L1, il est censé préférer L1
à K1. Point donc ! en effet, il m'affiche "Chère Madame" en C14, et
m'affiche Monsieur ZOZO en C7 !
Si j'introduit une variable pour recevoir le nom du DRH (pour le cas où cela
serait responsable du problème), rien n'y fait ! la formule du recours à une
variable pour le nom du DRH n'a rien changé, avec :
Dim nom_drh As String
nom_drh = Range("L1").Value
If nom_drh = "" Then
...
Je crois que je suis pas encore prêt à jeter l'ancre de l'autre côté de la
"borderline"; ou alors 2006 commence pas favorablement, pour moi !

Un avis, ou mieux une aide ? ...

(sinon, le recours au Prozac ; il faudrait peut-être que j'achète des
actions ; c'est quel labo déjà ?)

Antoine





Avatar
Antoine76
Merci FxM, (et aussi à JB).

Effectivement FxM, cela aurait dû me crever les yeux ; mais sans doute
avais-je les yeux trop injectés de sang, et soit cela ne pouvait pas les
crever (cornée trop dure !), soit qu'étant turgescent, la quantité de
l'humeur aqueuse à perdre (!) (liquide du devant de l'oeil) était de toute
façon trop généreusement pourvue!

Tout est ainsi clair ! (surtout pour mes yeux qui viennent de retrouver
toute leur virginité - mais si, mais si !)

avec mes remerciements pour la sauvegarde de la SS (qui n'aura pas à
rembourser ma prochaine dose de prozac), et aussi pour le petit pas de
recentrage que je viens de faire après ce premier jour...

Antoine

"FxM" a écrit dans le message de news:

Bonjour,

If Left("K1", 8) = "Monsieur" Then


Les 8 caractères les plus à gauche de "K1" n'ont jamais été "Monsieur"
mais "K1". Tel que tu l'écris, "K1" n'est que le texte "K1" et pas le
contenu de la cellule K1. Pour cela, il te faut utiliser l'expression
range("K1")

left(...,8) considère les 8 caractères les plus à gauche de ... et le
if(..) vérifie que ce soit "Monsieur" et implicitement PAS "monsieur",
ni "MONSIEUR", ni " Monsieu", ni même "M. " ou "Mr "

Vois du coté de :
if ucase(left(range("K1"),8)) = "MONSIEUR" then

et vérifies également les A14/C14/selection qui semblent avoir été
mélangés.


@+
FxM




Antoine76 wrote:
Bonjour à tous,

recevez tous les meilleurs d'un adepte 2005 du forum, pour l'instant
plus


"bénéficiaire" du savoir collectif que "contributeur" à ce même savoir.
(Ne


dit-on point que la roue tourne ?)

Mais l'année ne fait que débuter en jour de l'an, et il semble qu'il est
encore trop tôt pour que je franchisse la "borderline" du savoir ! En
tout


cas si j'en juge par la macro, fort simple d'apparence, qui refuse
obstinément de me donner le résultat escompté...

Dans un classeur, j'ai en K1 le nom de la personne responsable des RH
d'une


société, en L1 le nom du DRH de cette même société, pour autant qu'on le
connaisse (dont la cellule est parfois vide). Le contenu de ces 2
cellules


doit, via une macro, alimenter une cellule A14, qui sous analyse de la
cellule L1, va générer en A14 une formule de politesse qui sera "Cher
Monsieur" (si L1 non vide et si le 1er mot de L1 est Monsieur), sinon
"Chère


Madame" (si L1 non vide et si le 1er mot de L1 est différent de
Monsieur)


Si par contre la cellule L1 est vide, l'analyse se fait alors sur la
cellule


K1 (qui correspond à l'intitulé du correspondant des RH) et crédite de
manière similaire en A14 une formule de politesse qui sera "Monsieur"
(si L1


vide et si le 1er mot de K1 est Monsieur), sinon "Madame" (si L1 vide et
si


le 1er mot de K1 est différent de Monsieur). Dans la ligné de ce qui a
été


abordé, la cellule C7 qui contient le nom du correspondant (faisant
suite à


la cellule qui disait "A l'attention de ") attribue le nom du DRH ou du
correspondant des RH selon les mêmes critères...
ce qui donne pour la macro,

Sub politesse_drh()
' change la formule de politesse pour les DRH "VIP"
If Range("L1").Value= "" Then
' affiche la bonne formule de politesse de début de texte
Range("C7").Select
Selection.Value = Range("K1").Value
If Left("K1", 8) = "Monsieur" Then
Range("A14").Value = "Cher Monsieur,"
Else
Range("A14").Value = "Chère Madame,"
End If
Else
' affiche la bonne formule de politesse de début de texte
Range("C7").Select
Selection.Value = Range("L1").Value
If Left("L1", 8) = "MONSIEUR" Then
Range("C14").Select
Selection.Value = "Cher Monsieur,"
Else
Range("A14").Value = "Chère Madame,"
End If
End If
End Sub

Si j'ai Madame ZAZA en K1, et Monsieur ZOZO en L1, il est censé préférer
L1


à K1. Point donc ! en effet, il m'affiche "Chère Madame" en C14, et
m'affiche Monsieur ZOZO en C7 !
Si j'introduit une variable pour recevoir le nom du DRH (pour le cas où
cela


serait responsable du problème), rien n'y fait ! la formule du recours à
une


variable pour le nom du DRH n'a rien changé, avec :
Dim nom_drh As String
nom_drh = Range("L1").Value
If nom_drh = "" Then
...
Je crois que je suis pas encore prêt à jeter l'ancre de l'autre côté de
la


"borderline"; ou alors 2006 commence pas favorablement, pour moi !

Un avis, ou mieux une aide ? ...

(sinon, le recours au Prozac ; il faudrait peut-être que j'achète des
actions ; c'est quel labo déjà ?)

Antoine