[Déplacé VB6 --> VBA] mise en forme excel + récup info

Résolu
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 3 mai 2010 à 14:38
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 3 mai 2010 à 19:07
Bonjour, je voudrais réaliser une macro qui fasse la chose suivante :

J'ai une colonne de données qui a ce format "XX111 "

C'est à dire 1 ou 2 lettre suivis de quelques chiffres (1 à 4) suivis de plusieurs espaces.

J'aimerais pouvoir supprimer les espaces et récupérer le chiffre dans une variable.

A la fin j'aurais donc "XX111" dans ma cellule et le 111 également dans une variable.

Pour la boucle ca je sais faire y'a pas de pb. C'est juste la mise en forme et la récupération du chiffre qui me pose problème.

Pouvez vous m'aider svp?

6 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
3 mai 2010 à 14:57
Salut
(Cf catégorie)
Pour supprimer les espaces de gauche, de droite ou les deux, il y a les instructions LTrim, RTrim et Trim.
Pour séparer des chiffres dans une chaine, il suffit d'analyser chacun de ses caractères :
    Dim r As Long
    Dim sChiffre As String
    sChiffre = ""
    For r = 1 To Len(maChaine)
        If Mid$(maChaine, r, 1) Like "[0-9]" Then
            sChiffre = sChiffre & Mid$(maChaine, r, 1)
        Else
            ' C'est autre chose qu'un chiffre : ras
        End If
    Next r
A toi d'alimenter ce test avec la chaine de ta cellule

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
3 mai 2010 à 17:24
"rien ne se passe" : Oui, écrite comme ça, c'est sûr.
Si tu veux que cela modifie ta cellule, il faut lui dire :
ActiveCell.Value = RTrim(ActiveCell.Value)

Chaine --> Int :
ValeurNumérique = CInt(Chaine)

Attention : un Integer ne couvre que l'étendue 16 bits de -32768 à + 32767
Passe aux Long (avec conversion CLng) si tes chiffres doivent être plus grands ET entiers

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
3 mai 2010 à 15:20
Bonjour, désolé d'avoir posté au mauvais endroit

Merci pour ta réponse jack, seulement lorsque je fais :
RTrim (ActiveCell.Value)

Rien ne se passe, les espaces reste ou ils sont

Pour la récupération du chiffre je vais tester sa de suite
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
3 mai 2010 à 15:30
Je viens de tester la boucle pour récupérer les chiffres, sa fonctionne bien. Mais le résultat est dans un string. Il me le faudrait dans un Int c'est possible?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
3 mai 2010 à 17:26
ou encore
maCellule.Value = Val(monTexte)
si la destination est directement une cellule.
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
3 mai 2010 à 19:07
Merci beaucoup pour tous ca.
Ca fonctionne ;)
0