Extraction de caractères dans VBA

Résolu
unjourjeseraiuneprodeVBA Messages postés 3 Statut Membre -  
unjourjeseraiuneprodeVBA Messages postés 3 Statut Membre -
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 :)

2 réponses

  1. Utilisateur anonyme
     
    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 :

    
    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.  :)
     
    0
    1. unjourjeseraiuneprodeVBA Messages postés 3 Statut Membre
       
      bonjour albkan,

      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
      0
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    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.
    0
    1. unjourjeseraiuneprodeVBA Messages postés 3 Statut Membre
       
      Bonjour gbinforme,

      merci beaucoup ! Ta macro fonctionne à merveilles!
      Cela faisait des jours que je tournais en rond !
      encore merci à toi pour ton aide !
      0