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 :

Récupérer un nombre dans une cellule contenant aussi du texte


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    devellopeur d'un projet
    Inscrit en
    Janvier 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : devellopeur d'un projet
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Récupérer un nombre dans une cellule contenant aussi du texte
    Bonjour à tous
    Dans une feuille de calcul j'ai une colonne avec des cellules contenant un nombre et du texte "( 2 234 345,87 frs )", je ne voudrais recopier dans une autre feuille les cellules de la colonne que le nombre, à savoir que le nombre peut avoir de 3 à plusieurs chiffres. Je n'ai pas accès au dossier source.
    Ou comment je peux faire pour additionner des cellules contenant un nombre et le même texte ??
    Merci de votre aide....

  2. #2
    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
    Bonjour,

    Les valeurs initiales sont en colonne A de Feuil1. Les résultats sont en Feuil2, colonne A :

    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
    Sub Nombre()
        Dim C As Range, Plage As Range, Txt As String, X As Variant
        With Sheets("Feuil1")
            Set Plage = .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
        End With
        With Sheets("Feuil2")
            For Each C In Plage
                Txt = ""
                For i = 1 To C.Characters.Count
                    X = C.Characters(i, 1).Text
                    If X = "," Or (X >= 0 And X <= 9) Then
                        Txt = Txt & X
                    End If
                Next
                .Cells(C.Row, 1).Value = Txt
            Next C
        End With
    End Sub
    Cordialement.

    Daniel

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

  3. #3
    Membre expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Points : 3 554
    Points
    3 554
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Bonjour jtc59, bonjour Daniel
    Merci pour le code mais j'ai eu une petite mésaventure en faisant des essais.
    Les nombres obtenus en Feuil2 sont au format texte et ne peuvent s'additionner.
    Je m'en suis sorti en remplaçant la 15ème ligne de la macro
    .Cells(C.Row, 1).Value = Txt
    par 3 lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	If Txt <> "" Then
                		.Cells(C.Row, 1).Value = CDbl(Txt)
                	End If
    Je m' étais a priori contenté de remplacer la 15ème ligne par
    .Cells(C.Row, 1).Value = CDbl(Txt)
    mais dans ce cas cela coïnce en cas de cellules vides dans la colonne A.

    En utilisant le coeur de la macro, ne serait-il pas intéressant d'écrire une fonction personnalisée qui permettrait une certaine souplesse d'emploi ?

    Pour jtc59 , si la colonne (supposons A) ne contient que des données exactement au format de l'exemple donné, la somme peut se calculer avec la formule matricielle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME(SI(A:A="";0;CNUM(GAUCHE(A:A;NBCAR(A:A)-4))))
    à valider bien sûr avec ctrl + maj + entrée.
    Cordialement
    Claude

  4. #4
    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
    Bonjour papouclo,

    Tu travailles avec quelle version ? J'ai essayé les versions Windows de XL2003 à XL2013. J'obtiens directement le nombre au format numérique.
    Cordialement.

    Daniel

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/07/2014, 09h44
  2. [XL-2010] Lien hypertexte dans une cellule contenant déjà du texte
    Par Ginette54 dans le forum Excel
    Réponses: 6
    Dernier message: 31/05/2014, 13h32
  3. [Toutes versions] Insérer le contenu d'une cellule dans une autre contenant déjà du texte.
    Par hentone dans le forum Excel
    Réponses: 1
    Dernier message: 03/07/2010, 05h20
  4. Récupérer un nombre dans une chaîne de caractères
    Par yougoudai dans le forum Général Python
    Réponses: 9
    Dernier message: 23/09/2007, 21h01
  5. [MySQL] Récupérer un nombre dans une chaîne
    Par Phenol dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/03/2007, 21h28

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