[Excel] transformer une fonction en sa valeur
Résolu
kbastien
Messages postés
64
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis présentement en train de faire un fichier Excel simulant une "Departure List" pour simuler du trafic aérien virtuel. je suis maintenant à l'étape d'assigner aléatoirement un "code transpondeur" (4 chiffre dont chacun varie de 0 à 7; ex:0577) j'ai créer une macro toutes simple qui fait automatiquement cela.
la formule que la macro envois dans la case que je lui assigne est: =ALEA.ENTRE.BORNES(1;7) & ALEA.ENTRE.BORNES(1;7) & ALEA.ENTRE.BORNES(1;7) & ALEA.ENTRE.BORNES(1;7)
Le but de cela est d'assigner un code transpondeur à chaque aéronef, mais celui-ci, une fois assigner, NE DOIT PLUS CHANGER. C'est là le problème, car dès que j'entre une autre donnée dans ma feuille Excel le "code" change.
Je cherche une manière (fonction à intégrer dans ma macro) ou tout simplement une autre macro. Cette macro me permettrais de transformer automatiquement, dès la création de la valeur aléatoire par ma macro, en valeur fixe où l'on pourrais aller dans la barre de formule et voir tout simplement 0577 au lieu de la grande formule.
Je sais que c'est pas tout simple ma question, mais je suis sur qu'il y a de très bonne personnes qui sont plus calé que moi dans Excel et qui pourrons m'aider
S'il y a des parties qui ne sont pas trop claires à vos yeux n'hésitez pas à me poser des question pour éclairer ce sujet.
Merci d'avance à tout commentaire constructif
sous excel 2007
Je suis présentement en train de faire un fichier Excel simulant une "Departure List" pour simuler du trafic aérien virtuel. je suis maintenant à l'étape d'assigner aléatoirement un "code transpondeur" (4 chiffre dont chacun varie de 0 à 7; ex:0577) j'ai créer une macro toutes simple qui fait automatiquement cela.
la formule que la macro envois dans la case que je lui assigne est: =ALEA.ENTRE.BORNES(1;7) & ALEA.ENTRE.BORNES(1;7) & ALEA.ENTRE.BORNES(1;7) & ALEA.ENTRE.BORNES(1;7)
Le but de cela est d'assigner un code transpondeur à chaque aéronef, mais celui-ci, une fois assigner, NE DOIT PLUS CHANGER. C'est là le problème, car dès que j'entre une autre donnée dans ma feuille Excel le "code" change.
Je cherche une manière (fonction à intégrer dans ma macro) ou tout simplement une autre macro. Cette macro me permettrais de transformer automatiquement, dès la création de la valeur aléatoire par ma macro, en valeur fixe où l'on pourrais aller dans la barre de formule et voir tout simplement 0577 au lieu de la grande formule.
Je sais que c'est pas tout simple ma question, mais je suis sur qu'il y a de très bonne personnes qui sont plus calé que moi dans Excel et qui pourrons m'aider
S'il y a des parties qui ne sont pas trop claires à vos yeux n'hésitez pas à me poser des question pour éclairer ce sujet.
Merci d'avance à tout commentaire constructif
sous excel 2007
A voir également:
- [Excel] transformer une fonction en sa valeur
- Fonction si et excel - Guide
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Mise en forme conditionnelle excel - Guide
- Word et excel gratuit - Guide
3 réponses
Bonjour,
Autre proposition avec une fonction personnalisée.
Tu lui passes en paramètre l'identification de l'appareil.
Un ident retournera toujours le même n° de transpondeur.
Ex :
ACA234 -> 7620
COO994 -> 630
Syntaxe :
=transpondeur(B3)
https://www.cjoint.com/?BFDuTvkC8fk
eric
Autre proposition avec une fonction personnalisée.
Tu lui passes en paramètre l'identification de l'appareil.
Un ident retournera toujours le même n° de transpondeur.
Ex :
ACA234 -> 7620
COO994 -> 630
Function transpondeur(ch As String) As Long Dim i As Long, graine For i = 1 To Len(ch) graine = graine * 10 + CLng(Asc(Mid(ch, i, 1)) - 47) Next i Rnd (-graine) For i = 1 To 4 transpondeur = transpondeur * 10 + Int(Rnd() * 8) Next i End Function
Syntaxe :
=transpondeur(B3)
https://www.cjoint.com/?BFDuTvkC8fk
eric
Bonjour,
exemple:
Bonne suite
exemple:
Sub test() 'Bornes 0-7 'si 1-7: CStr(Int(7 * Rnd)+1) y = CStr(Int(7 * Rnd)) & CStr(Int(7 * Rnd)) & CStr(Int(7 * Rnd)) & CStr(Int(7 * Rnd)) 'Mettre format cellule en texte si bornes 0-7 Worksheets("feuil1").Range("A1") = Format(y, "0000") End Sub
Bonne suite
bonjour
RQ1. le code de f894009 (cordiales salutations à toi) produit une chaine
RQ2. une petite erreur (je crois), int(7*rnd) produit un entier de 0 à 6
donc pour un entier de 0 à 7 c'est int(8*rnd)
RQ3. si tu veux produire un entier
y = 1000*int(8*rnd)+100*int(8*rnd)+10*int(8*rnd)+int(8*rnd)
mettre la cellule recevant l'entier au format personnalisé 0000
bonne journée
RQ1. le code de f894009 (cordiales salutations à toi) produit une chaine
RQ2. une petite erreur (je crois), int(7*rnd) produit un entier de 0 à 6
donc pour un entier de 0 à 7 c'est int(8*rnd)
RQ3. si tu veux produire un entier
y = 1000*int(8*rnd)+100*int(8*rnd)+10*int(8*rnd)+int(8*rnd)
mettre la cellule recevant l'entier au format personnalisé 0000
bonne journée
sa fonctionne, presque.
Je m'explique la macro fonctionne parfaitement excepter que je veux pouvoir faire en sorte que ce soit la cellule qui est sélectionner qui affiche le code, car en ce moment ce n'est que la cellule A1 dans ma feuille 1 qui affiche même en sélectionnant d'autre case ou d'autre feuille ça ne change que la valeur en A1
exemple :
A_________B________C_____D___ E_____F_____G______H____________I
DEP_____ACID_____TYPE___FR __ALT__DEST__RWR___CODE _______Callsing
CYYZ___ACA680____B747____I___FL310 CYUL____27___0577______AIR CANADA
CYXU___AFR228____A380____I___FL320 CYUL____27___4531______AIR FRANCE
....
il faut que la macro puisse donner des codes pour chacuns et dans la cellule que je sélectionne en l'occurrence les cellule de la ligne «H»
Je m'explique la macro fonctionne parfaitement excepter que je veux pouvoir faire en sorte que ce soit la cellule qui est sélectionner qui affiche le code, car en ce moment ce n'est que la cellule A1 dans ma feuille 1 qui affiche même en sélectionnant d'autre case ou d'autre feuille ça ne change que la valeur en A1
exemple :
A_________B________C_____D___ E_____F_____G______H____________I
DEP_____ACID_____TYPE___FR __ALT__DEST__RWR___CODE _______Callsing
CYYZ___ACA680____B747____I___FL310 CYUL____27___0577______AIR CANADA
CYXU___AFR228____A380____I___FL320 CYUL____27___4531______AIR FRANCE
....
il faut que la macro puisse donner des codes pour chacuns et dans la cellule que je sélectionne en l'occurrence les cellule de la ligne «H»
eric