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

Excel Discussion :

Problème extraction des chiffres d'un système


Sujet :

Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 305
    Points : 66
    Points
    66
    Par défaut Problème extraction des chiffres d'un système
    Bonsoir,

    Est ce que quelqu'un peut m'aider à résoudre le problème suivant svp?

    J'importe sur excel des données figurant dans un système et le seul problème c'est que certaine données sont déformées :

    Par exemple : j'ai 2,0150213004e+011 au lieu de 20150213004011

    et même chose pour 14-déc au lieu de 14/12/2014

    Je pense que seule une macro (après peut être que je me trompe) peut m'aider à résoudre ce problème.

    J'ai cherché un peu sur le net mais je n'ai pas trouver la solution à mon problème

    Merci par avance pour votre aide

    Cordialement

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 413
    Points : 16 255
    Points
    16 255
    Par défaut
    Bonjour

    Voir comment définir la donnée en texte : comment se fait l'import ?

    Pour 14-déc cela ressemble plus à un problème de format...
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 305
    Points : 66
    Points
    66
    Par défaut
    Merci pour ton retour 78Chris

    Excellente question. Je ne sais pas du tout.

    Pour le 14-déc c'est effectivement un problème de format aussi mais le problème c'est que des données comme cela j'en ai pas mal de noyé dans une longue colonne excel contenant à la fois des données en chiffre...sans compter les fameux 2,0150213004e+011

    C'est pour ça que à mon avis seule une macro pourra me cibler les données contenant à la fois des cellules au format 14-déc qu'elle pourra remettre au format 14/12/2014 et les fameux 2,0150213004e+011 qu'elle me mettra au format initial : 20150213004011

    Merci par avance pour ton aide


    Citation Envoyé par 78chris Voir le message
    Bonjour

    Voir comment définir la donnée en texte : comment se fait l'import ?

    Pour 14-déc cela ressemble plus à un problème de format...

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2009
    Messages : 117
    Points : 126
    Points
    126
    Par défaut un fichier svp
    Bonjour,

    est-ce que tu peux nous fournir un fichier, il serait plus simple de voir l'ensemble des transformation à faire. Selon moi, tu peux régler ton problème avec une simple formule bien adapter, d'ou le besoin d'avoir ton fichier. Si tu ne peux le fournir, est-ce que les formats sont uniquement au format 15-déc ou au format avec une virgule en deuxième position.

    merci!

  5. #5
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    si besoin d'une macro, voici un début de piste pour incluant les deux cas que tu as soulevé

    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
    36
    37
    Sub Remplacement()
    'nécessite d'activer la référence "Microsoft VBScript Regular Expressions X.X"
     
        Dim Motif As VBScript_RegExp_55.regexp
        Dim Plage As Range
        Set Motif = New VBScript_RegExp_55.regexp
     
        ' plage des lignes non vides en colonne A
        ' en partant de A1
        With ThisWorkbook.Worksheets("Feuil2")
            Set Plage = .Range("A1", "A" & .Range("A" & Rows.Count).End(xlUp).Row)
        End With
     
        ' stockage des données dans un tableau
        tablo = Plage
     
        ' expression régulière du type
        ' [1 chiffre][","][1 ou plusieurs chiffres]["e"]["+"][1 ou plusieurs chiffres]
        Motif.Pattern = "(\d)(,)(\d+)(e)(\+)(\d+)"
     
        ' parcours les données
        For i = LBound(tablo, 1) To UBound(tablo, 1)
            ' si ressemble à l'expression régulière
            If Motif.Test(tablo(i, 1)) Then
                ' supprime la virgule et le "e+"
                tablo(i, 1) = Replace(Replace(tablo(i, 1), ",", ""), "e+", "")
            ' si est une date
            ElseIf IsDate(tablo(i, 1)) Then
                ' la converti au format jj/mm/yyyy
                tablo(i, 1) = Format(CDate(tablo(i, 1)), "dd/mm/yyyy")
            End If
        Next i
     
        ' restitue les données dans la plage
        Plage.Value = tablo
        Set Plage = Nothing
    End Sub

  6. #6
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 305
    Points : 66
    Points
    66
    Par défaut
    Bonjour Mairequimby

    Merci beaucoup pour ta réponse.

    Je ne peux malheureusement pas le fournir.

    J'ai fait une vérification et j'ai plusieurs formats dans ma colonne excel qui le sont au format 15-déc, format avec une virgule en deuxième position, j'ai aussi un format chiffre + texte mais pour cela pas de problème et aussi format 100% numérique et pareil pas de pb.

    ça serait génial si je pouvait régler mon problème juste avec une formule de calcul.

    N'hésite pas si tu as besoin de plus de précision

    Merci beaucoup pour ton aide précieuse

    Bonjour Joelevrai,

    Je viens de lire ton message

    Merci beaucoup pour ta macro, je vais la tester et revenir vers toi.

    Je testerai aussi la formule de calcul de Mairequimby pour voir.

    Cordialement

  7. #7
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 305
    Points : 66
    Points
    66
    Par défaut
    Joelevrai,

    Je viens te tester ta macro et il m'arrête à cet endroit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Motif As VBScript_RegExp_55.regexp
    J'imagine que c'est peut être parce que je dois activer la référence "Microsoft VBScript Regular Expressions X.X"

    Mais je sais pas comment faire

    Peux tu me guider stp?

    Merci beaucoup

    Cordialement

  8. #8
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Dans l'éditeur de code, tu vas dans le menu Outils>Références

    tu cherches parmi la liste cette référence

    les X de X/X représentent des chiffres, ils peuvent varier suivant ta version
    si tu as plusieurs références de ce type, tu coches uniquement le chiffre le plus grand

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Bonjour,

    Quand tu sélectionnes la case contenant "14-déc", vois-tu la vraie date dans la zone "fx" où l'on saisit les formules (auquel cas il s'agit bien d'une date à formater) ou bien vois-tu "14-déc" (auquel cas il s'agit d'un texte à interpréter et il manquera l'année comme information)?

    Edit: 2ème question: pour les dates, as-tu absolument besoin d'une cellule au format Date en sortie ou un format texte affichant "jj/mm/aaaa" conviendrait?

  10. #10
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 305
    Points : 66
    Points
    66
    Par défaut
    Merci Joelevrai

    Je retente et je reviens vers toi si j'ai un problème.

    Bonjour Promethee

    Oui quand je sélectionne la case contenant "14-déc" je vois la vraie date dans la zone "fx"

    Mais effectivement, je n'ai absolument pas besoin d'une cellule au format Date en sortie. Un format texte affichant "jj/mm/aaaa" conviendra très bien.

  11. #11
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 305
    Points : 66
    Points
    66
    Par défaut
    Joe.levrai,

    J'ai trouvé.

    Mais maintenant quand je lance la macro, j'ai le message d'erreur suivant :

    Nom : error.JPG
