Le concaténate montre la deuxième et la troisième valeur sauf la première valeur

J'ai cette macro qui concatène des valeurs de 3 cellules, le problème est qu'elle ne concatène que les valeurs 1ère et 2ème, avant de concaténer la première valeur était 3, la deuxième valeur était mars et la troisième valeur était 2015, donc le résultat me donne "3march"

C'est mon code:

Private Sub CommandButton1_Click() Sheets("Info").Activate Range("M2:Q2").Select Selection.Copy Range("A2").Cells(1).Select Do While ActiveCell.Value <> "" ActiveCell.Offset(1, 0).Select Loop Selection.Offset(0, 12).Select Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Selection.Offset(0, -12).Select Selection.Cells(1).Select 'ahora viene la parte de pegar los valores,,, Selection.Cells(1).Value = TextBox1.Value Selection.Cells(1, 2).Value = ComboBox1.Value Selection.Cells(1, 3).Value = ComboBox4.Value Selection.Cells(1, 4).Value = ComboBox5.Value Selection.Cells(1, 5).Value = ComboBox6.Value Selection.Cells(1, 6).Value = ComboBox9.Value Selection.Cells(1, 7).Value = ComboBox13.Value Selection.Cells(1, 8).Value = TextBox3.Value Selection.Cells(1, 9).Value = TextBox4.Value Selection.Cells(1, 10).Value = TextBox8.Value Selection.Cells(1, 11).Value = TextBox6.Value Selection.Cells(1, 12).Value = ComboBox12.Value 'HERE IS THE PROBLEM!!!!!! f_env = Selection.Cells(1, 3).Value & "-" & Selection.Cells(1, 4).Value & "-" & Selection.Cells(1, 5).Value Selection.Cells(1, 17).Value = f_env Unload UserForm1 End Sub 

Modifier: Ajout d'un nouveau code.

Il est difficile d'exécuter le code comme personne, mais vous avez le classur, et nous devrions essayer de reproduire le cahier de travail nous-mêmes. Voici un code révisé car j'ai interprété ce que vous essayez de faire. Je ne peux pas le tester car je n'ai pas votre classur.

 Private Sub CommandButton1_Click() Dim sh As Worksheet Dim Crng As Range 'copy range Dim LrWs As Long 'last row Dim Prng As Range 'paste range Dim Drng As Range Dim f_env As Ssortingng Set sh = Worksheets("Info") With sh Set Crng = .Range("M2:Q2") LrWs = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 Set Prng = .Cells(LrWs, 13) Crng.Copy Prng.PasteSpecial xlPasteAll Application.CutCopyMode = 0 Set Drng = .Cells(LrWs, 1) Drng.Value = TextBox1.Value Drng.Offset(0, 1).Value = ComboBox1.Value Drng.Offset(0, 2).Value = ComboBox4.Value Drng.Offset(0, 3).Value = ComboBox5.Value Drng.Offset(0, 4).Value = ComboBox6.Value Drng.Offset(0, 5).Value = ComboBox9.Value Drng.Offset(0, 6).Value = ComboBox13.Value Drng.Offset(0, 7).Value = TextBox3.Value Drng.Offset(0, 8).Value = TextBox4.Value Drng.Offset(0, 9).Value = TextBox8.Value Drng.Offset(0, 10).Value = TextBox6.Value Drng.Offset(0, 11).Value = ComboBox12.Value End With f_env = ComboBox4.Value & "-" & ComboBox5.Value & "-" & ComboBox6.Value Drng.Offset(0, 16) = f_env End Sub 

Connectez-nous à un exemple de classur, si vous ne parvenez pas à ce que cela fonctionne correctement.

Parce que la colonne (sur la ligne de la sélection) est effectivement déterminée par la colonne dans laquelle la sélection était terminée, vous obtiendrez une date dans la colonne Q uniquement si la sélection se trouve dans la colonne A. Cela peut être un point mineur mais je crois que la destination devrait toujours être une certaine colonne.

Date de construction

 Sub gather_date() Dim sel As Range With Selection.Parent For Each sel In Selection.Columns(1).Cells If Application.CountA(sel.Resize(1, 3)) = 3 Then .Cells(sel.Row, 17) = CDate(Join(Array(sel.Value2, Left(sel.Offset(0, 1).Value2, 3), sel.Offset(0, 2).Value2), "-")) .Cells(sel.Row, 17).NumberFormat = "d-mmmm-yyyy" End If Next sel End With End Sub 

Comme vous utilisez une macro basée sur la sélection, j'ai ajouté une boucle qui traitera toutes les cellules dans la sélection.

Cela pourrait également être effectué avec la formule de la feuille de calcul suivante au deuxième sortingmestre.

 =DATEVALUE(CONCATENATE(B2, "-", C2, "-", D2)) 

Formatez comme date et complétez le cas échéant.