Conditions imbriquées

Bonsoir,

Généalogiste, je voudrais créer une macro qui permette d'analyser les noms et de rejeter la particule à la fin.

Comme plusieurs cas sont possibles j'ai empilé les

=SI()

mais apparemment on ne peut en empiler qu'un nombre limité et j'en ai 1 de trop.

  • des
  • de la
  • de l'
  • de
  • du
  • d'

Le nom à tester est en

Range("D" & rang)

et l'analyse se fait en

Range("W" & rang).Select
    Range("W" & rang).Select
     ActiveCell.FormulaR1C1 = _
"=IF(OR(LEFT(RC[-19],4)=""DES "",LEFT(RC[-19],4)=""DES-"",LEFT(RC[-19],4)=""DES_""),CONCATENATE(RIGHT(RC[-19],LEN(RC[-19])-4),"" (des)""),IF(OR(LEFT(RC[-19],6)=""DE-LA-"",LEFT(RC[-19],6)=""DE_LA_"",LEFT(RC[-19],6)=""DE LA ""),CONCATENATE(RIGHT(RC[-19],LEN(RC[-19])-6),"" (de la)""),IF(OR(LEFT(RC[-13],5)=""DE-L'"",LEFT(RC[-19],5)=""DE_L'"",LEFT(RC[-19],5)=""DE L'""),CONCATENATE(RIGHT(RC[-13],LEN(RC[-19])-5),"" (de l')""),IF(OR(LEFT(RC[-19],3)=""DE-"",LEFT(RC[-19],3)=""DE_"",LEFT(RC[-19],3)=""DE ""),CONCATENATE(RIGHT(RC[-13],LEN(RC[-13])-3),"" (de)""),IF(OR(LEFT(RC[-19],3)=""DU-"",LEFT(RC[-19],3)=""DU_"",LEFT(RC[-19],3)=""DU ""),CONCATENATE(RIGHT(RC[-19],LEN(RC[-19])-3),"" (du)""),IF(OR(LEFT(RC[-19],2)=""D-"",LEFT(RC[-19],2)=""D_"",,LEFT(RC[-19],2)=""D'""LEFT(RC[-19],2)=""D ""),CONCATENATE(RIGHT(RC[-19],LEN(RC[-19])-2),"" (du)"")RC[-19])))))"
leNom1 = ActiveCell.Value

Je voudrais transformer mon code avec

case is

Mais je n'arrive pas à le rédiger.

Merci de votre aide

Bonjour

Des erreurs dans ta formule

Pour faire des tests sur une macro possible, peux tu fournir un fichier contenant des données reprenant les divers cas (si possible)

Et avoir la liste des particules à modifier ainsi que leurs remplaçantes

Dans ta formule tu concatènes des fois avec la colonne J : Erreur ou normal ?

Bonjour,

Merci de m'avoir signalé l'erreur de frappe RC[-13] "J" au lieu de RC[-19] "D".

Du coup, j'ai mieux regardé ma formule et trouvé qq autres erreurs de syntaxe.

Tout fonctionne à présent.

leNom1 = ""
    Cells(rang, 23).Select
    ActiveCell.FormulaR1C1 = _
        "=IF(OR(LEFT(RC[-19],4)=""DES "",LEFT(RC[-19],4)=""DES-"",LEFT(RC[-19],4)=""DES_""),CONCATENATE(RIGHT(RC[-19],LEN(RC[-19])-4),"" (des)""),IF(OR(LEFT(RC[-19],6)=""DE-LA-"",LEFT(RC[-19],6)=""DE_LA_"",LEFT(RC[-19],6)=""DE LA ""),CONCATENATE(RIGHT(RC[-19],LEN(RC[-19])-6),"" (de la)""),IF(OR(LEFT(RC[-19],3)=""DE-"",LEFT(RC[-19],3)=""DE_"",LEFT(RC[-19],3)=""DE ""),CONCATENATE(RIGHT(RC[-19],LEN(RC[-19])-3),"" (de)""),IF(OR(LEFT(RC[-19],3)=""DU-"",LEFT(RC[-19],3)=""DU_"",LEFT(RC[-19],3)=""DU ""),CONCATENATE(RIGHT(RC[-19],LEN(RC[-19])-3),"" (du)""),IF(OR(LEFT(RC[-19],2)=""D-"",LEFT(RC[-19],2)=""D_"",LEFT(RC[-19],2)=""D "",LEFT(RC[-19],2)=""D'""),CONCATENATE(RIGHT(RC[-19],LEN(RC[-19])-2),"" (d')""),RC[-19])))))"
    leNom1 = ActiveCell.Value

Je mets mon classeur en PJ si cela intéresse qn.

Merci

Rechercher des sujets similaires à "conditions imbriquees"