Affichages : 173
Taille : 16,2 Ko

  12. #12
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    l'erreur est sur quelle ligne ?

    Ta plage de cellule correspond à quoi ?

    ajoute cette ligne à la ligne 13 du code

    et donne le résultat

  13. #13
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Tu peux faire comme ceci (visuellement le résultat sera comme souhaité mais ça transformera tout en texte):

    Créer la fonction personnalisée suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function SUBSTITUTE_REGEX(rg As Range, patternASubstituer As String, texteDeSubstitution As String) As String
        Dim reg As New VBScript_RegExp_55.RegExp
     
        reg.Pattern = patternASubstituer
        reg.Global = True 'True matches all occurrences, False matches the first occurrence
     
        SUBSTITUTE_REGEX = reg.Replace(rg.Value, texteDeSubstitution)
    End Function
    Appliquer la formule suivante en B2 par exemple si tes cellules à convertir commencent en A2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SUBSTITUTE_REGEX(A2; "(\d+),(\d+)e\+(\d+)"; "$1$2$3")

  14. #14
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 305
    Points : 66
    Points
    66
    Par défaut
    Joe.levrai,

    En fait, lorsque le message d'erreur apparait, la macro ne m'indique pas sur quelle ligne est l'erreur.

    Ma plage de cellule est en I. J'avais bien remplacé au préalable le A par I dans la macro.

    J'ai bien ajouté et plus de message d'erreur.

    La macro se lance très bien :

    Nom : PLAGE.JPG
Affichages : 149
Taille : 12,7 Ko

    mais par contre c'est très long et dès que j'appuie sur ok, j'ai à nouveau comme message :

    Nom : error.JPG
