Microsoft 365 vba convertir nombre au format texte pour calcul et mise en fome conditionnelle

Piaf79

XLDnaute Junior
Bonsoir à tous,
Je récupère dans un fichier Excel des données de l x h au format texte comme cf. colonne D de l'exemple joint.
Je souhaite diviser le chiffre de gauche par le chiffre de droite et mettre en rouge les cellules de la colonne D dont le résultat serait différent de 0,80
J'ai essayé via des formules comme STXT puis CNUM mais je n'arrive pas au résultat escompté...
Quelqu'un aurait il une idée ?
Piaf79
 

Pièces jointes

  • Exemple.xlsx
    9.5 KB · Affichages: 18

Staple1600

XLDnaute Barbatruc
Re

Bon bah, modifié pour avoir les mêmes couleurs qu'avec la macro de gbinforme ;)
VB:
Sub test_OK_Quattro()
Dim c As Range, tmp$, f As Worksheet:       Set f = ActiveSheet
Application.ScreenUpdating = False
For Each c In Range(f.[D2], f.Cells(Rows.Count, "D").End(3))
If Not c.HasFormula Then
tmp = NETTOYER_B(c.Text)
c.Offset(, 1) = Round((Split(tmp, "x")(0) * 1) / (Split(tmp, "x")(1) * 1), 2)
c.Offset(, 1).NumberFormat = "#,##0.00"
Select Case Round(c.Offset(, 1).Value, 2)
Case Is <> 0.8
c.Offset(, 1).Font.Color = vbRed
End Select
End If
Next
End Sub
Private Function NETTOYER_B(txt As String) As String
Dim i%
For i = 1 To Len(txt)
If AscW(Mid(txt, i, 1)) < 127 Then NETTOYER_B = NETTOYER_B & Mid(txt, i, 1)
Next i
End Function
 

Staple1600

XLDnaute Barbatruc
Re

Et la version sans colonne intermédiaire
VB:
Sub test_OK_Cinquo()
Dim c As Range, tmp$, check, f As Worksheet:       Set f = ActiveSheet
Application.ScreenUpdating = False
For Each c In Range(f.[D2], f.Cells(Rows.Count, "D").End(3))
If Not c.HasFormula Then
tmp = NETTOYER_B(c.Text)
check = Round((Split(tmp, "x")(0) * 1) / (Split(tmp, "x")(1) * 1), 2)
Select Case check
Case Is <> 0.8
c.Font.Color = vbRed
End Select
End If
Next
End Sub

Private Function NETTOYER_B(txt As String) As String
Dim i%
For i = 1 To Len(txt)
If AscW(Mid(txt, i, 1)) < 127 Then NETTOYER_B = NETTOYER_B & Mid(txt, i, 1)
Next i
End Function
 

Discussions similaires

Statistiques des forums

Discussions
312 069
Messages
2 085 040
Membres
102 763
dernier inscrit
NICO26