Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/01/2012, 14h46   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2010
Messages : 70
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 70
Points : 13
Points : 13
Par défaut Imbrication de SI

Salut,

Je souhaite savoir s'il n'existe pas un moyen plus efficace, plus facile à écrire pour la formule suivante:
Code :
1
2
 
=IF(LEFT(E2;6)="FAILED";IF(ISNUMBER(SEARCH(ERROR1;F2));"ERROR1";IF(ISNUMBER(SEARCH(ERROR2;F2));"ERROR2";IF(ISNUMBER(SEARCH(ERROR3;F2));"ERROR3";IF(ISNUMBER(SEARCH(ERROR4;F2));"ERROR4";IF(ISNUMBER(SEARCH(ERROR5;F2));"ERROR5";IF(ISNUMBER(SEARCH(ERROR6;F2));"ERROR6";IF(ISNUMBER(SEARCH(ERROR7;F2));"ERROR7";IF(ISNUMBER(SEARCH(ERROR8;F2));"ERROR8";IF(ISNUMBER(SEARCH(ERROR9;F2));"ERROR9";IF(ISNUMBER(SEARCH(ERROR10;F2));"ERROR10";IF(ISNUMBER(SEARCH(ERROR11;F2));"ERROR11";IF(ISNUMBER(SEARCH(ERROR12;F2));"ERROR12";IF(ISNUMBER(SEARCH(ERROR13;F2));"ERROR13";IF(ISNUMBER(SEARCH(ERROR14;F2));"ERROR14";"ERROR_NOT_DEFINED"))))))))))))));"")
Sachant que les ERROR1, 2 ... que je cherche sont des variables (des messages texte d'erreur assez long).
Elle fonctionne très bien mais comme j'ai souvent de nouvelle erreur possible, je dois la mettre à jour à chaque fois et ce n'est pas hyper pratique. N'y-a-t'il pas d'ailleurs une limite à imbriquer des IF de la sorte?

Je me demandais donc s'il existait une façon plus simple de le faire, soit en formule soit en vba dans une fonction.

Par avance merci pour votre aide.
yzf-r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 16h13   #2
Membre Expert
 
Homme
Inscription : décembre 2011
Messages : 566
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 566
Points : 1 081
Points : 1 081
Bonjour,

En VBA une des façon de faire :
- tester la présence de "FAILED" ne E2,
- faire une boucle sur une plage contenant les messages d'erreurs à tester, en comparant la valeur contenu dans chaque cellule
au message d'erreur.
- concaténer "ERREUR" et la position du message dans la plage (ou mieux, lire la valeur du code dans une colonne adjacente au message).

Idéalement on utilisera des plages nommées pour éviter d'avoir à modifier le code pour ajouter un nouveau code d'erreur.
BlueMonkey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 16h24   #3
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 035
Points : 4 035
Bonjour,

En admettant que ERREUR1, ERREUR2 etc soit le nom de cellules d'une même colonne (dans mon exemple de I1 à I4), le résultat sera donné par la formule matricielle (valider avec Ctrl+Maj+Entrée)
Code :
=IF(LEFT(E2;6)="FAILED";"ERREUR"&MATCH(TRUE;LEN(SUBSTITUTE(F2;I1:I4;""))<>LEN(F2);0);"")
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h13.


 
 
 
 
Partenaires

Hébergement Web