conversion (formule ou VBA)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 ?
 
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
 
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
 
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:
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:
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
 
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
 
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 😛
 
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
 
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) 😛

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 😛 je l'adore
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

H
Réponses
4
Affichages
724
S
Réponses
1
Affichages
1 K
Réponses
8
Affichages
1 K
Réponses
1
Affichages
663
B
  • Question Question
Microsoft 365 colorer une plage
Réponses
2
Affichages
970
bd.afaf
B
M
Réponses
0
Affichages
1 K
Maud Gauthier
M
Réponses
8
Affichages
1 K
S
Réponses
3
Affichages
1 K
S
Retour