XL 2010 EXCEL VBA formule IFERROR

  • Initiateur de la discussion Initiateur de la discussion Mimifine
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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


 
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
 
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
 
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
 
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 çà ?
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 VBA sur outlook
Réponses
14
Affichages
997
Réponses
17
Affichages
1 K
Réponses
1
Affichages
1 K
Retour