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 Sub

Bye


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 Sub

C'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 Sub

Bon 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 Sub

U - 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 Sub

A+

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 +

Rechercher des sujets similaires à "transformer lettre vba"