Remplac/retire des lettres ds séquen de chifr

Résolu
antonia -  
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

sous EXCEL, dans une base de données de codes articles, j'ai des références numériques (qui vont de une à six chiffres) dont des variantes qui se différencient par une lettre au bout (ex: l'article réf 12025 existe aussi en variante réf 12025B et en 12025C, 12025D, etc.). Pour mes analyses produit, je cherche comment retirer la "lettre" pour ne laisser apparaître que la partie numéraire. Ma liste comporte plus de 40000 lignes dont les 3 quarts affichent ces variantes avec une lettre. En plus, ces cellules sont automatiquement au format TEXTE et non au format NOMBRE. Je n'arrive pas à outiliser le menu remplacer pour que cela s'applique à toute la colonne. Qqun a des suggestions?
A voir également:

4 réponses

Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 140
 
Salut,

Avec une formule toute simple a coller dans une cellule sur la première ligne pour traiter les cellule colonne A et incrémenter vers le bas, (à adapter)

=SI(ESTTEXTE(A1);GAUCHE(A1;NBCAR(A1)-1)*1;A1)

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
1
antonia
 
Merci Mike-31, problème résolu! c'est parfait.
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour Antonia,
40000 lignes, waouh!

on va donc passer par une macro qui enlève les lettres presque d'un seul coup
dans cet exemple les ref sont en colonne A ( sur ton appli remplace les range("A....) par la lettre de ta colonne de ref)

Function extrait_nbre(ByRef texto As String) As Double
    Dim reg As Object
    Dim extraction As Object
  
    Set reg = CreateObject("vbscript.regexp")
    reg.Global = True
    reg.Pattern = "(\d?\d?\d)|(,)"
    Set extraction = reg.Execute(texto)
    For Each digit In extraction
        extrait_nbre = extrait_nbre & (digit.Value)
    Next digit
    
    Set extraction = Nothing
    Set reg = Nothing
End Function

Sub derlettre()
Dim derlig As Long
derlig = Range("A65536").End(xlUp).Row
Application.ScreenUpdating = False
Range("A1:A" & derlig) = extrait_nbre(Range("A1").Value)
End Sub


Pour installer:
tu fais un copier de ce code
Alt+F11 tu es dans VBA
insertion- module (ou Ctrl+R)
coller

pour lancer:
Dans la feuille Excel:
outils-macros-macro tu sélectionnes "derlettre" exécuter

0
antonia
 
Merci pour ta réponse rapide Michel... malheureusement, je n'y comprends rien car je n'ai jamais fait de macro...je vais tout de même tenter de déchiffrer...
merci encore
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Pas, grave de toutes façons, j'avais fait une grosse C...
0
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 140
 
Re,

On te vois de temps en temps sur ce Forum, il serait bien que tu deviennes membre, tu pourrais mettre ton statut en résolu ou demande à la modération de le faire pour toi, clic sur le triange jaune et demande à la modération de mettre le statut en résolu pour toi

Merci

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
0