VBA - Extraire avant un caractère spécifique

Bonjour à tous,

J'ai une suite de cellule comprenant des données sous la forme "abcdef - ghijkl".

Je cherche la fonction VBA permettant d'extraire d'une part tout ce qui est à gauche de "-", d'autre part tout ce qui est à droite de "-".

L'objectif est donc d'avoir au final une colonne avec "abcdef" et d'autre par une colonne avec "ghijkl".

Au cours de mes recherches sur le web, j'ai pu voir que faire cela est possible avec "données - convertir etc." mais je tiens à le faire en VBA.

Je pense que cela est réalisable en combinant Instr, Len puis Left ou Right mais je n'arrive pas à poser clairement ces éléments et à trouver la solution à cette impasse.

Pourriez vous m'aider ?

Je vous remercie,

Adevy.

bonjour,

bonjour une macro, qui pour une colonne ou une partie de colonne sélectionnée, remplit les 2 colonnes suivantes avec la partie gauche suivie de la partie droite.

sub test()
for each chaine in selection
chaine.offset(0,1)=left(chaine,instr(chaine,"-")-1)
chaine.offset(0,2)=mid(chaine,instr(chaine,"-")+1)
next
end sub

Bonjour

Bonjour h2so4

Je me suis penché un peu sur le problème

Sub test()
  Range("B1").Resize(, UBound(Split(Range("A1"), " - ")) + 1) = Split(Range("A1"), " - ")
End Sub

Merci beaucoup mais je ne comprends pas comment intégrer l'une ou l'autre de vos réponses dans le code suivant :

If Left(Cells(i, 1), 3) = "Tél" Then
Cells(compteur + 1, "H") = Cells(i, 1) 'Tél
Chaine = Cells(i - 1, 1)
Cells(compteur + 1, "E") = Left(Chaine, InStr(Chaine, "-") - 1) 'ce que j'ai essayé de faire
End If

L'objectif est que si la cellule (ligne, 1) commence par tél,

ALORS Cells(compteur + 1, "H") = Cells(i, 1) 'Tél (pas de problème pour spécifier cela),

ET Cells(compteur + 1, "E") est égal à la chaine de caractères à droite du "-" dans la cellule au dessus de celle commencant par tél.

Je vous remercie.

bonjour,

remplace le left par mid pour avoir la partie droite.

Cells(compteur + 1, "E") = mid(Chaine, InStr(Chaine, "-") + 1) 'ce que j'ai essayé de faire

Merci beaucoup.

Cela marche avec Mid, mais pas avec left.

Par quoi remplacer le mid pour avoir la partie gauche ?

Adevy a écrit :

Merci beaucoup.

Cela marche avec Mid, mais pas avec left.

Par quoi remplacer le mid pour avoir la partie gauche ?

Cells(compteur + 1, "E") = Left(Chaine, InStr(Chaine, "-") - 1)
Rechercher des sujets similaires à "vba extraire caractere specifique"