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 :

Somme de nombres séparés par des étoiles


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Somme de nombres séparés par des étoiles
    Bonjour,

    J'ai un tableau Excel avec des cases du type (3 exemples) :
    50*50
    100*550
    3.5*250

    Je souhaite sommer automatiquement ces nombres via une formule (ou un code VB) pour obtenir respectivement :
    100
    650
    253.5

    Bref, oui, je souhaite sommer des nombres d'une même case séparés par des étoiles. Quelqu'un aurait la solution ?
    Merci d'avance,

    UnLionBleu

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Solution avec VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim i As Long
     
    For i = 1 To Range("A:A").End(xlDown).Row
     
        Range("B" & i).FormulaLocal = "=" & Replace(Range("A" & i).Value, "*", "+")
     
    Next i

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Tout d'abord merci, mais mes connaissances en VB étant ultra-limitées, je n'arrive pas à faire tourner ton code. Mon but serait de faire une fonction pour Excel. Du coup, le code ne devrait-il pas commencer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Fonction1 ()
    ' Ton code ....
    End sub
    J'ai essayé mais ça ne marche pas. Pourrais-tu me donner la procédure à faire pour créer cette fonction ?

    Merci encore.

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Essai cette fonction. a copier dans un module

    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
    Function Fonc_Multiplication(Rg As Range) As Double
     
    Dim i As Long
    Dim Dbl As Double
    Dim dblTxt() As String
     
    dblTxt = Split(Rg.Value, "*")
     
    For i = 0 To UBound(dblTxt)
        Dbl = Dbl + dblTxt(i)
    Next i
     
    Fonc_Multiplication = Dbl
     
    End Function
    et a utiliser comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Fonc_Multiplication(A1)

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Re,

    VB c'est comme le piano : si on arrête, on régresse vite, mais quand on sait faire, ça deviens presque magique !

    Merci beaucoup, c'est parfait !!

  6. #6
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Une petite variante, en mettant le délimitateur en variable

    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
    Function Fonc_Multiplication(Rg As Range, Delimitateur As String) As Double
     
    Dim i As Long
    Dim Dbl As Double
    Dim dblTxt() As String
     
    dblTxt = Split(Rg.Value, Delimitateur)
     
    For i = 0 To UBound(dblTxt)
        Dbl = Dbl + dblTxt(i)
    Next i
     
    Fonc_Multiplication = Dbl
     
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Fonc_Multiplication(A1;"*")

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    Une éventuelle autre proposition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function Som(Rng As Range) As Double
    Dim c As String
     
    c = Replace(Rng.Value, "*", "+")
    Som = Evaluate(c)
    End Function

  8. #8
    Membre actif Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 217
    Points : 220
    Points
    220
    Par défaut
    Une autre encore en utilisant split:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Function Som(Rng As Range) As Double
     
    dim a as long
    dim b as long
     
    a = Val(Split(Rng.Value,"*")(0))
    b = Val(Split(Rng.Value,"*")(1))
     
    Som =a+b
     
    End Function
    Bastien

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci de vos réponses.
    Je n'arrive seulement à faire tourner celles de jfontaine.

    Une question supplémentaire, je souhaite utiliser la fonction avec une ligne ayant un "nom" :

    Toute la ligne 1 ayant un nom, "DiffApport" par exemple. Du coup je souhaiterais placer la fonction =Fonc_Multiplication(DiffApport) ou =Fonc_Multiplication(DiffApport;"*") en A2 et tirer vers la droite pour calculer toute la ligne 2.

    Une idée pour ce type d'utilisation ?
    Merci.

  10. #10
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Dans cette fonction DiffApport ne peut contenir plus d'une cellule

    De plus si utilisation d'une plage nommée, tu ne peux plus utiliser le glisser pour reporter ta formule

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Ok, et bien dans la formule je mettrai le code de ma cellule (A1 par exemple) et je glisserai vers la droite.

    Merci beaucoup

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/04/2015, 06h45
  2. Réponses: 1
    Dernier message: 28/02/2015, 00h12
  3. Extraire nombres d'une chaîne de caractères séparés par des "/"
    Par olive1007 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/11/2014, 16h53
  4. [RegEx] Extraire des nombres séparés par des caractères spéciaux
    Par GouKen dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2008, 16h49
  5. [CSS] Termes séparé par des pointillées
    Par adiGuba dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 18/04/2006, 14h35

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