extraction de caractère en vba

xuan

XLDnaute Nouveau
Bonjour Bonjour,

Je viens sur ce forum car je débute sous vba. J'ai quelques notions d'algo et souhaiterais apprendre a programmer en vba.

Je voulais faire une macro qui me permettrait d'extraire une chaine de caractère mais je comprends pas grand chose...

Je dispose d'un tableau excel dans lequel j'ai une colonne avec des caractères comm suit:

01 02 03
04 024 01
05 03 044A
...

J'aimerais que la macro lise la cellule et extrait les numéros pour les stocker dans une autre cellule comme ceci:
01
02
024
03
04
044A
05

En l'idée la macro se résumerait à :
lire la cellule
tant qu'il n'y a pas d'espace, copier les caractères dans une autre cellule,
si il y a un espace, copier les caractères dans une autre ligne de la cellule,
continuer à lire la cellule

Voila,
si quelqu'un à une solution ou me mettre sur la voie.

Merci par avance :rolleyes:
 

job75

XLDnaute Barbatruc
Re : extraction de caractère en vba

Bonjour, salut pierrejean,

Avant de voir le fichier, j'avais fait cette macro.

Les doublons sont supprimés.

Les données sont en colonne A à partir de A2. La colonne B doit être mise au format Texte.

Code:
Sub Separe()
Dim cel As Range, i As Long, txt$, c As New Collection
[B2:B65536].ClearContents

On Error Resume Next
For Each cel In Range([A2], [A65536].End(xlUp))
  For i = 0 To Len(cel) - Len(Replace(cel, " ", ""))
    txt = Split(cel, " ")(i)
    c.Add txt, txt
  Next
Next

For i = 1 To c.Count
  Range("B" & i + 1) = c(i)
Next

[B2:B65536].Sort Key1:=[B2], Order1:=xlAscending, Header:=xlNo
End Sub

Edit : dans votre fichier les valeurs commencent (et se terminent) par un espace, ce qui donne un texte vide "" en B2. On peut l'éviter avec la fonction Trim, mais ça ralentit un peu la macro :

Code:
Sub Separe()
Dim cel As Range, i As Long, txt$, c As New Collection
[B2:B65536].ClearContents

On Error Resume Next
For Each cel In Range([A1], [A65536].End(xlUp))
  For i = 0 To Len([COLOR="Red"]Trim[/COLOR](cel)) - Len(Replace([COLOR="Red"]Trim[/COLOR](cel), " ", ""))
    txt = Split([COLOR="Red"]Trim[/COLOR](cel), " ")(i)
    c.Add txt, txt
  Next
Next

For i = 1 To c.Count
  Range("B" & i + 1) = c(i)
Next

[B2:B65536].Sort Key1:=[B2], Order1:=xlAscending, Header:=xlNo
End Sub
A+
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : extraction de caractère en vba

Re

Un premier essai avec ce que je crois avoir compris

Edit: Salut job75
 

Pièces jointes

  • test vba.zip
    18.7 KB · Affichages: 88
  • test vba.zip
    18.7 KB · Affichages: 85
  • test vba.zip
    18.7 KB · Affichages: 86

Discussions similaires

Réponses
2
Affichages
520

Statistiques des forums

Discussions
312 299
Messages
2 086 986
Membres
103 419
dernier inscrit
mk29