données a separer dans une cellule

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 !

jammy17

XLDnaute Occasionnel
bonsoir le forum,

je cherche à separer un ensemble de chiffre sur un ligne de texte en passant par vba,
mon texte ressemble a ca:
TTT AVURNAV LOCAL CHERBOURG 1571
celui ci est inserer dans un message a des emplacement variés a chaque nouveau message.
mon probleme est de realiser une macro qui me dise en gros:

a chaque fois que tu decelera le mot"AVURNAV LOCAL", separe le chiffre" 1571" du reste dans la colonne suivante, en sachant que le chiffre est different a chaque fois:

j'ai essayé de faire ceci:
For Each cel In plage
If cel.Offset(0, 0).Value Like "*AVURNAV LOCAL*" Then

cel.Offset(0, 0).Select
Selection.TextToColumns Destination:=cel.Offset(0, 0), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _
TrailingMinusNumbers:=True


End If
Next cel

le probleme c'est qu'il me separe tout les ligne du texte, ce que je ne veux surtout pas

si quelqu'un a une solution cela serait vraiment super, cela fait 5 heures que je planche sur la question sans trouver de reponse

en attendant merci a vous....JAMMY
 

Pièces jointes

Re : données a separer dans une cellule

Salut jammy, salut les forumistes du samedi

j'ai une soluce par formule, peut être que ça pourra t'aider :

s'il y a avurnav local dans la cellule, on cherche un espace dans les 8 derniers caractères (il faut que le chiffre fasse moins de 8 caractères !) et on renvoie la partie droite du texte de puis le dernier espace.

cordialement
 

Pièces jointes

Re : données a separer dans une cellule

Bonjour Dugenou, Jammy17, le Forum

Par VBA on peut faire ceci au cas où....

Code:
Option Explicit
Sub Number_Finder()
Dim Plage As Range, Cell As Range
Dim Starting As Integer, i As Integer
Dim TmpNumber As String
    With Feuil1
        Set Plage = .Range(.Range("A2"), .Range("A5000").End(xlUp))
    End With
        
        For Each Cell In Plage
            
            Starting = InStr(1, Cell, "AVURNAV LOCAL")
                If Starting <> 0 Then
                
                    For i = Starting To Len(Cell)
                        If IsNumeric(Mid(Cell, i, 1)) Then
                        TmpNumber = TmpNumber & Mid(Cell, i, 1)
                        End If
                    Next
                    Cell.Offset(0, 1) = Val(TmpNumber)
                End If
        TmpNumber = ""
        Next Cell
        
End Sub

Bon Week End
@+Thierry
 
Re : données a separer dans une cellule

Bonjour

For Each cel In plage
If cel.Value Like "*AVURNAV LOCAL*" Then
x = InStrRev(cel, " ")
y = Right(cel, Len(cel) - x)
cel.Offset(0, 1).Value = y
cel.Value = Left(cel, x - 1)
End If
Next cel
 
Re : données a separer dans une cellule

Bonjour

@ chris : ca n'a marché que sur ma 1ère cellule 🙁

Sub extraire_chaine()
For Each cel In [B2:B3]
If cel.Value Like "*AAA*" Then
x = InStrRev(cel, " ")
y = Right(cel, Len(cel) - x)
cel.Offset(0, 1).Value = y
cel.Value = Left(cel, x - 1)
End If
Next cel
End Sub
 
Re : données a separer dans une cellule

Salut nat54
Cela cherche le dernier espace et coupe ce qui se trouve entre cet espace et la fin car ce que voulais jammy c'était récupérer la valeur en bout de chaîne.
Mais cela ne marche pas dans d'autres cas.
Quel est le tiens ?
 
Re : données a separer dans une cellule

Bonsoir Chris, Nat54, re Jammy, le Forum

Le Code que j'ai écrit, permet de "tracker" toute valeur numérique de ta string (chaine de caractères) du moment que cette chaine contient "AVURNAV LOCAL"...

Et ce quelque soit l'emplacement des valeur numériques... Ce code reconstruira une valeur numérique avec la concaténation tous les nombres trouvés...

Bonne Soirée

@+Thierry
 
Re : données a separer dans une cellule

REREBONSOIR

bon bah j'ai testé, cela ne fonctionne pas bien, enfin pas du tout a vrai, la solution semble se trouver dans le code de CHRIS, seulement je voudrais dire a la macros d'aller chercher l'avant avant dernier espace, est ce possible?
 
Re : données a separer dans une cellule

Bonsoir tout le monde,
dans ce cas tu fais un mix des macro de _thierry et chris:

Code:
For Each cel In plage
If cel.Value Like "*AVURNAV BREST*" Then
   For i = 1 To Len(cel)
      If IsNumeric(Mid(cel, i, 1)) Then
         j = (Mid(cel, i, 1))
         k = InStr(cel, j)
         y = Right(cel, Len(cel) - (k - 1))
         x = Left(cel, Len(cel) - (Len(cel) - k) - 1)
         cel.Offset(0, 1).Value = y
         cel.Value = x
         Exit For
      End If
   Next
End If
Next
End Sub

A+
 
- 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
5
Affichages
719
Réponses
3
Affichages
879
Réponses
2
Affichages
1 K
Réponses
1
Affichages
932
J
Réponses
22
Affichages
3 K
jui42
J
A
Réponses
17
Affichages
4 K
Abdenour
A
Retour