pb pour creer une reference article

A

asz

Guest
Bonjour, j'ai un fichier excel (et oui!!), dans la colonne A j'ai que des libellés d'articles par exemple "routeur modem adsl bewan", je souhaiterai d'apres ce libellé, créer une cellule ou serait générée une référence de l'article (genre les 3 premiers caractères de chaque mot constituant le libellé : roumodadsbew).
Merci par avance
asz
 
A

asz

Guest
merci de réagir si vite. Bien sûr pour compliquer la tâche, les libellés ne sont pas uniformes. C'est pour ça que pour pouvoir apres m'y retrouver dans les ref, je voudrai prendre les 3 premiers caracteres de chaque mot (ou valeur). Il y a des libellés ou figurent plus de 5 mots (8 maxi).
Par avance merci
asz
 
J

Jean-Marie

Guest
Bonjour Asz

Colle ce code dans un module de VBA, cette une fonction

Public Function ClefComposee(vCell As Range) As String
Dim I As Byte
Dim vclef As String
Dim var As String
var = ""
vclef = vCell
For I = 1 To Len(vclef) - Len(WorksheetFunction.Substitute(vclef, " ", "")) + 1
var = var & Mid(vclef, 1, 3)
vclef = Mid(vclef, InStr(1, vclef, " ") + 1, Len(vclef))
Next I
ClefComposee = var
End Function

Pour utiliser cette fonction dans la feuille active, en imaginant que le texte à codifié ce trouve en A1 = ClefComposee(A1).

Pour info, les function VBA se trouve dans la catégorie "personnalisées" dans la boîte de dialogue d'insertion des formules.

@+Jean-Marie
 
A

asz

Guest
lorsque j'insere la ligne de fonction en remplacement de vclef = vCell , il me met un blanc dans la cellule. Donc j'utilise toujours le premier script envoyé par Jean marie. Le pb c'est que parfois il me double le caractere du 2 eme mot ou 3eme. c'est pas pareil pour chaque reference créée. Certaines sont ok et d'auters erronnées.
Sincères salutations
asz
 
J

Jean-Marie

Guest
Re...

Excuse j'ai fait une boulette en recopiant le code, je te le redonne en entier

Public Function ClefComposee(vCell As Range) As String
Dim I As Byte
Dim vclef As String
Dim var As String
var = ""
vclef =trim(WorksheetFunction.Substitute(vCell, ",", ""))
For I = 1 To Len(vclef) - Len(WorksheetFunction.Substitute(vclef, " ", "")) + 1
var = var & Mid(vclef, 1, 3)
vclef = Mid(vclef, InStr(1, vclef, " ") + 1, Len(vclef))
Next I
ClefComposee = var
End Function

@+Jean-Marie
 
J

Jon

Guest
coucou,

je préfère ma solution

Sub demo()
Dim Donnees

For i = 1 To Range("A1", [A65536].End(xlUp)).Rows.Count
Donnees = Split(Cells(i, 1).Value, " ")
j = 1
For j = 0 To UBound(Donnees)
Cells(i, 2).Value = Cells(i, 2).Value & Mid(Donnees(j), 1, 3)
Next j
Next i

End Sub


bien entendu peut facilement être transformée en fonction personnalisée.


bonne journée
 

Statistiques des forums

Discussions
312 594
Messages
2 090 088
Membres
104 371
dernier inscrit
Momo6767