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 SubBonjour,
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 SubBonjour 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 SubBonjour,
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 .