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

Traiter #VALEUR! en Vba

2 réponses
Avatar
ChristianM
Bonjour à vous

A paritr du numéro de sécurité sociale, je récupère les 5 premiers chiffres
à savoir sexe (1 ou 2), année de naissance sur 2 chiffres et mois sur 2
chiffres. Exemple : le numéro de sécurité sociale 1651239383010 donne 16512.
A l'aide de la partie de code ci-dessous, à l'intérieur d'une macro, je
transforme ceci en date (pour le jour je considère tout le monde né le 01 du
mois). Cela fonctionne bien sauf...
que certaines personnes sont nées à l'étranger et que le mois peut-être
indiqué par un nombre supérieur à 12 ; j'ai par exemple un salarié avec
16520 : il n'y a pas de mois 20 à ma connaissance (sauf pour les ENARC !).
Donc , dans ce cas précis, ma macro me retourne #VALEUR!.
En excel on écrit =si(esterreur( blabla..) ; comment l'écrire en Vba ?

ActiveCell.FormulaR1C1 =
"=TEXT(""01/""&RIGHT(RC[-14],2)&""/""&MID(RC[-14],2,2),""jj/mm/aa"")"--

Merci de votre aide

ChristianM

2 réponses

Avatar
Daniel.C
Bonjour.
Essaie :
=IF(MID(RC[242],4,2)>12,"Erreur",TEXT("01/"&MID(RC[242],4,2)&"/"&MID(RC[242],2,2),"jj/mm/aa"))
( j'ai changé la partie "RIGHT(RC[-14]" qui m'a paru incorrecte ).
Cordialement.
Daniel

Bonjour à vous

A paritr du numéro de sécurité sociale, je récupère les 5 premiers chiffres à
savoir sexe (1 ou 2), année de naissance sur 2 chiffres et mois sur 2
chiffres. Exemple : le numéro de sécurité sociale 1651239383010 donne 16512.
A l'aide de la partie de code ci-dessous, à l'intérieur d'une macro, je
transforme ceci en date (pour le jour je considère tout le monde né le 01 du
mois). Cela fonctionne bien sauf...
que certaines personnes sont nées à l'étranger et que le mois peut-être
indiqué par un nombre supérieur à 12 ; j'ai par exemple un salarié avec 16520 :
il n'y a pas de mois 20 à ma connaissance (sauf pour les ENARC !). Donc ,
dans ce cas précis, ma macro me retourne #VALEUR!.
En excel on écrit =si(esterreur( blabla..) ; comment l'écrire en Vba ?

ActiveCell.FormulaR1C1 =
"=TEXT(""01/""&RIGHT(RC[-14],2)&""/""&MID(RC[-14],2,2),""jj/mm/aa"")"--

Merci de votre aide

ChristianM


Avatar
Daniel.C
Erratum
=IF(MID(RC[-14],4,2)>12,"Erreur",TEXT("01/"&MID(RC[-14],4,2)&"/"&MID(RC[-14],2,2),"jj/mm/aa"))
Daniel
Bonjour.
Essaie :
=IF(MID(RC[242],4,2)>12,"Erreur",TEXT("01/"&MID(RC[242],4,2)&"/"&MID(RC[242],2,2),"jj/mm/aa"))
( j'ai changé la partie "RIGHT(RC[-14]" qui m'a paru incorrecte ).
Cordialement.
Daniel

Bonjour à vous

A paritr du numéro de sécurité sociale, je récupère les 5 premiers chiffres
à savoir sexe (1 ou 2), année de naissance sur 2 chiffres et mois sur 2
chiffres. Exemple : le numéro de sécurité sociale 1651239383010 donne
16512. A l'aide de la partie de code ci-dessous, à l'intérieur d'une macro,
je transforme ceci en date (pour le jour je considère tout le monde né le
01 du mois). Cela fonctionne bien sauf...
que certaines personnes sont nées à l'étranger et que le mois peut-être
indiqué par un nombre supérieur à 12 ; j'ai par exemple un salarié avec
16520 : il n'y a pas de mois 20 à ma connaissance (sauf pour les ENARC !).
Donc , dans ce cas précis, ma macro me retourne #VALEUR!.
En excel on écrit =si(esterreur( blabla..) ; comment l'écrire en Vba ?

ActiveCell.FormulaR1C1 =
"=TEXT(""01/""&RIGHT(RC[-14],2)&""/""&MID(RC[-14],2,2),""jj/mm/aa"")"--

Merci de votre aide

ChristianM