Problème VBA excel

Résolu
josh64 Messages postés 58 Statut Membre -  
josh64 Messages postés 58 Statut Membre -
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.

2 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. josh64 Messages postés 58 Statut Membre 1
     
    merci beaucoup Michel
    0