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 :

des zeros avant un nombre entier


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juillet 2006
    Messages : 232
    Points : 79
    Points
    79
    Par défaut des zeros avant un nombre entier
    Bonjour à tous,

    J'ai un petit problème que je n'arrive pas à résoudre:
    j'ai dans chaque cellule d'une selection une phrase du genre:
    Abrahams & sons 00681

    Je veux que j'efface tout dans cette cellule et que je garde uniquement 00681.
    avec une boucle sur chaque cellule j'y suis arrivé ou presque car la chaine de caractère 00681 s'affiche 0 0 6 8 1 et si j'essaie d'enlever les espaces (trim), j'obtiens 681 et pas les deux zéros devant.

    Comment faire pour arriver à garder seulement(mais fidèlement) la partie numérique de la chaîne ?

    Si je dois vous envoyer le code je le ferais.

    Merci infiniment!

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonsoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LaCellule = Cstr(right(LaCellule,5))
    A+

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juillet 2006
    Messages : 232
    Points : 79
    Points
    79
    Par défaut
    Merci LeForestier de cette réponse rapide.

    Mais j'ai oublié de vous dire que la chaîne est variable et que la partie numérique n'a pas de longueur prédéfinie. En d'autres termes je peux avoir
    00681, comme je peux avoir 00555512 ou 0022.

    Je prendrais votre réponse et peut être qu'en la modifant elle pourrait répondre à mes attentes.

    Merci infiniment!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Peux-tu mettre différents types de chaines, sinon on va passer du temps à te donner des solutions qui ne marcheront pas, car cela ne correspondra pas à certains cas.

    Starec

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    S'il y à toujour un espace entre le nombre et le texte ru peu faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim e as integer
    e = InStrRev(LaCellule," ")
    LaCellule = Cstr(right(LaCellule,e))
    ou en une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LaCellule = Cstr(right(LaCellule,InStrRev(LaCellule," ")))
    A+

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juillet 2006
    Messages : 232
    Points : 79
    Points
    79
    Par défaut
    Merci beaucoup à tous,
    Le dernier nombre entier est sé^paré de la chaîne par un espace

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bonjour,

    utilisation de InstrRev avec l'espace comme séparateur.
    Bonjour ucfoutu, qu'y a-t-il dans le poste N°5 ?

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Ouille (n'avais pas vu... j'étais sur un autre forum...!!)

    efface tout y compris ce message.

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Non,Non.... Pas effacé, comme cela ont verra qu'il n'y a pas qu'a moi que ca arrive...

  10. #10
    Invité
    Invité(e)
    Par défaut
    Re

    Ou une fonction plus sophistiqué (je me suis amusé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function Extraction(Chaine As String) As String
         Dim tabExtrac() As String
         tabExtrac() = Split(Chaine, " ")
         Extraction = tabExtrac(UBound(tabExtrac()))
    End Function
    Starec

  11. #11
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juillet 2006
    Messages : 232
    Points : 79
    Points
    79
    Par défaut
    Bonjour les amis,
    Je n'avais pas le fichier quand je vous écrivais. Maintenant que je l'ai je vous en envoie un petit extrait avec la macro que j'ai eu sur internet et que j'ai dû modifier:
    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
    Sub Remplace()
    Dim Cel As Range
    For Each Cel In Selection
    For x = 1 To Len(Cel)
    leCar = Mid(Cel, x, 1)
    codCar = Asc(Mid(Cel, x, 1))
    If codCar >= 48 And codCar <= 57 Then  'Or codCar = 44 Or codCar = 46
    maChaine = maChaine & Trim(Str(leCar))
    End If
    Next x
    'Range(Cel.Address) = CDbl(maChaine)
    Range(Cel.Address) = maChaine
    maChaine = ""
    Next Cel
    End Sub
    et voilà le contenu de la colonne selectionnée

    AVOTY ZOETT-EBADJEN - 0099590**
    AVOTY ZOETT-GTand Modèle - 0012507**
    ELD ZELEDONAE - 00687**
    GOLD ZEledonAE - GTand Modèle - 0068777**
    KOUNATAE-GTand Modèle TOUNATAENE - 0098698**
    LOUNATAE GTand Modèle-TOUNAT - 0058678**
    MEDEJETZET - 00968**
    MOTOZZO-GTand Modèle - 002898**
    NAJET fAxe - 009790**
    OLD ZEledonAE - GTand Modèle - 0068785**
    QOUWEAT-GTand Modèle - 009659**
    SENEDE - 008584**
    TOUNATAE-GTand Modèle - 0098698**
    YEDEJETZET-GTand Modèle OTENJE - 0077869**
    ZEMETOON-GTand Modèle OTENJE - 00579**
    ZENEDE - 008604**
    ZOMOTOT-GTand Modèle - 009696**
    brem9.dem turien - 0053098

    dans la dernière ligne, je voudrais extraire seulement 0053098 alors qu'avec le code j'ai 90053098, le code ajoute également le 9 de brem9, mais si je n'y arrive pas ce n'est pas si grave.

    Bon je vais essayer de joindre le fichier, mais si je n'y arrive pas vous avez déjà tout là haut.

    Merci infiniment.

    PS: pour exécuter je selectionne la colonne B puis Alt+F8 et 'Macro remplace' puis bouton exécuter.
    Fichiers attachés Fichiers attachés

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,


    relis la réponse N° 5 (utilisation de InstrRev)

    Tu extraieras ainsi tout ce qui suit le denier espace.

    Pour les chaines ainsi extraites qui contiendraient des ** à la fin :

    utilise Replace pour les supprimer (en les remplaçant par "")

Discussions similaires

  1. [XL-2003] Ne pas afficher décimales des nombres entiers
    Par NikoBe dans le forum Excel
    Réponses: 25
    Dernier message: 23/10/2023, 11h18
  2. [XL-2007] Ajouter des zeros devant le nombre et le convertir en texte
    Par SERGE6280 dans le forum Excel
    Réponses: 2
    Dernier message: 03/04/2013, 20h52
  3. Générer des nombres entiers de manière aléatoire
    Par stefsas dans le forum SAS Base
    Réponses: 2
    Dernier message: 12/09/2008, 10h55
  4. Réponses: 2
    Dernier message: 10/09/2007, 19h43
  5. Format des nombres entiers, séparateurs de milliers
    Par zazaraignée dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2005, 01h25

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