Problème VBA excel

Résolu/Fermé
josh64 Messages postés 56 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 18 janvier 2013 - 29 mars 2011 à 16:32
josh64 Messages postés 56 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 18 janvier 2013 - 30 mars 2011 à 09:17
Bonjour,
voilà je débute sur VBA.
J'ai un tableau qui commence à la cellule A2. Dans cette colonne il y a des noms d'objets qui sont de ce type : premiernom_deuxièmenom_num_annee.extention
Ce que j'aimerais faire c'est extraire chaque partie et mettre ces parties dans les cellules voisines à chaque rafraichissement du tableau, donc à la création de nouvelles lignes.

En A1 on aurait ça :
premiernom_deuxièmenom_num_annee.extention

Après exécution de la macro :

En B1 on aurait ça :
premiernom
En C1 on aurait ça :
deuxièmenom
En D2 on aurait ça :
num_annee

J'ai essayé de faire un truc du genre :

Sub extraction()
Dim Tableau() As String
Dim i As Integer

Tableau = Split("Ai", "_")
For i = 0 To ....
Next i
....

Mais bon mes connaissances en VBA sont trop faible pour le moment...

Merci de votre aide.
A voir également:

2 réponses

michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
Modifié par michel_m le 29/03/2011 à 18:49
Bonjour

Pour le fun
Tu as 2 séparateurs le point et l'underscore
le problème est que tu veux num_annee dans une seule cellule avec le séparateur
d'où une espèce de cascade
la macro est paramétrée pour pouvoir utiliser une boucle

(il y a d'autres solutions)
Sub separer(source, cible)  
separe = Split(source, ".")  
source.ClearContents  
separe = Split(separe(0), "_")  
 With cible  
 .Value = separe(0)  
 .Offset(0, 1) = separe(1)  
.Offset(0, 2) = separe(2) & "_" & separe(3)  
 End With  
End Sub  

Sub test()  
For cptr=1 to 5  
separer Range("A" & cptr), Range("B" & cptr)  
next  
End Sub


suivant le cas pour convertir en plusieurs colonnes avec toujours le m^séparateur, tu peux utiliser l'enregistreur de macro avec données-convertir-délimité et l'aménager en supprimant les paramètres non utiles....
par exemple si tout les séparateurs étaient un "_" et ne seraient qu-à cà:

Range("A1").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
    OtherChar:="_", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1))


Michel
0
josh64 Messages postés 56 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 18 janvier 2013 1
30 mars 2011 à 09:17
merci beaucoup Michel
0