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 :

Récuperer des valeurs numeriques au milieu d'une chaine


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 78
    Par défaut Récuperer des valeurs numeriques au milieu d'une chaine
    Bonjour,

    j'ai cette ligne dans ma cellule :

    =SI(OU(A1=3);"ERREUR"; ( -0,1771*A1 + 16,582))

    et je veux faire un prog vba pour récupérer :

    - 0,1771
    16,582

    j'ai trouvé des fonctions instr et dim , mais j'arrive pas à les récupérer

    auriez vous des idées ?

    merci

    progami

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour progami,

    Alors voici ce que je te propose :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Option Explicit
     
    Sub Convert()
    Dim oStr As String
    Dim k As Integer
    Dim oVal1 As String, oVal2 As String
    Dim oValFin1 As Double, oValFin2 As Double
     
    oStr = Worksheets("Feuil1").Range("B4").FormulaLocal
     
    k = 1
    Do While InStr(k, oStr, ";") <> 0
        k = InStr(k, oStr, ";") + 1
    Loop
     
    oStr = Right(oStr, Len(oStr) - k)
     
    k = InStr(1, oStr, "(") + 1
    Do While Mid(oStr, k, 1) <> "*"
        oVal1 = oVal1 & Mid(oStr, k, 1)
        k = k + 1
    Loop
     
    k = InStr(1, oStr, "+") + 1
    Do While Mid(oStr, k, 1) <> ")"
        oVal2 = oVal2 & Mid(oStr, k, 1)
        k = k + 1
    Loop
     
    oValFin1 = CDbl(Trim(oVal1))
    oValFin2 = CDbl(Trim(oVal2))
     
    MsgBox oValFin1 & " && " & oValFin2
     
    End Sub
    Je pense que je gère pas mal de cas de figure. Ca sera à toi de me dire si ça te convient !

    Cordialement,
    Kimy

  3. #3
    Expert éminent
    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
    Par défaut

    Bonjour, bonjour !

    Kimy ! Split de Split : Chrüterchraft ‼
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Demo()
        Const S = "=SI(OU(A1=3);""ERREUR""; ( -0,1771*A1 + 16,582))"
        MsgBox Split(Split(S, "( ")(1), "*")(0)
        MsgBox Split(Split(S, "+ ")(1), ")")(0)
    End Sub
    ______________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    ______________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse


  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour Marc,

    Oui, c'est vrai ! Heureusement que ta vigilance n'a pas d'égal !

    Cordialement,
    Kimy

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 78
    Par défaut
    Citation Envoyé par Marc-L Voir le message

    Bonjour, bonjour !

    Kimy ! Split de Split : Chrüterchraft ‼
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Demo()
        Const S = "=SI(OU(A1=3);""ERREUR""; ( -0,1771*A1 + 16,582))"
        MsgBox Split(Split(S, "( ")(1), "*")(0)
        MsgBox Split(Split(S, "+ ")(1), ")")(0)
    End Sub
    j avoue que cette methode est très simple mais pourquoi t'as mis ""ERREUR"" au lieu de "ERREUR"
    parce que en utilisant la chaine que j'ai posé c me donne des erreurs

  6. #6
    Expert éminent
    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
    Par défaut




    Comme une chaîne de caractères est encadrée par des guillemets, si la chaîne elle-même contient des guillemets …

  7. #7
    Expert éminent
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Demo1()
        Const S = "=SI(OU(L(-1)C(-3)<23;L(-1)C(-3)>125);""ERREUR"";  (L(-1)C(-3)*L(-1)C(-3))/(-0,06605*L(-1)C(-3)^3 + 0,0116*L(-1)C(-3)^2 - 0,9441*L(-1)C(-3) + 68,642))"
        MsgBox Split(Split(S, "/(")(1), "*")(0)
          SP = Split(S, " + ")
        MsgBox Split(SP(1), "*")(0)
        MsgBox "- " & Split(Split(SP(1), " - ")(1), "*")(0)
        MsgBox Split(SP(2), ")")(0)
    End Sub
    ______________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  8. #8
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 78
    Par défaut
    Citation Envoyé par Kimy_Ire Voir le message
    Bonjour progami,

    Alors voici ce que je te propose :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Option Explicit
     
    Sub Convert()
    Dim oStr As String
    Dim k As Integer
    Dim oVal1 As String, oVal2 As String
    Dim oValFin1 As Double, oValFin2 As Double
     
    oStr = Worksheets("Feuil1").Range("B4").FormulaLocal
     
    k = 1
    Do While InStr(k, oStr, ";") <> 0
        k = InStr(k, oStr, ";") + 1
    Loop
     
    oStr = Right(oStr, Len(oStr) - k)
     
    k = InStr(1, oStr, "(") + 1
    Do While Mid(oStr, k, 1) <> "*"
        oVal1 = oVal1 & Mid(oStr, k, 1)
        k = k + 1
    Loop
     
    k = InStr(1, oStr, "+") + 1
    Do While Mid(oStr, k, 1) <> ")"
        oVal2 = oVal2 & Mid(oStr, k, 1)
        k = k + 1
    Loop
     
    oValFin1 = CDbl(Trim(oVal1))
    oValFin2 = CDbl(Trim(oVal2))
     
    MsgBox oValFin1 & " && " & oValFin2
     
    End Sub
    Je pense que je gère pas mal de cas de figure. Ca sera à toi de me dire si ça te convient !

    Cordialement,
    Kimy
    oui c marche comme il faut merci,

    j'essaye de l'appliquer sur une ligne plus grande mais c'est un peu plus compliqué

    la voila :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(OU(L(-1)C(-3)<23;L(-1)C(-3)>125);"ERREUR";  (L(-1)C(-3)*L(-1)C(-3))/(-0,06605*L(-1)C(-3)^3 + 0,0116*L(-1)C(-3)^2 - 0,9441*L(-1)C(-3) + 68,642))
    ce que je veux récupérer
    -0,06605
    0,0116
    - 0,9441
    68,642

    merciiiiii

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

Discussions similaires

  1. récuperer des valeurs dans une JList
    Par soujava dans le forum Composants
    Réponses: 3
    Dernier message: 24/04/2008, 09h20
  2. Quotes sur des valeurs numériques
    Par shadeoner dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 05/05/2006, 14h56
  3. Réponses: 1
    Dernier message: 19/03/2006, 20h52
  4. [Tableaux] récuperer des valeurs d un tableau
    Par student007 dans le forum Langage
    Réponses: 7
    Dernier message: 11/02/2006, 22h27
  5. [VB.NET]Récuperer des valeurs d'une autre page
    Par Dnx dans le forum ASP.NET
    Réponses: 8
    Dernier message: 12/05/2005, 16h19

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