conversion (formule ou VBA)

astralon

XLDnaute Occasionnel
Bonjour, j'essaye de faire un code, mais je coince vue le nombre possible

ex :
31 lettres ou chiffres
A_B_C_D_E_F_G_H_I_J_K_L_M_N_O_P_Q_R_S_T_U_V_W_X_Y_Z_1_2_3_4_5

Si j'ai la date de 10 janvier 2006
je dis = 10_01_06 => je prend la 10eme, la première et la sixième lettre
=> JAF

Si je prend le 31 décembre 2015
je dis = 31_12_15 => 5LO

est-ce que vous auriez une formule facile ?
 

Hervé

XLDnaute Barbatruc
Re : conversion (formule ou VBA)

bonjour

en attendant une formule, une solution par formule personnalisée :

Code:
Public Function convdate(cellule As Range)
Dim tablo(1 To 3)
Dim i As Byte

tablo(1) = Day(cellule)
tablo(2) = Month(cellule)
tablo(3) = Right(Year(cellule), 2)

For i = 1 To 3
    Select Case tablo(i)
    Case Is < 27: tablo(i) = Chr(tablo(i) + 64)
    Case Else: tablo(i) = tablo(i) - 26
    End Select
Next i

convdate = Join(tablo, "")

End Function

salut
 

Hervé

XLDnaute Barbatruc
Re : conversion (formule ou VBA)

re

par formule, accroche-toi, c'est moche à voir :) :

date en A1

=SI(JOUR(A1)>26;JOUR(A1)-26;CAR(JOUR(A1)+64))&SI(MOIS(A1)>26;31-MOIS(A1);CAR(MOIS(A1)+64))&SI(CNUM(DROITE(ANNEE(A1);2))>26;DROITE(ANNEE(A1);2)-26;CAR(DROITE(ANNEE(A1);2)+64))

salut
 

Gérard DEZAMIS

XLDnaute Accro
Re : conversion (formule ou VBA)

Bonjour Astralon
Salut Hervé

Une formule avec recherchev
Préparer une plage (nommée "Base")avec toutes les données
1 A2B3C4D5E6F7G8H9I10J11K12L13M14N15O16P17Q18R19S20T21U22V23W24X25Y26Z271282293304315

31/12/2015 donnera =>5LO avec la formule=RECHERCHEV(JOUR(D7);Base;2;0)&RECHERCHEV(MOIS(D7);Base;2;0)&RECHERCHEV((DROITE(ANNEE(D7);2)*1);Base;2;0)

Moins pratique que le soluce d'Hervé bien entendu

@+ GD
 
Dernière édition:

Jocelyn

XLDnaute Barbatruc
Re : conversion (formule ou VBA)

Bonjour le Forum,
Bonjour astralon,

en fichier joint un essai avec construction d'un tableau d'équivalence en feuille base.

Jocelyn

oup's Bonjour Gerard et Hervé désolé pour la collision
 

Pièces jointes

  • astralon.zip
    2.2 KB · Affichages: 43
  • astralon.zip
    2.2 KB · Affichages: 33
  • astralon.zip
    2.2 KB · Affichages: 41

GPLIONEL

XLDnaute Occasionnel
Re : conversion (formule ou VBA)

Bonjour Astralon,

Plus simple peut-être
Si tu commences ta liste A, B,C etc... à partir de la cellule b1

Ta date dans C5

voilà la formule :

=DECALER(A1;0;JOUR(C5))&DECALER(A1;0;MOIS(C5))&DECALER(A1;0;DROITE(ANNEE(C5);2))
 
Dernière édition:

mjo

XLDnaute Impliqué
Re : conversion (formule ou VBA)

Bonjour,

Il me semble qu'il y a problème à partir de 2032.

En dehors de cette restriction :
=SI(JOUR(A1)>26;CAR(JOUR(A1)+22);CAR(JOUR(A1)+64))&CAR(MOIS(A1)+64)&SI(DROITE(ANNEE(A1);2)*1>26;CAR(DROITE(ANNEE(A1);2)+22);CAR(DROITE(ANNEE(A1);2)+64))

mjo
 

Ti_

Nous a quitté
Repose en paix
Re : conversion (formule ou VBA)

salut

plus simple

=STXT("ABCDEFGHIJKLMNOPQRSTUVWXYZ12345";JOUR(B7);1) & STXT("ABCDEFGHIJKLMNOPQRSTUVWXYZ12345";MOIS(B7);1) & STXT("ABCDEFGHIJKLMNOPQRSTUVWXYZ12345";DROITE(ANNEE(B7);2);1)

effectivement, après 2032, ça ne fonctionne plus vu que la chaine ne comporte que 32 caractères, mais on peut l'allonger...

Si on transforme cette chaîne en formule nommée, la formule ci-dessus est raccourcie drastiquement
 

astralon

XLDnaute Occasionnel
Re : conversion (formule ou VBA)

bonjour a toutes et tous,

Là je vous dis un grand merci pour toutes vos recherches, car sur chacune de vos formules, je vais plancher (je eux comprendre votre logique) => je prend un bon café et je commence

Pour ce qui est de 2032, c'est pas grave, parce que je serais pensionner :p
 

astralon

XLDnaute Occasionnel
Re : conversion (formule ou VBA)

GPLIONEL à dit:
Bonjour Astralon,

Plus simple peut-être
Si tu commences ta liste A, B,C etc... à partir de la cellule b1

Ta date dans C5

voilà la formule :

=DECALER(A1;0;JOUR(C5))&DECALER(A1;0;MOIS(C5))&DECALER(A1;0;DROITE(ANNEE(C5);2))


J'ai compris le fonctionnement de ta formule, pas mal, mais ça m'oblige de recopier chaque lettre dans 1 cellule
 

astralon

XLDnaute Occasionnel
Re : conversion (formule ou VBA)

MJO, Hervé,

Votre formule est super, cependant, j'ai quelques problème dans la comprehension de la fonction CAR (elle est dure votre formule) :p

ex si je tape =car(65) ==> A D'où je me dis Alt 65 => A = Yes ok, j'ai compris
malheureusement, si je tape =car(128) => € et si je tape Alt 128 => Ç

Est-ce qu'il y aurait moyen de créer une table avec les car, et les ALT équivalent ? parce que je ne comprend pas bien sont fonctionnement.


Pour TI,

Top Nickel, ta formule est on ne peut plus simple :p je l'adore
 

Ti_

Nous a quitté
Repose en paix
Re : conversion (formule ou VBA)

On suppose que tu as mis ta chaîne de caractères en tant que formule nommée, appelée... Chaine, voilà ce que la formule inverse donnerait :

=DATE(2000+TROUVE(STXT(C8;3;1);Chaine);TROUVE(STXT(C8;2;1);Chaine);TROUVE(STXT(C8;1;1);Chaine))

ici je suppose que toutes les dates sont postérieures à 2000, pour des dates avant 2000 il faudrait rajouter un petit test
 

Discussions similaires

Statistiques des forums

Discussions
312 298
Messages
2 086 983
Membres
103 419
dernier inscrit
mk29