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 :

Remplacer les valeurs d'une colonne avec les expressions régulières?


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Remplacer les valeurs d'une colonne avec les expressions régulières?
    Bonjour à tous,

    Je suis completement novice en excel / vba, mais j'ai déjà dev avec d'autres langages.
    J'ai un document excel où dans une colonne j'ai des produits sous la forme Nom.Numéro (exemple shampoing.42)
    J'aimerais pouvoir remplacer cette colonne par les noms uniquement (shampoing).

    Ex :
    Lapin.13
    Shampoing.42
    ...

    devient
    Lapin
    Shampoing
    ...

    Une boucle et des expressions régulieres devraient faire l'affaire mais je ne vois pas comment m'y prendre en vba.
    Un peu d'aide serait la bienvenue

    Merci !

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Tu peux le faire soit via une fonction (sans passer par VBA), par exemple Lapin.13 en A1 et la fonction suivante en B1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GAUCHE(A1;CHERCHE(".";A1;1)-1)
    Soit en remplaçant directement les chaînes de caractères, dans la colonne en question, par un bout de code VBA. Par exemple pour la ligne 1 à la dernière ligne de la colonne A ça donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim i As Integer
     
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        On Error Resume Next
        Cells(i, 1) = Split(Cells(i, 1), ".")(0)
    Next
     
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour cette réponse rapide

    Edit:
    La premiere fonction est parfaite, en revanche je peux avoir des noms abrégés type :
    Lapin bleu .42 => Lapin bl. .42

    donc il faut vraiment que je match .[0-9]+ et non pas seulement le .
    Une façon simple de le faire avec la premiere fonction? : )

    Merci encore

  4. #4
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Bonjour,

    S'il n'y a qu'un numéro par chaine tu peux t'en tirer avec la fonction Val sans passer par les regexp.

    Cordialement.

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    J'ai réussi avec une fonction qui récupère la dernière occurence du .
    Merci à tous les deux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 20
    Dernier message: 27/03/2015, 22h58
  2. Réponses: 6
    Dernier message: 14/09/2012, 20h29
  3. Compléter une colonne avec les valeurs lag1(var)
    Par Invité dans le forum SAS Base
    Réponses: 3
    Dernier message: 19/01/2012, 18h19
  4. Réponses: 3
    Dernier message: 10/06/2011, 10h51
  5. [VB6]Mettre à jour une table avec les valeurs d'une DATAGrid
    Par mbzhackers dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 26/05/2006, 20h56

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