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 :

Extraire un chiffre ou un nombre dans une désignation


Sujet :

Macros et VBA Excel

  1. #21
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Quand tant de fées se penchent sur ton berceau, précise à laquelle tu t'adresses
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  2. #22
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Points : 57
    Points
    57
    Par défaut
    C'est good, j'avais oublié qu'une fonction on pouvais l'utiliser direct dans le code ahahahah

    DOnc voila ce que ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C" & compteur).Value = DIM3(Cells(compteur, 2))
    avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function DIM3(s As String) As Double
        DIM3 = Val(Split(s, "X")(1))
    End Function

    MERCCCIIIIII

  3. #23
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Sinon, pour ce qui est de ton erreur dans la feuille Excel, il faut seulement changer le nom de la fonction : "dim1" est l'adresse d'une cellule et Excel n'aime pas ça.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  4. #24
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    En ouvrant ton fichier je viens de voir que tu n'avais pas encore tout dit sur la chaine à analyser...
    Vu que tu as du texte devant ça ne fonctionnera pas s'il y a un autre X.
    eric

  5. #25
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Points : 57
    Points
    57
    Par défaut
    Bonjour,

    j'espère que tout le monde va bien depuis hier.

    Je vous remercie de vos réponses. En relisant les réponses de chacun, je m’excuse de ne pas exposer mon problème dès le début, mais c'est en continuant mon programme et en faisant des tests que je trouve des contraintes. Donc par la suite je les expose, si je ne trouve pas la solution.

    Voila aujourd'hui la fonction que j'utilise. C'est la fonction que Eric m'a exposé et je le remercie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function dim3()
        dim3 = Val(Split(s, "X")(1))
    End Function
    Cette fonction marchait très bien jusqu'à ce que je test sur une série de produit dont la désignation est la suivante

    'MAX 120*270X10
    Eric tu as été devin sur ce coup là :
    En ouvrant ton fichier je viens de voir que tu n'avais pas encore tout dit sur la chaine à analyser...
    Vu que tu as du texte devant ça ne fonctionnera pas s'il y a un autre X.
    eric
    Et la fonction me renvoie 0. Je n'avais pas pris en compte au cas où la désignation comportait un X.

    Est ce possible de faire la recherche du X de la fin vers le début. Car si nous recherchons le X de cette manière, nous trouverons toujours le X que nous souhaitons.

    J'espère avoir été clair. En une journée, j'ai découvert encore beaucoup de chose grâce à vous.

    Mais la, une nouvelle fois, je bloque.

    Je vous remercie d'avance pour vos réponses, et vous remercie de votre collaboration.

    Cordialement

    Vincent

  6. #26
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut





    Utiliser la fonction InStrRev à la place de la fonction InStr


    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #27
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Points : 57
    Points
    57
    Par défaut
    Je n'utilise pas la fonction InStr.

    ???!!!

  8. #28
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Citation Envoyé par guismoman60 Voir le message
    En relisant les réponses de chacun,
    Relire donc le post #17 et l'aide de la fonction InStrRev, c'est une solution !

    Comme celle de lire le dernier indice renvoyé par Split
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #29
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Tu pourrais... ou alors, remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim3 = Val(Split(s, "X")(1))
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim3 = Val(Split(s, "X")(UBound(Split(s, "X"))))
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  10. #30
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Points : 57
    Points
    57
    Par défaut
    Merci à tous pour vos réponses.

    J'ai utilisé la méthode de Daniel qui marche comme sur des roulettes.

    Deux questions :

    Peux tu me décrire la fonction que tu m'as donné? Car en effet ça marche mais je ne comprends pas la démarche. Histoire de dormir moins bête.

    Comment faites vous pour être si compétant lol

    Cordialement

    VIncent

  11. #31
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Split(s, "X") te découpe la chaine à chaque "X" dans un tableau.
    Si tu as 2 X, l'index du tableau ira de 0 à 2. Pour avoir le 2ème élément tu fais donc = nomTableau(1)
    Ubound() te retourne l'index maxi.
    L'index du dernier élément (qui commence par ton nombre recherché) est donc UBound(Split(s, "X"))

    eric

  12. #32
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par guismoman60 Voir le message
    Comment faites vous pour être si compétant lol
    Nous lisons l'aide.
    Nous utilisons les explorateurs d'objets.
    Nous faisons du pas-à-pas (F8) en ayant affiché les fenêtres de l'interface de programmation (telle que celle des variables locales) et analysons les variables et objets à chaque étape.
    Nous utilisons la touche F1 à chaque fois que nous avons un doute sur une syntaxe et/ou des paramètres.

    Et, surtout, pratiquer et encore pratiquer et ne pas s'arrêter à la moindre difficulté.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  13. #33
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    Debug.Print Xnum("120*275X152E52x152")
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function Xnum(V) As Long
    Dim aa
    Dim Fin As Boolean
    aa = Split(UCase(V & "xx"), "X")(1)
    For I = 1 To Len(aa)
        If IsNumeric(Mid(aa, I, 1)) = False Then Fin = True
        If Fin = True Then Mid(aa, I, 1) = "~"  
    Next
    Xnum = Replace(aa, "~", "")
    End Function
    Dernière modification par Invité ; 19/09/2014 à 15h45.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. mettre chaque chiffre d'un nombre dans une liste
    Par rom117 dans le forum Prolog
    Réponses: 4
    Dernier message: 13/12/2010, 23h39
  2. Réponses: 1
    Dernier message: 28/07/2009, 18h13
  3. Réponses: 3
    Dernier message: 03/05/2008, 16h44
  4. Récupérer 1er chiffre d'un nombre dans une requête
    Par beletteroi dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 26/06/2006, 13h33
  5. Extraire un nombre dans une chaine
    Par SIGOliv dans le forum Access
    Réponses: 16
    Dernier message: 13/03/2006, 15h44

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