Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 EXCEL VBA formule IFERROR

Mimifine

XLDnaute Nouveau
Bonjour à tous

Je dois mettre à jour une formule dans une macro créée par un collaborateur et je bloque, j'espère être suffisamment précise pour que vous puissiez m'aider

Extrait de la formule commençant par IFERROR(IF(COUNTIF(

"=IFERROR(IF(COUNTIF(RC[14],""*MONNAYEUR*""),MID(RC[14],11,6),IF(LEN(RC[-1])=12,
MID(RC[-1],7,4)&""4""&MID(RC[-1],12,1),
IF(RC[-2]=""ES21C"",RIGHT(LEFT(RC[14],7),6),
IF(RC[-2]=""ES38C"",MID(RC[-1],9,4)&""4""&MID(RC[-1],14,1),
IF(RC[-2]=""ES23C"",MID(RC[14],1,4)&""4""&MID(RC[14],6,1),
IF(RC[-2]=""ES34C"",RIGHT(LEFT(RC[14],1),6),

....

L'objectif ici est d'extraire les 6 caractères à partir du 11 ème caractère dans la colonne 14 (si présence du mot "MONNAYEUR")
Cela fonctionne très bien sur tous les ES21C, ES38C, ES23C mais cela ne fonctionne pas sur ES34C

Pourquoi ?

Parce que sur ES21C par exemple les 6 caractères que je recherche sont bien en 11 ème position (058897)
11H16-GAB 058897-DECHARGEMENT POUR RAMASSAGE MONNAYEUR RECYCLANT EXT
ES21C​


Par contre avec les ES34C les 6 caractères à extraire se trouve en position 1 et non 11 >134099

134099 S1340-RAMASSAGE MONNAYEUR RECYCLANT-CAISSE 092
ES34C​

Comment puis-je ajouter à la formule existante la condition nécessaire ?

Je vous remercie pour votre aide si possible !!
myriam


 

Mimifine

XLDnaute Nouveau
Je viens de lire le message de bienvenue et je me rends compte que je ne me suis même pas présentée !

Je suis donc nouvelle sur ce forum, je m'appelle Myriam et travaille en Finance
J'ai malheureusement un niveau trop faible en VBA et j'ai repris tout récemment un poste sur lequel beaucoup de macros demandent à être modifiées. Bien sûr le créateur s'en est allé même il a très bien travaillé en les documentant.
Je vais quand même avoir besoin d'aide sur des formules trop compliquées pour moi et c'est là que je compte sur vous !
Bonne journée à tous
 

Mimifine

XLDnaute Nouveau
Non malheureusement déjà essayé et les 6 caractères qui ressortent sont 40-RAM

Je pense vraiment que c'est dans le début de la formule avec IFERROR qu'il faut modifier cette partie :

"=IFERROR(IF(COUNTIF(RC[14],""*MONNAYEUR*""),MID(RC[14],11,6),

Merci pour votre retour
 

Mimifine

XLDnaute Nouveau
Bien sûr la voici :

ActiveCell.FormulaR1C1 = "=IFERROR(IF(COUNTIF(RC[14],""*MONNAYEUR*""),MID(RC[14],11,6),IF(LEN(RC[-1])=12,MID(RC[-1],7,4)&""4""&MID(RC[-1],12,1),IF(RC[-2]=""ES21C"",RIGHT(LEFT(RC[14],7),6),IF(RC[-2]=""ES38C"",MID(RC[-1],9,4)&""4""&MID(RC[-1],14,1),IF(RC[-2]=""ES23C"",MID(RC[14],1,4)&""4""&MID(RC[14],6,1),IF(RC[-2]=""TE01C"",RIGHT(RC[14],6),IF(RC[-2]=""ES34C"",LEFT(RC[14],6),IF(OR(RC[-2]=""ES44C"",RC[-2]=""ES38C"",RC[-2]=""ES45C""),RIGHT(LEFT(RC[14],12),6),IF(RC[-2]=""TE10C"",RIGHT(LEFT(RC[14],13),6),IF(LEFT(RC[14],1)=""S"",""NC"",LEFT(MID(RC[14],1,FIND("" "",RC[14],1)-1),6))))))))))),""NC"")"
Cells(x, 4) = Cells(x, 4).Value
 

mbmb

XLDnaute Nouveau
Le IFERROR affiche un résultat ou "NC"

Si je comprends ... la formule va afficher les 6 caractères à partir du 11ème s'il y a Monnayeur ... et "autre chose" (fonction du code à 4 caractère) si ce n'est pas Monnayeur ...

Hors, là, tu voudrais un cas particulier pour monnayeur / ES34C => C'est çà ?
 

mbmb

XLDnaute Nouveau
VB:
ActiveCell.FormulaR1C1 = "=IFERROR(IF(RC[-2]=""ES34C"",LEFT(RC[14],6),IF(COUNTIF(RC[14],""*MONNAYEUR*""),MID(RC[14],11,6),IF(LEN(RC[-1])=12,MID(RC[-1],7,4)&""4""&MID(RC[-1],12,1),IF(RC[-2]=""ES21C"",RIGHT(LEFT(RC[14],7),6),IF(RC[-2]=""ES38C"",MID(RC[-1],9,4)&""4""&MID(RC[-1],14,1),IF(RC[-2]=""ES23C"",MID(RC[14],1,4)&""4""&MID(RC[14],6,1),IF(RC[-2]=""TE01C"",RIGHT(RC[14],6),IF(RC[-2]=""ES34C"",LEFT(RC[14],6),IF(OR(RC[-2]=""ES44C"",RC[-2]=""ES38C"",RC[-2]=""ES45C""),RIGHT(LEFT(RC[14],12),6),IF(RC[-2]=""TE10C"",RIGHT(LEFT(RC[14],13),6),IF(LEFT(RC[14],1)=""S"",""NC"",LEFT(MID(RC[14],1,FIND("" "",RC[14],1)-1),6)))))))))))),""NC"")"
Cells(x, 4) = Cells(x, 4).Value
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…