IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

recherche une équivalent de Mid


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut recherche une équivalent de Mid
    Bonjour , j'ai une simple petite question à laquelle je souhaite ( pour le moment ) juste un oui ou un non comme réponse :

    On sait que la fonction Mid permet d'afficher certains caractères d'une chaine de caractères , mais existe il une fonction similaire qui fait pareil sur un nombre ?

    Genre avec mid si j'ai le mot informatique , je peux afficher matique .
    Moi je cherche une fonction qui à partir d'un nombre , par exemple 5689 peut renvoyer 89 , existe t'elle ?

    Je souhaite vraiment juste un oui ou non , et suivant la réponse une autre question viendra ensuite , je vous remercie .

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    A mon avis : non.

    PGZ

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    val(mid(monnombre;start;nb))

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    ((5689/100)-ENT(5689/100))*100

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    As-tu essayé ?

    Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function TestMid(lngNbr As Double)
        MsgBox Mid(lngNbr, 3, 2)
    End Function

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    je suppose que en visual basic les chiffres ne peuvent pas etre considérés comme une chaine de caractères , meme avec un code genre ascii ?

    j'aimerais donc savoir si en visual basic ya une fonction qui par rapport à un nombre , par exemple 5689 sait reconnaitre le chiffre des dizaines , des centaines ...?

    merci

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    et simplement right ? il convient pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MsgBox Right(5689, 2)

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    non cart msgbox c'est pour les procédures , moi là je reste dans le domaine fonction....

  9. #9
    Invité
    Invité(e)
    Par défaut
    Re

    Citation Envoyé par Maxence45 Voir le message

    j'aimerais donc savoir si en visual basic ya une fonction qui par rapport à un nombre , par exemple 5689 sait reconnaitre le chiffre des dizaines , des centaines ...?
    Non il n'existe pas de fonction toute faite, c'est à toi de la créer, avec une extraction.

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Command1_Click()
      toto = 5689
      MsgBox toto Mod (toto \ 100) * 100
    End Sub

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    msgbox c'est juste pour dire .
    pour une fonction c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Function test()
    test = Right(1989, 2)
    End Function

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Coucou,


    Bien que je ne ferais jamais la chose pour moi-même, j'ai voulu "jouer le jeu" et faire une fonction à la fois sans string (à poil, alors ?) et paramétrable :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub Command1_Click()
      Dim toto As Integer
      toto = 5689
      MsgBox "dixmilliers " & coucou(toto, 10000)
      MsgBox "milliers " & coucou(toto, 1000)
      MsgBox "centaines " & coucou(toto, 100)
      MsgBox "dizaines " & coucou(toto, 10)
      MsgBox "unités " & coucou(toto, 1)
    End Sub
     
    Private Function coucou(nb As Integer, sect As Integer) As Integer
      Dim n As Integer
      n = 10000
      While n >= sect
        coucou = nb \ n
        nb = nb - (coucou * n)
        n = n / 10
      Wend
    End Function

  13. #13
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    bonjour à tous

    Pour les disaines
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    right(int(nombre/10),1)
    pour les centaines
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    right(int(nombre/100),1)
    bonne soirée

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    voilà la "distraction" dont je veux vous faire profiter (bien qu'à mon sens, une autre fois, démesurée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub Command1_Click()
      Dim toto As Integer
      toto = 5689
      MsgBox "dixmilliers " & coucou(toto, 10000)
      MsgBox "milliers " & coucou(toto, 1000)
      MsgBox "centaines " & coucou(toto, 100)
      MsgBox "dizaines " & coucou(toto, 10)
      MsgBox "unités " & coucou(toto, 1)
    End Sub
     
    Private Function coucou(nb As Integer, sect As Integer) As Integer
      Dim n As Integer
      n = 10000
      While n >= sect
        coucou = nb \ n
        nb = nb - (coucou * n)
        n = n / 10
      Wend
    End Function
    Merci ucfoutue, tu as raison, c'est beaucoup plus simple que les solutions proposées jusque là.
    Mais il est vrai que
    Citation Envoyé par Maxence45
    moi là je reste dans le domaine fonction....
    alors avec le code de Random
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test()
    Valeur = 5856
    ValeurTronquee = ValMid(Valeur, 3, 2)
    MsgBox ValeurTronquee
    End Sub
     
    Function ValMid(Valeur, deb, fin)
        ValMid = Val(Mid(Valeur, deb, fin))
    End Function

  15. #15
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir ousk,

    1) je n'ai pas écrit celà au hasard ! je l'ai fait ainsi uniquement parce que j'ai bien vu les autres questions posées par Maxence.
    Je ne serais maintenant pas étonné s'il demandait la même chose en récursivité (et son travail est alors déjà maché)
    2) j'ai précisé que je m'étais amusé à éviter le traitement de chaînes de caractères, et ajouté que je ne ferais jamais ainsi dans mes applications.
    3) il vaut mieux que j'évite ici d'étaler ce que je mettrais personnellement en oeuvre, si l'on accepte de traiter des chaines de caractères....(tu bondirais... et pourtant... le chrono en main serait le seul juge...)

    Je laisse maintenant Maxence venir... si tu permets...

    Bonne continuation...

    PS : dis-voir : tu devrais relire ce qu'a écrit Maxence à propos d'une fonction pouvant extraire à la demande les unités, les dizaines, etc... (je pense qu'il voulait dire : quel que soit le nombre) et explique ensuite quelle lourdeur tu devras ajouter en traitant des chaînes de caractères, à commencer par les conditions nécessaires sur le Len(machin).

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    en fait je cherchais à créer une fonction qui renvoit le miroir d'un nombre , alors j'en ai une qui marche mais en suivant l'évolution de la boucle ça ne tourne pas rond :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function miroirNombre(ByVal n As Double) As Double
    Dim yop As Long
    yop = 0
        Do Until n = 0
        yop = yop * 10 + n Mod 10
        n = n \ 10
        Loop
        miroirNombre = yop
    End Function
    tout va bien , pour n = 865 :

    à 0 tours , yop = 0
    à 1 tour , yop = 0 * 10 + 865 mod 10 = 5 , n = 865 \ 10 = 86
    à 2 tours , yop = 5*10 + 86 mod 10 = 56 , n = 86 \ 10 = 6...

  17. #17
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Excusez-moi (hors sujet)...
    Juste un petit coucou à faire à quelqu'un...d'abord

    A toi, Maxence, maintenant :

    S'agit-il d'un exercice imposé ? Et si oui : t'interdit-t-on d'utiliser le traitement de chaînes de caractères ?

    Le passage par le traitement de chaînes facilite grandement et on le mettra en oeuvre en 2 coups de cueillères à pot (s'il est autorisé, bien sur ...)

    Tu dis...

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    oui c'etait imposé et je n'avais pas le droit d'utiliser le traitement des chaines , merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/02/2008, 22h41
  2. Rechercher une sous chaine dans une chaine
    Par annedjomo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/02/2005, 10h36
  3. Rechercher une sous chaine dans une chaine
    Par Oluha dans le forum ASP
    Réponses: 4
    Dernier message: 03/02/2005, 14h39
  4. Réponses: 7
    Dernier message: 26/10/2004, 11h02
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo