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 :

VBA supprimer des caractères des cellules dans une colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2018
    Messages : 7
    Par défaut VBA supprimer des caractères des cellules dans une colonne
    Bonjour,

    je suis à la recherche d'une macro qui me permettrai du supprimer dans un cellule toutes les caractères qui ne sont pas des chiffres et ainsi garder que le numéro.
    Pour exemple j'ai dans ma colonne "J" les informations suivantes (chaque ligne représente une cellule différente) :
    N° 06029/ROINGEARD
    N° 05390/El Benna
    N° 04344/Mme Jessel
    EB08741/Gorvel
    BIO08565/Jamin

    Je voudrais conserver que les chiffres et supprimer toutes les lettres et espace.
    Idéalement je souhaiterai afficher ce résultat dans une nouvelle colonne comme suit :
    06029
    05390
    04344
    08741
    08565

    Si le premier chiffre est un Zéro je souhaite qu'il soit affiché.


    Merci de votre aide précieuse.

    Cakan

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    En supposant que la zone à tester est A1:A10 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Source As String, Dest As String, Loc As Range, Car As Integer
     
    For Each Loc In Range("A1:A10")
        Source = Loc.Value
        Dest = ""
        For Car = 1 To Len(Source)
            If Asc(Mid(Source, Car, 1))>=48 And Asc(Mid(Source, Car, 1))<=57 Then Dest = Dest & Mid(Source, Car, 1)
        Next Car
        Loc.Value = Dest
    Next Loc
    C'est du code taper à l'arrache sur le forum et non tester. Tu auras donc peut-être un peu de débugage à faire.

  3. #3
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Vous pouvez copier la procedure suivante dans un module séparé.
    ensuite, à droite de chaque cellule, taper l'instruction "=testChiffres(AdresseContenantLeTexteAdéchiffrer)".
    Exemple si A5 contient "EB08741/Gorvel", alors en B5 taper "=testChiffres(A5), ce qui donnera "08741"

    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
    Function testChiffres(monTxt)
     
    Dim resultat As String
    Dim j As Integer
    Dim sousTxt As String
    Dim extrait As String
     
        resultat = ""
        For j = 1 To Len(monTxt)
            sousTxt = Mid(monTxt, j, 1)
            If Asc(sousTxt) > 47 And Asc(sousTxt) < 58 Then
                extrait = sousTxt: resultat = resultat & extrait
            End If
        Next j
        testChiffres = resultat
     
    End Function

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Les exemples donnés montrant qu'il s'agit de codes postaux, je proposerais volontiers ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    chaine = "blabla06029blabla"
    titi = chaine
    Do While Not titi Like "#####*"
      titi = Mid(titi, 2)
    Loop
    MsgBox Format(Val(titi), "00000")

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2018
    Messages : 7
    Par défaut
    1000 Merci pour ce code qui fonctionne très bien.
    Certain de mes numéros comprennent parfois un point (exemple : N° 88513.14/M Tartampion) et je voudrais garder ce point. Comment faut il procéder ?
    Comme je suis un simple débutant en VBA serait il possible d'avoir les explications de ce code en précisant ce que chaque ligne fait ?

    Cakan

    Citation Envoyé par Zekraoui_Jakani Voir le message
    Vous pouvez copier la procedure suivante dans un module séparé.
    ensuite, à droite de chaque cellule, taper l'instruction "=testChiffres(AdresseContenantLeTexteAdéchiffrer)".
    Exemple si A5 contient "EB08741/Gorvel", alors en B5 taper "=testChiffres(A5), ce qui donnera "08741"

    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
    Function testChiffres(monTxt)
     
    Dim resultat As String
    Dim j As Integer
    Dim sousTxt As String
    Dim extrait As String
     
        resultat = ""
        For j = 1 To Len(monTxt)
            sousTxt = Mid(monTxt, j, 1)
            If Asc(sousTxt) > 47 And Asc(sousTxt) < 58 Then
                extrait = sousTxt: resultat = resultat & extrait
            End If
        Next j
        testChiffres = resultat
     
    End Function

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2018
    Messages : 7
    Par défaut
    merci aux autres pour leur proposition de code
    Menhir ton code fonctionne mais il ne conserve pas le "0" quand le numéro commence par "0". Ce qui dans mon cas est problématique.
    Par ailleurs je ne sais pas comment coder que le résultat de cette transformation soit dans une autre colonne et non dans la cellule initiale.

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Cakan_75 Voir le message
    Menhir ton code fonctionne mais il ne conserve pas le "0" quand le numéro commence par "0". Ce qui dans mon cas est problématique.
    C'est juste une question de format
    A mettre avant le Loc.Value =.

    Par ailleurs je ne sais pas comment coder que le résultat de cette transformation soit dans une autre colonne et non dans la cellule initiale.
    Il suffit de remplacer Loc dans les dernières lignes du code par l'adresse où tu veux mettre ta valeur.

    Citation Envoyé par Cakan_75 Voir le message
    Certain de mes numéros comprennent parfois un point (exemple : N° 88513.14/M Tartampion) et je voudrais garder ce point. Comment faut il procéder ?
    Il suffit d'ajouter à la condition du test If qu'on accepte aussi le code du point.

    Comme je suis un simple débutant en VBA serait il possible d'avoir les explications de ce code en précisant ce que chaque ligne fait ?
    Et si tu consultait l'aide en apprenant l'usage de la touche F1 ?

Discussions similaires

  1. [XL-2013] Remplacer des valeurs de cellule dans une plage
    Par Rémy.A dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 26/06/2017, 08h00
  2. [XL-2010] remplacer des cellules dans une colonne-VBA
    Par S.Mag dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/06/2017, 15h21
  3. [XL-2007] deplacer des cellules dans une colonne
    Par demat123 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/04/2014, 02h39
  4. pb:inserer des caractère en arabe dans une bd sql server
    Par l_faiza dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/12/2005, 14h02
  5. Concaténer des lignes d'enregistrements dans une colonne
    Par dany13 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 08/07/2005, 21h56

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