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.ValueJe voudrais transformer mon code avec
case isMais 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.ValueJe mets mon classeur en PJ si cela intéresse qn.
Merci