extraction de caractère en vba

  • Initiateur de la discussion Initiateur de la discussion xuan
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 🙄
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
476
Réponses
6
Affichages
299
Réponses
1
Affichages
221
Réponses
2
Affichages
796
Retour