Conserver première lettre et chiffre dans chaine de caractère

Bonjour à tous j'ai encore besoin d'aide pour ceci :

J'ai une colonne C qui commence ligne 5 avec un nom1+un chiffre +nom2 avec espace entre eux et je souhaiterais ne garder que la première lettre du nom1 avec le chiffre

J'ai essayé plusieurs solutions avec boucle mais ca ne fonctionne pas correctement pour l instant .

Merci bcp pour votre aide .

Sub LettreChiffre()

Dim derlig As Integer, i As Integer

derlig = Range("C:C").SpecialCells(xlCellTypeLastCell).Row

For i = 5 To derlig

Nom1 = Left(Left(Cells(i, 3), InStr(Cells(i, 3), " ") - 1), 1)

Chiffre = Mid(Cells(i, 3), InStr(Cells(i, 3), " "), Len(Cells(i, 3)))

Cells(i, 3) = Nom1 & chiffre

Range("C" & i).Value = Mid(Trim(Range("C" & i).Value), 1, InStrRev(" " & Trim(Range("C" & i).Value), " ") - 1)

Next 

Columns("C").Select
replace (" ", "")

End Sub

Bonjour,

Si les éléments sont séparés par des espaces, tu peux utiliser la fonction Split.

Exemple :

Cellule = "Martin1 Dupuis"
Nom1 = Left(Split(Cellule, " ")(0), 1)
chiffre = Right(Split(Cellule, " ")(0), 1)

Bonjour,

Et une autre !...

Cdlt.

Public Sub NomChiffre()
Dim lastRow As Long, lRow As Long, tbl
    With ActiveSheet
        lastRow = .Cells(Rows.Count, 3).End(xlUp).Row
        For lRow = 5 To lastRow
            tbl = VBA.Split(.Cells(lRow, 3).Value)
            .Cells(lRow, 3).Value = Left(tbl(0), 1) & " " & tbl(1)
        Next
    End With
End Sub

Bonjour Jean-Eric et Pedro merci bcp pour vos solutions apportées à mon problème et cela fonctionne ! ;-)

Bonsoir Jean -Eric et le forum j'ai encore un pt problème

J'ai écris péniblement ;-) plusieurs macros que j'essaye de faire fonctionner l'une à la suite de l autre mais cela bug un peu..

Ces macros redimensionnent un tableau de données Excell brut :

1)Je supprime les lignes vide et les colonnes inutiles et je rassemble les données les plus grandes de plusieurs colonnes dans une seule .

2)J 'ajoute au tableau une colonne avec la somme de division de deux autres colonnes

3)Je place en dessous la moyenne de celle-ci .

4) Je garde la première lettre et chiffre de la troisième colonne

Avec la dernière macro je n 'ai plus que la première lettre qui apparait et je n 'ai plus mon chiffre juste derrière je ne sais pas pourquoi .

D'avance un tout grand merci si tu peux m 'aider ou qql un d autres .

Sub TRIER_pls_grd()

    Range("Q4").Select
    ActiveCell.Value = "prix"
    Range("Q5").Select
    ActiveCell.FormulaR1C1 = "=MAX(RC[-5]:RC[-1])"
    Selection.AutoFill Destination:=Range("Q5:Q200"), Type:=xlFillDefault

    Columns("Q:Q").Select
    Selection.Copy
    Columns("R:R").Select
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False

Dim i%
For i = 200 To 5 Step -1
If Cells(i, 7).Value <> "MAISON" Then Rows(i).EntireRow.Delete
If Cells(i, 2).Value = "" Then Rows(i).EntireRow.Delete
Next i

Range("C:C,H:H,K:Q,S:AC,AR:AR,AU:AU,AV:AV,AX:AX,AY:AY,AZ:AZ,BA:BA").Delete

    Columns("A:A").ColumnWidth = 6.22
    Columns("B:B").ColumnWidth = 6.44
    Columns("C:C").ColumnWidth = 5.33
    Columns("I:I").ColumnWidth = 7.11
    Columns("K:K").ColumnWidth = 3.44
    Columns("L:L").ColumnWidth = 3
    Columns("M:M").ColumnWidth = 2.56
    Columns("N:N").ColumnWidth = 4.78
    Columns("O:O").ColumnWidth = 4.44
    Columns("P:P").ColumnWidth = 2.56
    Columns("Q:Q").ColumnWidth = 3.78
    Columns("R:R").ColumnWidth = 2.78
    Columns("S:S").ColumnWidth = 3.44
    Columns("T:T").ColumnWidth = 3.56
    Columns("U:U").ColumnWidth = 5
    Columns("V:V").ColumnWidth = 5.67
    Columns("W:W").ColumnWidth = 6

End Sub
--------------------------------------------------------------------------------------------
Sub rajoutcolonne()

 Dim dc As Integer, i As Integer
 Dim ws As Worksheet
 Dim plage As Range

 Application.ScreenUpdating = False

  For Each ws In Worksheets
   dl = ws.Range("A" & Rows.Count).End(xlUp).Row                    'dernière ligne utilisée
   dc = ws.Cells(4, Cells.Columns.Count).End(xlToLeft).Column       'dernière colonne utilisée

   ws.Activate                                                      'active la feuille

   For i = 5 To dl                                                  'boucle de la ligne 5 à la dernière

    ws.Cells(4, dc + 1) = "Prix m ²"
     ws.Columns(dc + 1).AutoFit
      ws.Cells(4, dc + 1).Interior.ColorIndex = 25              'fond de cellule en BLEU
       ws.Cells(i, dc + 1) = "=INT(RC[-19]/RC[-5])"

  Next i

   Next ws

  Application.ScreenUpdating = True

  Columns("AB:AB").Select
    Selection.Copy
    Columns("AC:AC").Select
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    Range("AB:AB").Delete

 End Sub

-----------------------------------------------------------------------------------------------------------------------
Sub moy()

 Dim derniereligne%, plage As Range
  With ActiveSheet
   derniereligne = Range("AB" & Rows.Count).End(xlUp).Row + 1
   Set plage = Range("AB5:AB" & derniereligne)
   Range("AB" & derniereligne + 1) = Application.WorksheetFunction.TrimMean(plage, 0.1)

  End With

End Sub
-------------------------------------------------------------------------------------------------------------------------
Sub NomChiffre()

Dim lastRow As Long, lRow As Long, tbl
    With ActiveSheet
        lastRow = .Cells(Rows.Count, 3).End(xlUp).Row
        For lRow = 5 To lastRow
            tbl = VBA.Split(.Cells(lRow, 3).Value)
            .Cells(lRow, 3).Value = Left(tbl(0), 1) & "" & tbl(1)
        Next
    End With
End Sub

Bonjour,

Joins un fichier pour cette nouvelle demande.

Cdlt.

Bonjour Jean-Eric et le forum merci à toi pour ton aide , voici le fichier avec les macros que j exécute dans l'ordre suivant manuellement .

Trier

Rajout Colonne

Moy

Nom Chiffre

Je souhaiterais qu'elle s exécute automatiquement l'une après l'autre avec une macro maitre mais quand je le fais cela bug et je n 'ai plus que la première lettre et pas le chiffre avec dans la colonne secteur .

Merci .

9test1.xlsm (21.24 Ko)
Rechercher des sujets similaires à "conserver premiere lettre chiffre chaine caractere"