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

Signaler
Messages postés
204
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2011
-
Messages postés
204
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2011
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
"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)
Messages postés
204
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2011

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
Messages postés
204
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2011

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?
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
ou encore
maCellule.Value = Val(monTexte)
si la destination est directement une cellule.
Messages postés
204
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
1 novembre 2011

Merci beaucoup pour tous ca.
Ca fonctionne ;)