Extraction de caractères dans VBA
Résolu
unjourjeseraiuneprodeVBA
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
unjourjeseraiuneprodeVBA Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
unjourjeseraiuneprodeVBA Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je m'excuse par avance si je n'utilise pas le bon langage VBA car je suis toute novice et justement en train de monter ma première macro.
J'ai fouillé dans les différentes discussions et bouquins, mais malgré cela je bloque depuis plusieurs jours sur un point donc je fais appel à votre aide !!
Je vous explique :
Je souhaite couper les 7 premiers caractères de la colonne E s'ils sont des chiffres et
s'ils remplissent cette condition, les coller dans la colonne D correspondant à la cellule.
Par exemple, sur la photo que j'ai jointe,
en E2, j'ai "1013000 CAPITAL APPELE VERSE" doit devenir "CAPITAL APPELE VERSE"
et D2 sera alors 1013000.
Je ne veux donc pas modifier les autres lignes qui ne contiennent pas ces 7 chiffres.
Et je veux faire la macro jusqu'à la dernière ligne remplie.
J'ai d'ailleurs donné un nom de variable à celle-ci:
DLigne = GL_clients.Range("A1000000").End(xlUp).Row
J'ai essayé avec des If Isnumber, des ActiveCell = Right(ActiveCell, Len(ActiveCell) - 7) qui me coupent alors les chiffres mais je n'arrive pas à les récupérer... et j'en passe !
Bref, j'ai besoin de vous !!
Merci par avance à ceux qui prendront le temps de me répondre :)

Je m'excuse par avance si je n'utilise pas le bon langage VBA car je suis toute novice et justement en train de monter ma première macro.
J'ai fouillé dans les différentes discussions et bouquins, mais malgré cela je bloque depuis plusieurs jours sur un point donc je fais appel à votre aide !!
Je vous explique :
Je souhaite couper les 7 premiers caractères de la colonne E s'ils sont des chiffres et
s'ils remplissent cette condition, les coller dans la colonne D correspondant à la cellule.
Par exemple, sur la photo que j'ai jointe,
en E2, j'ai "1013000 CAPITAL APPELE VERSE" doit devenir "CAPITAL APPELE VERSE"
et D2 sera alors 1013000.
Je ne veux donc pas modifier les autres lignes qui ne contiennent pas ces 7 chiffres.
Et je veux faire la macro jusqu'à la dernière ligne remplie.
J'ai d'ailleurs donné un nom de variable à celle-ci:
DLigne = GL_clients.Range("A1000000").End(xlUp).Row
J'ai essayé avec des If Isnumber, des ActiveCell = Right(ActiveCell, Len(ActiveCell) - 7) qui me coupent alors les chiffres mais je n'arrive pas à les récupérer... et j'en passe !
Bref, j'ai besoin de vous !!
Merci par avance à ceux qui prendront le temps de me répondre :)

A voir également:
- Extraction de caractères dans VBA
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
- Caracteres speciaux - Guide
- Exemple de mot de passe à 8 caractères - Guide
2 réponses
Bonjour UnjourJSPV,
J'avais fait cet exercice pour la colonne D, avec une formule et sans macro ;
mais j'ai oublié les modifications de la colonne E ! Or effectivement, pour
cela, il vaut mieux faire une macro :
Ma macro est différente de celle de gbinforme (que je salue).
Je met la mienne en complément (pour info).
Cordialement. :)
J'avais fait cet exercice pour la colonne D, avec une formule et sans macro ;
mais j'ai oublié les modifications de la colonne E ! Or effectivement, pour
cela, il vaut mieux faire une macro :
Option Explicit Sub Essai() Application.ScreenUpdating = False Dim chn As String, lig As Long, p As Byte: lig = 2 Do While Not IsEmpty(Range("A" & lig)) If (lig + 1) Mod 3 = 0 Then chn = Range("E" & lig): p = InStr(chn, " ") Range("D" & lig) = Left$(chn, p - 1) Range("E" & lig) = Right$(chn, Len(chn) - p) End If lig = lig + 1 Loop End Sub
Ma macro est différente de celle de gbinforme (que je salue).
Je met la mienne en complément (pour info).
Cordialement. :)
Bonjour,
Tu peux essayer ceci :
Je t'ai un peu corrigé ta définition car ainsi elle passe avec toutes les versions.
Tu peux essayer ceci :
Dim DLigne As Long Dim lig As Long DLigne = GL_clients.Range("A" & Rows.Count).End(xlUp).Row For lig = 2 To DLigne If IsNumeric(Left(Cells(lig, "E"), 7)) Then Cells(lig, "D").Value = Left(Cells(lig, "E"), 7) Cells(lig, "E").Value = Mid(Cells(lig, "E"), 9) End If Next lig
Je t'ai un peu corrigé ta définition car ainsi elle passe avec toutes les versions.
je te remercie pour ta réponse mais en fait je suis obligée de passer par une macro.
gbinforme vient de me répondre également et cela fonctionne avec la macro qu'il propose ! :)
super ce forum !! (je vais marquer résolu)
Bonne soirée