Excel: macro pour convertir une colonne
Résolu
Ludivine
-
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 !!
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
-
bonjour
est ce que les mdp sont toujours sous la forme
xxxxxxxx suite de chiffres suivi d'un point virgule
bonne suite -
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 -
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-
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
-
-
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour à vous tous et merci !
Ca fonctionne parfaitement, merci encore vous êtes géniaux ;))
Belle journée !