Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Vba supprimer caractere cellule

  • Initiateur de la discussion Initiateur de la discussion ordaz75
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

O

ordaz75

Guest
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

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:
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
    V1.zip
    177.9 KB · Affichages: 18
  • V1.zip
    V1.zip
    177.9 KB · Affichages: 17
  • V1.zip
    V1.zip
    177.9 KB · Affichages: 19
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
'---------------------------------------------
 
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...
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Formule excel
Réponses
7
Affichages
309
Réponses
2
Affichages
238
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…