Dans chaines alphanumériques supprimer texte conserver chif

Bonjour à tous,

Je travaille avec excel 2003.

Dans une feuille excel, j’ai dans la colonne B des chaines alphanumériques composées d’un texte (nombre de caractères divers) suivi d’un nombre ( à 1.2 ou 3 chiffres). Du type :

Jean14

Georges2

Alexandra182

Je voudrais, pour pouvoir faire une recherche de doublons, qu’il ne me reste dans la colonne B que :

14

2

182

J’utilise le code trouvé sur ce forum et posté par Jean Éric :

Public Sub SupprimeTexte()
Dim Cel As Range
Dim x As Long
Dim myString As String, myChar As String
Dim myNumber As Integer

    Workbooks("Fichier prép R.xls").Sheets("Cgpe").Range("B2:B300").Select
    Application.ScreenUpdating = False
    For Each Cel In Selection
        For x = 1 To Len(Cel)
            myChar = Mid(Cel, x, 1)
            myNumber = Asc(Mid(Cel, x, 1))
            If myNumber >= 48 And myNumber <= 57 Then myString = myString & maChar
        Next x
       Range(Cel.Address) = CDbl(myString)
        myString = ""
    Next Cel
  End Sub

J’ai une “Erreur : Incompatibilité de type” et les deux lignes avant “Next Cel” s’affichent sur fond jaune. Et, miracle, si je débogue et ferme le module, dans la colonne B les textes ont disparu ! J’ai donc le résultat attendu.

Le seul ennui, et il est de taille, la macro est bloquée et la suite des opérations ne peut pas s’enchainer. J’ai tenté, vainement, de résoudre cette incompatibilité. J’ai passé les variables en Variant, j’ai changé le format de la colonne B, rien n’y fait.

Je sollicite donc votre aide et remercie par avance ceux qui pourront examiner la question.

Ulysse26

Bonjour,

Sans tester, je remarque que tu as une erreur dans le nom de variable

 If myNumber >= 48 And myNumber <= 57 Then myString = myString & maChar

c'est plutôt "myChar"

Tu aurais mis "OPTION EXPLICIT en haut de ton code, il te l'aurais signalé tout de suite

Bonsoir M12;

Et merci de m'avoir signalé cette erreur de retranscription. Le code utilisé portait bien "myChar". L'incompatibilité" ne venait pas de là.

Dommage ! Je continue à chercher...

Bonne soirée

Ulysse

Bonjour,

Teste comme ceci

Option Explicit
Public Sub SupprimeTexte()
Dim Cel As Range
Dim x As Long
Dim myString As String, myChar As String
Dim myNumber As Integer

    Workbooks("Fichier prép R.xls").Sheets("Cgpe").Range("B2:B300").Select
    Application.ScreenUpdating = False
    For Each Cel In Selection
        For x = 1 To Len(Cel)
            myChar = Mid(Cel, x, 1)
            myNumber = Asc(Mid(Cel, x, 1))
            If myNumber >= 48 And myNumber <= 57 Then myString = myString & myChar
        Next x
       Range(Cel.Address) = myString
        myString = ""
    Next Cel
  End Sub
 

Bonjour M12,

Mille mercis pour le code proposé : fonctionnement parfait.

Plus d’incompatibilité : l,e reste de la macro s'enchaine sans problème.

Il me reste à comprendre les modifications que tu as introduites. Je vais pouvoir le faire sereinement.

Merci encore M12 et tous mes compliments aux animateurs du forum.

À mes prochaines questions !

Ulysse26

Re,

simplement la fonction

CDbl(myString)

est pour un nombre à virgule flottante

Bonjour M12,

Merci pour cette ultime précision. Il n'y a pas de magie dans l'informatique, il faut de la connaissance et encore de la connaissance !

Il me reste beaucoup à apprendre. Par bonheur il y a des M12 qui permettent d'avancer.

Bien cordialement

Ulysse26

Rechercher des sujets similaires à "chaines alphanumeriques supprimer texte conserver chif"