Affichages : 182
Taille : 16,2 Ko

    Je ne sais pas si c'est dû au fait que mon tableau soit une table car intégré sur Power Pivot....

    Merci Promethee25

    Par contre une précision, je ne veux surtout pas que cette macro me transforme toute la feuille en texte puisque j'ai des colonnes avec des montants. Il faudrait qu'elle soit ciblée uniquement sur une colonne.

  15. #15
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 305
    Points : 66
    Points
    66
    Par défaut
    Promethee25

    J'ai essayé ta formule ci-dessous mais j'ai le message d'erreur suivant :

    Nom : nom.JPG
Affichages : 143
Taille : 9,7 Ko

    Je travaille sur du Power Pivot mais ta formule je l'ai appliqué sur mon document source. Peut être qu'il ne la reconnait pas.

    "Appliquer la formule suivante en B2 par exemple si tes cellules à convertir commencent en A2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SUBSTITUTE_REGEX(A2; "(\d+),(\d+)e\+(\d+)"; "$1$2$3")
    "

  16. #16
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Il faut que la fonction personnalisée soit définie dans le fichier où tu l'utilises et que les macros soient activées dans ce fichier.
    Il faut l'utiliser là où tu as besoin de convertir mais si c'est dans Power Pivot, ce n'est peut-être pas possible, je ne connais pas bien cet add-on.

    Il s'agit d'une simple fonction donc seule la/les case(s) où tu utilises la fonction est un texte.
    ça ne modifie rien dans ta feuille.

  17. #17
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 305
    Points : 66
    Points
    66
    Par défaut
    Merci Promethee pour ton ertour,

    J'ai essayé sur une autre feuille en dehors de power pivot

    et quand j'applique à la lettre tes étapes, j'ai toujours le même problème :

    Nom : nom.JPG
Affichages : 145
Taille : 9,7 Ko

    Je ne sais pas où ça peut bloquer


    Citation Envoyé par Promethee25 Voir le message
    Il faut que la fonction personnalisée soit définie dans le fichier où tu l'utilises et que les macros soient activées dans ce fichier.
    Il faut l'utiliser là où tu as besoin de convertir mais si c'est dans Power Pivot, ce n'est peut-être pas possible, je ne connais pas bien cet add-on.

    Il s'agit d'une simple fonction donc seule la/les case(s) où tu utilises la fonction est un texte.
    ça ne modifie rien dans ta feuille.

  18. #18
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Es-tu sûre que les macros sont activées dans ton fichier? S'il le faut, réouvre-le pour vérifier.
    Où as-tu stocké la fonction dans VBA? Dans un module standard?


    Edit: autre possibilité: n'as-tu pas un point d'arrêt sur une macro?

  19. #19
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 305
    Points : 66
    Points
    66
    Par défaut
    Ci-dessous une copie d'écran :

    Nom : macro.JPG
Affichages : 173
Taille : 51,3 Ko

    J'ai collé ta macro dans le sheet 2 et je pense qu'elle est bien active

    Apres, est ce que ça serait pas l'élément suivant qui gène non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim reg As New VBScript_RegExp_55.RegExp
    Puisque moi j'ai coché :

    Nom : REFERENCE.JPG
Affichages : 229
Taille : 35,1 Ko

    Toi tu as 55 et moi 5.5 .....(je me trompe peut être)

    Citation Envoyé par Promethee25 Voir le message
    Es-tu sûre que les macros sont activées dans ton fichier? S'il le faut, réouvre-le pour vérifier.
    Où as-tu stocké la fonction dans VBA? Dans un module standard?


    Edit: autre possibilité: n'as-tu pas un point d'arrêt sur une macro?

  20. #20
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Une fonction doit impérativement être dans un module standard

    là tu l'as mise dans le module d'une feuille

Discussions similaires

  1. Réponses: 21
    Dernier message: 19/09/2011, 13h57
  2. Extraction des chiffres d'un entier
    Par adrian07 dans le forum Pascal
    Réponses: 5
    Dernier message: 21/04/2009, 17h22
  3. extraction des chiffres à partir d1 memo
    Par douili dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/06/2008, 12h46
  4. [MySQL] Problème de Charset à l'extraction des données
    Par naoufal01 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/11/2006, 13h14
  5. Problème de format pour des chiffres à virgule
    Par bob75000 dans le forum Access
    Réponses: 5
    Dernier message: 21/07/2006, 10h42

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