Remplac/retire des lettres ds séquen de chifr

Résolu/Fermé
antonia - 15 juin 2009 à 14:18
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 15 juin 2009 à 16:33
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?

4 réponses

Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
15 juin 2009 à 15:21
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
Merci Mike-31, problème résolu! c'est parfait.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
15 juin 2009 à 14:48
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
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
15 juin 2009 à 16:28
Pas, grave de toutes façons, j'avais fait une grosse C...
0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
15 juin 2009 à 16:33
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