Tibo
XLDnaute Barbatruc
Rebonjour à tous,
Je viens de poster sur un autre fil une méthode pour inverser les lettres d'un mot :
Lien supprimé
Je me suis servi de cette méthode pour transcrire des chiffres romains.
Je suis parti du principe qu'il était plus facile d'analyser une chaîne de caractère de gauche à droite plutôt que de droite à gauche.
Pour analyser les chifffres romains, il me fallait donc inverser la chaine de lettres.
Le principe passe également par la construction d'une matrice via une formule nommée. Cette matrice étant ensuite exploitée par un INDEX.
r = le chiffre romain à transcrire
rm=CHOISIR(EQUIV(STXT(r;NBCAR(r)+1-LIGNE(INDIRECT(1&':'&NBCAR(r)));1);{'I';'V';'X';'L';'C';'D';'M'};0);1;5;10;50;100;500;1000)
la formule avec INDEX :
=SI(NBCAR(r)>0;INDEX(rm;1)
+SI(NBCAR(r)>1;INDEX(rm;2)*SI(INDEX(rm;2)>=INDEX(rm;1);1;-1)
+SI(NBCAR(r)>2;INDEX(rm;3)*SI(INDEX(rm;3)>=INDEX(rm;2);1;-1)
+SI(NBCAR(r)>3;INDEX(rm;4)*SI(INDEX(rm;4)>=INDEX(rm;3);1;-1)
+SI(NBCAR(r)>4;INDEX(rm;5)*SI(INDEX(rm;5)>=INDEX(rm;4);1;-1)
+SI(NBCAR(r)>5;INDEX(rm;6)*SI(INDEX(rm;6)>=INDEX(rm;5);1;-1)
+SI(NBCAR(r)>6;INDEX(rm;7)*SI(INDEX(rm;7)>=INDEX(rm;6);1;-1)
+SI(NBCAR(r)>7;INDEX(rm;8)*SI(INDEX(rm;8)>=INDEX(rm;7);1;-1)
+SI(NBCAR(r)>8;INDEX(rm;9)*SI(INDEX(rm;9)>=INDEX(rm;8);1;-1)
+SI(NBCAR(r)>9;INDEX(rm;10)*SI(INDEX(rm;10)>=INDEX(rm;9);1;-1)
+SI(NBCAR(r)>10;INDEX(rm;11)*SI(INDEX(rm;11)>=INDEX(rm;10);1;-1)
+SI(NBCAR(r)>11;INDEX(rm;12)*SI(INDEX(rm;12)>=INDEX(rm;11);1;-1)
+SI(NBCAR(r)>12;INDEX(rm;13)*SI(INDEX(rm;13)>=INDEX(rm;12);1;-1)
+SI(NBCAR(r)>13;INDEX(rm;14)*SI(INDEX(rm;14)>=INDEX(rm;13);1;-1)
+SI(NBCAR(r)>14;INDEX(rm;15)*SI(INDEX(rm;15)>=INDEX(rm;14);1;-1)
+SI(NBCAR(r)>15;INDEX(rm;16)*SI(INDEX(rm;16)>=INDEX(rm;15);1;-1)
Le plus long chiffre romain que la formule puisse transcrire est 5888.
Compte tenu du fait qu'il s'agit généralement d'années, cela devrait permettre d'utiliser cette formule pendant quelque temps (en attendant que Billou augmente la taille maxi des formules)
Bon dimanche à tous
P.S. : là aussi, remplacer les par ; ) (sans l'espace). Ah satanés smileys...
[file name=_transcription_chiffre_romain.zip size=2576]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/_transcription_chiffre_romain.zip[/file]
Message édité par: tibo, à: 04/09/2005 10:30
Je viens de poster sur un autre fil une méthode pour inverser les lettres d'un mot :
Lien supprimé
Je me suis servi de cette méthode pour transcrire des chiffres romains.
Je suis parti du principe qu'il était plus facile d'analyser une chaîne de caractère de gauche à droite plutôt que de droite à gauche.
Pour analyser les chifffres romains, il me fallait donc inverser la chaine de lettres.
Le principe passe également par la construction d'une matrice via une formule nommée. Cette matrice étant ensuite exploitée par un INDEX.
r = le chiffre romain à transcrire
rm=CHOISIR(EQUIV(STXT(r;NBCAR(r)+1-LIGNE(INDIRECT(1&':'&NBCAR(r)));1);{'I';'V';'X';'L';'C';'D';'M'};0);1;5;10;50;100;500;1000)
la formule avec INDEX :
=SI(NBCAR(r)>0;INDEX(rm;1)
+SI(NBCAR(r)>1;INDEX(rm;2)*SI(INDEX(rm;2)>=INDEX(rm;1);1;-1)
+SI(NBCAR(r)>2;INDEX(rm;3)*SI(INDEX(rm;3)>=INDEX(rm;2);1;-1)
+SI(NBCAR(r)>3;INDEX(rm;4)*SI(INDEX(rm;4)>=INDEX(rm;3);1;-1)
+SI(NBCAR(r)>4;INDEX(rm;5)*SI(INDEX(rm;5)>=INDEX(rm;4);1;-1)
+SI(NBCAR(r)>5;INDEX(rm;6)*SI(INDEX(rm;6)>=INDEX(rm;5);1;-1)
+SI(NBCAR(r)>6;INDEX(rm;7)*SI(INDEX(rm;7)>=INDEX(rm;6);1;-1)
+SI(NBCAR(r)>7;INDEX(rm;8)*SI(INDEX(rm;8)>=INDEX(rm;7);1;-1)
+SI(NBCAR(r)>8;INDEX(rm;9)*SI(INDEX(rm;9)>=INDEX(rm;8);1;-1)
+SI(NBCAR(r)>9;INDEX(rm;10)*SI(INDEX(rm;10)>=INDEX(rm;9);1;-1)
+SI(NBCAR(r)>10;INDEX(rm;11)*SI(INDEX(rm;11)>=INDEX(rm;10);1;-1)
+SI(NBCAR(r)>11;INDEX(rm;12)*SI(INDEX(rm;12)>=INDEX(rm;11);1;-1)
+SI(NBCAR(r)>12;INDEX(rm;13)*SI(INDEX(rm;13)>=INDEX(rm;12);1;-1)
+SI(NBCAR(r)>13;INDEX(rm;14)*SI(INDEX(rm;14)>=INDEX(rm;13);1;-1)
+SI(NBCAR(r)>14;INDEX(rm;15)*SI(INDEX(rm;15)>=INDEX(rm;14);1;-1)
+SI(NBCAR(r)>15;INDEX(rm;16)*SI(INDEX(rm;16)>=INDEX(rm;15);1;-1)
Le plus long chiffre romain que la formule puisse transcrire est 5888.
Compte tenu du fait qu'il s'agit généralement d'années, cela devrait permettre d'utiliser cette formule pendant quelque temps (en attendant que Billou augmente la taille maxi des formules)
Bon dimanche à tous
P.S. : là aussi, remplacer les par ; ) (sans l'espace). Ah satanés smileys...
[file name=_transcription_chiffre_romain.zip size=2576]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/_transcription_chiffre_romain.zip[/file]
Message édité par: tibo, à: 04/09/2005 10:30