Vba supprimer caractere cellule

ordaz75

XLDnaute Nouveau
Bonjour,

Après avoir fais des recherches, je ne trouve pas une macro qui permet de garder les 8 derniers caractères de droite d'une cellule. J'ai trouvé des formules mais cela ne me convient pas. Il me faut un code VBA

Dans mon fichier la colonne est la A, j'ai besoin des 8 derniers caractères de chaque cellule de cette colonne A.

Merci d'avance pour vos solutions
 

Pièces jointes

  • TEST1.xlsx
    7.9 KB · Affichages: 21
  • TEST1.xlsx
    7.9 KB · Affichages: 29
  • TEST1.xlsx
    7.9 KB · Affichages: 29

MichD

XLDnaute Impliqué
Re : Vba supprimer caractere cellule

Bonjour,

Tu peux essayer ceci :


Sub test()
Dim Rg As Range, C As Range

Application.ScreenUpdating = False
With Worksheets("Feuil1")
Set Rg = .Range("A2:A" & .Range("A" & .Cells.Rows.Count).End(xlUp).Row)
End With
For Each C In Rg
C.Value = Left(Trim(C.Value), 8)
Next
Application.ScreenUpdating = True
End Sub
 
Dernière édition:

ordaz75

XLDnaute Nouveau
Re : Vba supprimer caractere cellule

Par contre je n'arrive pas a l'appliquer a mon fichier...

La colonne concerné est la "O" de l'onglet porte feuille livrable. Sur ce même onglet y figure déjà un code VBA avec un bouton "mise a jour tableau" j'aimerais rajouter votre code à la suite sur ce même bouton...

Merci de votre aide
 

Pièces jointes

  • V1.zip
    177.9 KB · Affichages: 18
  • V1.zip
    177.9 KB · Affichages: 17
  • V1.zip
    177.9 KB · Affichages: 19

MichD

XLDnaute Impliqué
Re : Vba supprimer caractere cellule

Au début de la procédure "Mise à jour", appelle la macro "Test"

Call Test()


'---------------------------------------------
Sub test()
Dim Rg As Range, C As Range

Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("PORTEFEUILLE LIVRABLE")
Set Rg = .Range("O2:O" & .Range("O" & .Cells.Rows.Count).End(xlUp).Row)
End With
For Each C In Rg
C.Value = Left(Trim(C.Value), 8)
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'---------------------------------------------
 

ordaz75

XLDnaute Nouveau
Re : Vba supprimer caractere cellule

Je ne parviens vraiment pas à insérer le code a mon bouton "mise a jour tableau" de l'onglet portefeuille livrable....
Lors du clic sa ne fait que de "buger"... :(


a quel moment je dois insérer ton code au niveau du code deja existant :


Sub MAJ()
Dim i As Integer
Dim valeur_recherchee As String
'si la valeur recherchée n'est pas trouvée => plantage
'supprime plantage et passe a l'instruction suivante
On Error Resume Next
With Sheets(1)
'Suppression de ligne dans "PORTEFEUILLE LIVRABLE" si "N° CAR" n'existe pas dans "Fichier source de MAJ"
For i = .Range("N" & Rows.Count).End(xlUp).Row To 2 Step -1
If Application.CountIf(Sheets(2).Columns("L"), .Range("N" & i).Value) = 0 Then
.Range("N" & i).EntireRow.Delete
End If
Next i
End With
For i = 2 To Sheets(2).Range("L65536").End(xlUp).Row
valeur_recherchee = Sheets(2).Range("L" & i)
With Sheets(1)
ligne = .Columns("N").Find(what:=valeur_recherchee, LookIn:=xlValues, lookAt:=xlWhole).Row
If ligne <> 0 Then
.Range("O" & ligne) = Sheets(2).Range("K" & i)
.Range("Q" & ligne) = Sheets(2).Range("N" & i)
.Range("R" & ligne) = Sheets(2).Range("O" & i)
.Range("H" & ligne) = Sheets(2).Range("AK" & i)
ligne = 0
End If
End With
Next
On Error GoTo 0
End Sub

Désolé du dérangement mais je suis novice dans le domaine...
 

MichD

XLDnaute Impliqué
Re : Vba supprimer caractere cellule

VB:
Sub MAJ()
 Dim i As Integer
 Dim valeur_recherchee As String
 'si la valeur recherchée n'est pas trouvée => plantage
 'supprime plantage et passe a l'instruction suivante
 On Error Resume Next
 With Sheets(1)
 'Suppression de ligne dans "PORTEFEUILLE LIVRABLE" si "N° CAR" n'existe pas dans "Fichier source de MAJ"
 For i = .Range("N" & Rows.Count).End(xlUp).Row To 2 Step -1
 If Application.CountIf(Sheets(2).Columns("L"), .Range("N" & i).Value) = 0 Then
 .Range("N" & i).EntireRow.Delete
 End If
 Next i
 End With
 For i = 2 To Sheets(2).Range("L65536").End(xlUp).Row
 valeur_recherchee = Sheets(2).Range("L" & i)
 With Sheets(1)
 ligne = .Columns("N").Find(what:=valeur_recherchee, LookIn:=xlValues, lookAt:=xlWhole).Row
 If ligne <> 0 Then
 .Range("O" & ligne) = Sheets(2).Range("K" & i)
 .Range("Q" & ligne) = Sheets(2).Range("N" & i)
 .Range("R" & ligne) = Sheets(2).Range("O" & i)
 .Range("H" & ligne) = Sheets(2).Range("AK" & i)
 ligne = 0
 End If
 End With
 Next

Call TEST '<<<<<<<<<<<<<<<<<<<<=============================
 On Error GoTo 0
 End Sub
 '---------------------------------------------

 '---------------------------------------------
 Sub test()
 Dim Rg As Range, C As Range

 Application.ScreenUpdating = False
 Application.EnableEvents = False
 With Worksheets("PORTEFEUILLE LIVRABLE")
 Set Rg = .Range("O2:O" & .Range("O" & .Cells.Rows.Count).End(xlUp).Row)
 End With
 For Each C In Rg
 C.Value = Left(Trim(C.Value), 8)
 Next
 Application.EnableEvents = True
 Application.ScreenUpdating = True
 End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 623
Messages
2 090 287
Membres
104 482
dernier inscrit
delannay