XL 2013 concatenate dans un VBA avec separateur "-"

kangourou01

XLDnaute Nouveau
Bonjour à tous
débutant en VBA je suis parti sur un formulaire pour me remplir certain champs
mais sur une je concatène, partie de ces données que je souhaite séparer par le signe –
ce que j’arrive à faire pour le moment correspond à : 28012019LD31 et je souhaite l’avoir sous la forme de 28012019-LD-3-1 ; Mais j’ai quelque soucis avec le séparateur

Le code que j’utilise est le suivant
Private Sub UserForm_initialize()
ComboBox1.ColumnCount = 1
ComboBox1.List = Array("Printemps", "Acacia", "Forêt", "Montagne", "Lavande")
ComboBox2.ColumnCount = 1
ComboBox2.List = Array("120 g", "250 g", "500 g", "1 kg")
ComboBox3.ColumnCount = 1
ComboBox3.List = Array("1", "2", "3", "4")
End Sub
Private Sub CommandButton1_Click()
Dim L, NUM, LL As Integer
If MsgBox("Confirmez vous ajout Pots?", vbYesNo, "Demande de confirmation") = vbYes Then
L = Sheets("tracking").Range("b65536").End(xlUp).Row + 1
LL = Sheets("tracking").Range("A65536").End(xlUp).Row + 1
NUM = 1
For I = 1 To TextBox1.Value
Sheets("tracking").Range("B" & L).Value = ComboBox2
Sheets("tracking").Range("C" & L).Value = NUM
Sheets("tracking").Range("D" & L).Value = ComboBox1
Sheets("tracking").Range("E" & L).Value = ComboBox3
Sheets("tracking").Range("F" & L).Value = TextBox2

nbl = "left(""" & ComboBox1.Value & """,1)"
nbl2 = "vlookup(""" & ComboBox2.Value & """, DB!$A$1:$B5,2,0)"
Sheets("tracking").Range("G" & L).Formula = "=concatenate(" & TextBox2.Value & "," & nbl & "," & nbl2 & "," & ComboBox3.Value & "," & NUM & ")"

DLC = "value(right(""" & TextBox2.Value & """,4))"
DLC2 = "=vlookup(value(left(right(""" & TextBox2.Value & """,6),2)),DB!$J$1:$K$13,2,0)"
Sheets("tracking").Range("H" & L).Formula = DLC2 & "&" & (DLC & "+1")

formule = "=SUMPRODUCT((DB!$F$2:$F$25=""" & ComboBox2.Value & """)*(DB!$G$2:$G$25=""" & ComboBox1.Value & """)*(DB!$H$2:$H$25))"
Sheets("tracking").Range("K" & L).Formula = formule

L = L + 1
NUM = NUM + 1
Next
End If
End Sub

Si quelqu'un à une solution, je suis preneur
Par avance merci
Kang;
 

Pièces jointes

  • apiform.xlsm
    29.2 KB · Affichages: 15

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Déjà pour moi ta colonne "date" a un pb de format , je teste je ne connais pas donc je mets 01/02/2019 et là , ça entraine que des erreurs??
Ensuite quand on part en VBA pourquoi aller remettre des formules excel dans le code ?? tu fais ton traitement et tu mets tes résultats vba
direct dans tes cellules !!! Enfin c'est ma méthode !
Si ta chaine est fixe en nbre de car. (xxxxxxyyzz) c'est simple de découper en vba : xxxxxx-yy-z-z
va sur le site de notre ami Jacques Boisgontier : manipulation de chaines en vba
 

kangourou01

XLDnaute Nouveau
bonjour
effectivement j'ai oublié de préciser que sur la colonne date je ne mettais pas de séparateur et que je la rentrais donc soula forme jjmmaaa
maintenant pourquoi je met des formules dans le code, comme je l'aie indiqué dans le message, je débute en VBA je fais donc avec les connaissances que j'ai je l'avoue pour ça pas beaucoup. Donc si tu as des propositions d'amélioration tu peux le partager tout le monde y trouvera un intérêt.
Maintenant pour ce qui est de la manipulation de chaine de caractères je pense qu'effectivement ce doit être simple le tout est de connaitre. Ce qui n'est pas mon cas et c'est d'ailleurs pour ça que je suis venu sur le forum.
Mais merci quand même d'avoir pris le temps d'avoir regardé
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
J"e regarde de plus près ton code
je débute en VBA je fais donc avec les connaissances que j'ai je l'avoue pour ça pas beaucoup
Quand tu dis ça , euh ?? pour moi plutôt spécialisé dans le VBA que les formules , pas évident de comprendre de suite ton code : traduction des formules Excel en VBA , donc si tu as écris ..... c'est que tu connais , je ne sais même pas faire comme ça !!
Le vba est fait pour contourner les formules Excel via un langage appelé à l'origine BASIC renommé depuis VBA ( Visual BASIC for Application)
Sinon , bin voilà ta solution en VBA pur !! si cela te convient , la date est à entrer sous "dd/mm/yy" ou "dd/mm/yyyy" ou encore "dd-mm-yy ou yyyy
 

Pièces jointes

  • apiform.xlsm
    34.7 KB · Affichages: 9
Dernière édition:

kangourou01

XLDnaute Nouveau
Super et vachement plus simple que les transformation de formules.
Merci
Mais faut il encore connaitre le VBA et là pour le moment je rame je me sert d'exemple que je trouve à droite et à gauche...

Je vais abuser encore, mais d’après toi, y a t il un moyen pour que la date soit pré-remplie dans le formulaire avec celle du jour
Là comme ça, avec ce que je connais, je mettrai un test qui si la valeur est vide alors il s'agit de la date du jour...;)
 

herve62

XLDnaute Barbatruc
Supporter XLD

Pièces jointes

  • apiform.xlsm
    35.1 KB · Affichages: 11

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa