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

Séparer chiffres et lettres par macro

  • Initiateur de la discussion Initiateur de la discussion 350dr
  • 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 !

3

350dr

Guest
Bonjour le forum.
je sais que le sujet a déjà été abordé, mais je n'arrive pas à adapter de solution à mon cas.
Je souhaiterai dans une colonne de résultat supprimer les unités de mesures pour ne garder que les chiffres afin d'effectuer des calculs.
Je souhaite le faire par macro VBA car je voudrais, avec le même bouton, enchainé plusieurs action.
J'ai trouvé sur ce même forum un code de Fanfan38 qui me conviendrait mais j'ai besoin de votre aide pour l'adapter.
Merci
 

Pièces jointes

Re : Séparer chiffres et lettres par macro

Ouaahouuu, que dire.... à part que c'est nickel, pile poile...
Tu est le dieu d'excel.
Pour bien comprendre la modif, en fait c'est le point derrière seconde qui posait problème?
Pourrais tu également m'expliquer le "Or Mid(Range("d" & i).Value, j, 1)" que tu as ajouter.
Juste histoire de comprendre (et de progresser).
Un grand merci à toi Phlaurent55
 
Re : Séparer chiffres et lettres par macro

Re,

explications:

If IsNumeric(Mid(Range("d" & i).Value, j, 1)) Then
ne prends que les chiffres de 0 à 9

If IsNumeric(Mid(Range("d" & i).Value, j, 1)) Or Mid(Range("d" & i).Value, j, 1) = "." Then
cette instruction prends en compte les chiffres et le(s) point décimal

If Right(chiffre, 1) = "." Then chiffre = Mid(chiffre, 1, Len(chiffre) - 1
et en fin de procédure on élimine le point décimal si il se trouve en dernière position

à+
Philippe
 
Re : Séparer chiffres et lettres par macro

Bonjour 350dr, salut Philippe 🙂

Une solution qui utilise un tableau VBA et la fonction Val :

Code:
Sub SEPARE()
Dim r As Range, t, i&
Set r = Range("D1:D2" & [D65536].End(xlUp).Row) 'au moins 2 cellules
t = r 'tableau, plus rapide
For i = 2 To UBound(t)
  t(i, 1) = IIf(Val(r(i).Text), Val(r(i).Text), "")
Next
With [E1].Resize(UBound(t))
  .Value = t
  '.SpecialCells(xlCellTypeBlanks).Delete xlUp 'supprime les cellules vides
End With
End Sub
J'ai mis une ligne en commentaire si l'on veut supprimer les cellules vides.

Fichier joint.

A+
 

Pièces jointes

Re : Séparer chiffres et lettres par macro

Re,

Ceci doit être un peu plus rapide :

Code:
Sub SEPARE()
Dim r As Range, t(), i&
Set r = Range("D1:D2" & [D65536].End(xlUp).Row) 'au moins 2 cellules
ReDim t(1 To r.Count, 1 To 1) 'tableau, plus rapide
t(1, 1) = r(1)
For i = 2 To UBound(t)
  If Val(r(i).Text) Then t(i, 1) = Val(r(i).Text)
Next
With [E1].Resize(UBound(t))
  .Value = t
  '.SpecialCells(xlCellTypeBlanks).Delete xlUp 'supprime les cellules vides
End With
End Sub
Fichier (2).

Edit : ajouté t(1, 1) = r(1)

A+
 

Pièces jointes

Dernière édition:
Re : Séparer chiffres et lettres par macro

Re,

Je n'avais pas vu qu'il y a des valeurs nulles avec 0.00 xxx.

Les macros précédentes ne les affichent pas.

Alors utiliser :

Code:
Sub SEPARE()
Dim r As Range, t(), i&
Set r = Range("D1:D2" & [D65536].End(xlUp).Row) 'au moins 2 cellules
ReDim t(1 To r.Count, 1 To 1) 'tableau, plus rapide
t(1, 1) = r(1)
For i = 2 To UBound(t)
  If Trim(r(i)) Like "#*" Then t(i, 1) = Val(r(i).Text)
Next
With [E1].Resize(UBound(t))
  .Value = t
  '.SpecialCells(xlCellTypeBlanks).Delete xlUp 'supprime les cellules vides
End With
End Sub
Fichier (3).

A+
 

Pièces jointes

Re : Séparer chiffres et lettres par macro

PHLaurent je te remercie pour tes explications. Je comprends mais j'ai encore du taf pour m'en sortir tout seul.
Job75: et oui, 0,00 est une valeur comme les autres pour mon calcule de stat (moyenne, écart-type, coef de variation.)
Je n'ai pas encore eu le temps d'étudier ta solution mais je vais me pencher dessus prochainement.
Pour ce qui est de la suppression des lignes vides, j'ai trouvé la solution ici même en faisant un tri selon plusieurs critères (toujours avec une macro) ce qui me permet d'extraire les valeurs de la même unité et qui me supprime du coup les lignes vides.
Mais je garde ta proposition car elle pourra me resservir pour un autre programme.
Un grand merci à vous pour vos réponses.
Ce forum est une vraie mine d'or, merci à vous de prendre du temps pour aider les novices comme moi !!!
Cdlt
 
- 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

Réponses
40
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…