Bonjour.
Je souhaiterai faire une macro pour récupérer une chaine séparer par un '-'.
Exemple1--> Cellule1:1012 - Test1
Résultat1--> 1012
Exemple2--> Cellule1:33222 - Test1
Résultat2--> 33222
Merci d'avance pour votre aide.
Version imprimable
Bonjour.
Je souhaiterai faire une macro pour récupérer une chaine séparer par un '-'.
Exemple1--> Cellule1:1012 - Test1
Résultat1--> 1012
Exemple2--> Cellule1:33222 - Test1
Résultat2--> 33222
Merci d'avance pour votre aide.
Si toutes tes données ont ce "profil" (1012 - Test1) alors c'est relativement simple
Bonne journéeCode:Result = trim(split(cells(NoLig, NoCol), "-")(0))
Snif...
ça ne marche pas.
J'en profite pour rajouter autre chose...
J'ai ma cellule1 qui contient '1243 - Test'
Comment puis je récupérer '1243' pour la mettre dans une cellulex et ensuite supprimer '1243 - ' dans ma cellule1.
Sachant que le chiffre peut être plus long, quel fonction faut il utiliser?
Il n'y pas une fonction qui indique la position du premier espace?
Et pourquoi pas après faire un left()??
Une solution proposée par Delbeke dans un sujet un peu plus bas :
http://www.developpez.net/forums/d66...ine-caractere/
est d'utiliser la fonction Val() :
Result aura la valeur 10247 dans ce cas.Code:
1
2 Result = Val("10247 - Test")
Cravis.
C'est à dire ?Citation:
ça ne marche pas.
Montre le code tel que tu l'utilises.
Sinon, c'est que tu as une ancienne version d'office ; split ne fonctionne qu'après 1997 (!) :aie:
(La solution proposée par Cravis est peut-être la meilleure si c'est toujours une valeur que tu veux récupérer ;) )
Bonjour,
Si vous avez une version supérieure à Excel 97 comme indiqué par Ouskel'n'or et compte tenu du fait que vous voulez que la cellule d'origine ne contienne plus que la 2ème partie des données :
Remarque : si le caractère "-" est précédé et suivi d'un espace vous pouvez remplacer :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Sub Separe() Dim txt$, Tableau() As String, i&, pc%, pcc%, pl&, dl&, n& '1ère ligne contenant vos données (vous pouvez modifier) pl = 2 'colonne de données (vous pouvez modifier) pc = 1 'dernière contenant vos données (vous pouvez modifier) dl = Range(Cells(65536, pc), Cells(65536, pc)).End(xlUp).Row 'colonne à partir de laquelle les données séparées vont être copiées (vous pouvez modifier) pcc = pc + 1 For n = pl To dl txt = Cells(n, pc) Tableau = Split(txt, "-") For i = 0 To UBound(Tableau) Cells(n, pcc) = Tableau(i) pcc = pcc -1 Next i Next n End Sub
Code:
1
2
3 Tableau = Split(txt, "-") par Tableau = Split(txt, " - ")
Bonjour Ouskel'n'or,
Comme toujours (ou très souvent ?) vous avez raison, j'avais oublié.
Donc pour tenir compte de votre remarque et des contraintes fixées par Angeldu74, on ajoute au code :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub Separe() Dim txt$, Tableau() As String, i&, pc%, pcc%, pl&, dl&, n& '1ère ligne contenant vos données (vous pouvez modifier) pl = 2 'colonne de données (vous pouvez modifier) pc = 1 'dernière contenant vos données (vous pouvez modifier) dl = Range(Cells(65536, pc), Cells(65536, pc)).End(xlUp).Row 'colonne à partir de laquelle les données séparées vont être copiées (vous pouvez modifier) pcc = pc + 1For n = pl To dl txt = Cells(n, pc) Tableau = Trim(Split(txt, "-"))For i = 0 To UBound(Tableau) Cells(n, pcc) = Tableau(i) pcc = pcc -1 Next iNext nEnd Sub
Tout bon, j'ai fait un petit mix et ça a marché.
Merci à tous pour votre aide! :D
Et je vous souhaite que des bonnes choses pour ce début d'année! @+