Problème VBA excel

Résolu
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. merci beaucoup Michel
    0
    1. Contributeur
      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