Transformer une lettre dans une cellule VBA
Bonjour à tous,
Je viens vers vous car j'ai un léger soucis :
Je crée actuellement des numéros d'accords composés de cette manière : 1609000037 chaque fois qu'une nouvelle commande arrive le numéro augmente de +1 dans la colonne du dessous, ces numéros sont placés dans la colonne A.
J'aimerai faire en sorte que si la celulle dans la colonne B est non vide un "U" apparaisse pour préciser que ce numéro est spécifique et donne 1609000037U.
Seulement je ne sais pas comment faire pour empêcher un autre "U" d'arriver derrière le "U" existant quand j'aggrémente ma colonne d'un nouveau numéro l'ancien numéro va se voir affubler de "UU" et cela n'a pas de fin alors qu'il faudrais qu'il n'y ai qu'une lettre à la fin de ce numéro d'accord.
Ensuite si la cellule de la colonne C est non vide également, j'aimerai que le U se transforme en A pour donnner 1609000037A sachant que la celulle de la colonne C n'est remplit que si la B est remplit, mais elle se remplit beaucoup plus tard, donc la différence A et U permet d'avoir un suivi sur qu'elle numéro a eu une réponse dans la colonne C et lequel ne l'a pas eu.
Donc le numéro ferait d'abord U quand on remplit la B puis A une fois la colonne C remplit ou rien si aucune des deux colonnes n'est remplies.
Grand merci d'avance,
Bonsoir à tous
essaie cela :
Sub test()
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
If Not IsEmpty(Range("B" & i)) And Right(Range("A9").Text, 1) <> "U" Then
Range("A" & i) = Range("A" & i).Value & " U"
End If
Set plage = Range("B" & Rows.Count).End(xlUp)
Next
End SubBye
Re
autant pour moi , j'ai mis A en dur pour tester
Sub test()
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
If Not IsEmpty(Range("B" & i)) And Right(Range("A" & i).Text, 1) <> "U" Then
Range("A" & i) = Range("A" & i).Value & " U"
End If
Set plage = Range("B" & Rows.Count).End(xlUp)
Next
End SubC'est mieux je pense
Re
Encore désolée, je n'avais pas lu la fin de ta demande, donc:
Sub test()
Dim MonChamp
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
If Not IsEmpty(Range("B" & i)) And Right(Range("A" & i).Text, 1) <> "U" And Right(Range("A" & i).Text, 1) <> "A" Then
Range("A" & i) = Range("A" & i).Value & " U"
GoTo Suit
End If
If Not IsEmpty(Range("C" & i)) Then
If Right(Range("A" & i).Text, 1) <> "U" Then
Range("A" & i) = Range("A" & i).Value & " A"
Else
MonChamp = Range("A" & i).Value
Range("A" & i).Value = Left(MonChamp, Len(MonChamp) - 1) & "A"
End If
End If
Set plage = Range("B" & Rows.Count).End(xlUp)
Suit:
Next
End SubBon courage
Bonsoir Esäu, Patty,
quelque chose comme ça?
Nouveau numéro
Sub Accord()
'
Application.EnableEvents = False
'
iRow = Range("A" & Rows.Count).End(xlUp).Row + 1
sData = Cells(iRow, 1).Offset(-1, 0)
Cells(iRow, 1) = IIf(IsNumeric(Right(sData, 1)), Val(sData) + 1, Val(Split(sData, " ")(0)) + 1)
'
Application.EnableEvents = True
'
End SubU - A
Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim sFlag As String, sData As String
'
Application.EnableEvents = False
'
If Not Intersect(Target, Columns("B:C")) Is Nothing Then
iRow = Target.Row
sData = Cells(iRow, 1)
If Cells(iRow, 2) <> "" Then sFlag = IIf(Cells(iRow, 3) <> "", " A", " U")
Cells(iRow, 1) = IIf(IsNumeric(Right(sData, 1)), sData & sFlag, Split(sData, " ")(0) & sFlag)
End If
'
Application.EnableEvents = True
'
End SubA+
Bonsoir Patty et Curulis57
Merci à vous pour vos réponses le résultat est comme escompté, j'ai l'impression que vos deux formules fonctionnent aussi bien l'une que l'autre, vous me retirez une belle épine du pied merci encore.
A +