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 :

Extraction de pourcentage par VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 2
    Par défaut Extraction de pourcentage par VBA
    Bonjour,

    J'ai des données qui sont structurées en fichier Excel. J'aimerais bien faire l'extraction des pourcentages qui sont dans une de mes colonnes.
    Je vous donne un exemple du contenu dans ces cellules:

    At 31-Dec-2008: Roberto (11.899%) Antonio (23.798%); Maria (11.899%) ; Jose (23.798%) ; Martin (23.798%) , Diego (4.808%)

    J'ai trouvé un programme VBA pour l'extraction des pourcentages, qui est comme suit:

    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
    Public Function wExtractPercent(sInput) As Double
     
        If IsNumeric(sInput) Then
            wExtractPercent = sInput
        Else
            end_position = InStr(sInput, "%")
            For i = end_position To 1 Step -1
                If Mid(sInput, i, 1) = " " Then
                    start_position = i
                    Exit For
                End If
            Next
     
            If start_position = 0 Then
                wExtractPercent = Left(sInput, end_position - 1) / 100
            Else
                wExtractPercent = Mid(sInput, start_position, end_position - start_position) / 100
            End If
        End If
     
    End Function
    Ce programme fonctionne bien mais avec quelques imperfections:

    Imperfection 01: Avant d'appliquer la fonction wExtractPercent, il faut nettoyer le contenu de la cellule des parenthèses "(" et ")"
    Imperfection 02: Avant d'appliquer la fonction wExtractPercent, il faut remplacer le point du pourcentage "." par ","
    Imperfection 03: Le programme ci-dessous, lit juste le premier pourcentage dans le contenu et ignore le reste des pourcentages.

    Je vous donne ma démarche actuelle pour l'extraction des pourcentages:

    Étape 01: Je convertis ma colonne en plusieurs afin d'obtenir un pourcentage dans chaque colonne et non pas plusieurs;
    Étape 02: je remplace les parenthèses "(" et ")" par des espaces " ";
    Étape 03: je remplace "." par "," ;
    Étape 04: j'applique finallement la fonction wExtractPercent qui me donne le pourcentage qui se trouve dans chaque cellule.

    Quatre étape ce n'est pas beaucoup pour quelques cellules, mais le problème c'est que j'ai des centaines de milliers de cellules à traiter, et cela devient fastidieux est aussi lourd pour excel.

    Ma question est donc la suivante:
    Pourriez-vous m'aider à améliorer mon programme/ma fonction VBA ci-dessus pour faire l'extraction en moins d'étapes et d'une façon plus conviviale. Cela me rendra grand service.

    Merci d'avance

    NB: Jutilise Excel 2016 FR

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Tu peux également envisager les expressions régulières.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub test()
    Msgbox wExtractPercent("Roberto (11.899%)")
    End sub
    Public Function wExtractPercent(sInput as string) As Double
    wExtractPercent=val(split(split(sInput,"(")(1),")")(0))
    End function

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 2
    Par défaut
    Bonsoir,

    D'abord, je vous remercie de prendre le temps pour me répondre. J'apprécie beaucoup.

    Toutefois, j'ai essayé d'appliquer le code que vous m'avez fourni...mais sans résultat. Excel me renvoie "#VALEUR!".

    J'avoue que mes connaissances en VBA sont vraiment de base. Certes, j'ai beaucoup travaillé avec Excel et ses fonctions, mais je viens de commencer avec VBA (par obligation

    Pour faire une histoire courte, j'ai commencé ma recherche de solution à mon problème par le code (celui qui porte sur la fonction wExtractPercent) que j'ai mis dans mon premier message et dont j'ai omis de vous mettre la source, et qui est la suivante:

    http://access-excel.tips/extract-percentage-from-text/

    Après multiples modifications de la cellule (remplacement des parenthèses et du point...), j'appelle ensuite la fonction wExtractPercent, et la valeur sortie par cette fonction porte toujours sur le premier pourcentage de la cellule.

    Donc, s'il vous plait, pourriez-vous m'améliorer le code suivant:
    --------------------------------------------------------------------
    Public Function wExtractPercent(sInput) As Double

    If IsNumeric(sInput) Then
    wExtractPercent = sInput
    Else
    end_position = InStr(sInput, "%")
    For i = end_position To 1 Step -1
    If Mid(sInput, i, 1) = " " Then
    start_position = i
    Exit For
    End If
    Next

    If start_position = 0 Then
    wExtractPercent = Left(sInput, end_position - 1) / 100
    Else
    wExtractPercent = Mid(sInput, start_position, end_position - start_position) / 100
    End If
    End If

    End Function
    ---------------------------------------------------------------------------------------------
    afin que je puisse extraire par une fonction (ou une procédure) tous les pourcentages qui se trouvent dans la cellule (des pourcentages qui pourraient être séparé par des un trait ou un point virgule ou ...)

    Je dispose d'une banque de plusieurs centaines de milliers de données et cela me rendra grandement service.

    Je vous remercie pour votre temps et surtout pour votre expertise.

Discussions similaires

  1. extraction chiffre d'un codebarre ean13 par vba
    Par arthur83fr dans le forum Excel
    Réponses: 1
    Dernier message: 26/06/2016, 04h11
  2. [XL-2003] Extraction par VBA des Cellules
    Par chaelo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/04/2009, 11h11
  3. Mettre une image sur bouton par VBA????
    Par electrosat03 dans le forum IHM
    Réponses: 3
    Dernier message: 17/02/2006, 01h54
  4. Faire une MAJ de recordsetclone par VBA.
    Par electrosat03 dans le forum Access
    Réponses: 4
    Dernier message: 03/02/2006, 17h42
  5. Imprimer des selections excel en pdf par VBA
    Par ouellet5 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/12/2005, 17h29

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