Excel: macro pour convertir une colonne

Résolu
Ludivine -  
 Ludivine -
Bonjour à tous, je souhaite intégrer une macro qui fasse le "ménage" dans une cellule:
en cellule D2 par exemple j'ai :
NQ: New password: 1234567891;
Je souhaite que la macro ne garde que la série de 10 chiffres sans aucun autre signe, ni espace, ni point virgule ni rien, juste la série de 10 chiffres et ce, toujours en D2.

Après macro je voudrait que D2 ne contienne plus que :
1234567891

Et que la macro fonctionne sur toutes les lignes (sauf la 1) ou la colonne D est remplie !

Merci beaucoup de votre aide !!

5 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour

    est ce que les mdp sont toujours sous la forme
    xxxxxxxx suite de chiffres suivi d'un point virgule

    bonne suite
    0
    1. Ludivine
       
      Bonjour,

      Il n'y a pas de rêgle précise: la suite de 10 chiffres peut etre suivie d'un espace, d'un point virgule, d'une virgule, parfois de rien...

      Ca ne dépend pas de moi, ça vient d'un autre service !

      MErci!!
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    est ce que toutes les cellules sont de la forme
    NQ: New password: 1234567891;
    où le mdp
    - commence après NQ: New password:
    - se termine à la fin du texte (ici le ";")
    en gros est ce qu'il s'agit juste de nettoyer la partie gauche de la cellule
    0
    1. Ludivine
       
      Hello !

      Oui, à cela je répond oui !!

      Merci encore !
      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    une proposition

    Public Sub NettoieMdp() 
    For Each c In Selection 
      c.Value = Replace(c.Value, "NQ: New password: ", "") 
    Next c 
    End Sub

    mode d'emploi
    - selectionner la plage à traiter
    - lancer la macro

    RQ. j'ai mis un espace après le dernier ":"

    bonne suite
    0
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      dans ma proposition le ";" fait partie du mdp
      Si le texte se termine éventuellement par un caractère non numérique qui ne fait pas partie du mdp, on le supprime
      c'est à peine plus compliqué

      Public Sub NettoieMdp()   
      Dim s As String   
      For Each c In Selection   
        s = c.Value   
        s = Replace(s, "NQ: New password: ", "")   
        If Not IsNumeric(Right(s, 1)) Then s = Left(s, Len(s) - 1)   
        c.Value = s   
      Next c   
      End Sub

      bonne suite
      0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour les 2,

    Avec une routine réutilisable sur excel ou access: enlève tout ce qui n'est pas chiffre dans la cellule; renvoie 0 si aucun chiffre

    Function extrait_chiffres(ByRef texto As String) As Long  
        Dim reg As Object  
        Dim extraction As Object  
          
        Set reg = CreateObject("vbscript.regexp")  
              reg.Global = True  
              reg.Pattern = "(\d?\d?\d)"  
            Set extraction = reg.Execute(texto)  
              For Each digit In extraction  
                   extrait_chiffres = extrait_chiffres & (digit.Value)  
               Next digit  
        Set extraction = Nothing  
        Set reg = Nothing  
    End Function  
    
    Sub test()  
    'zone D2:D30  
    Dim cptr As Byte  
    For cptr = 2 To 30  
         Application.ScreenUpdating = False  
         Cells(cptr, "D") = extrait_chiffres(Cells(cptr, "D"))  
    Next  
    End Sub  
    


    Michel
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Ludivine
     
    Bonjour à vous tous et merci !

    Ca fonctionne parfaitement, merci encore vous êtes géniaux ;))

    Belle journée !
    0