Correction valeur cellule via un split ?

Bonjour actuellement je suis devant un probleme qui me paraissait simple et je bug dessus depuis plusieurs jours.

Actuellement je charges des données dans un userform, dont les utilisateur sélectionnent les lignes pour copie.

Je verifie alors avant la qualité des donnée sur l'ensemble de la plage et je fais corrigé celle qui non pas le bon format par les utilisateurs. soit + de 100 par jours, pas tres rentable pour une dizaine de ligne a copier

Premiere option :

Pouvoir corriger en colonne H les données qui on un / via un split ? en ne gardant que les valeurs situé avant. pour l'instant je force le format nombre et je corrige les . en , etc...

Sub FormatNbr()
Dim Dlg As Integer
Dim maFeuille As Worksheet
Dim cellule As Range
Dim messages()
Set maFeuille = Sheets("Prob Stat")
'colonne H
On Error Resume Next
    With Sheets("Prob Stat")
    Dlg = .Cells(Rows.Count, 2).End(xlUp).Row
    n = 0
    For Each cellule In maFeuille.Range("H9:H" & Dlg)

        .NumberFormat = "0.00"
        cellule = Replace(cellule, ".", ",") * 1

        If Not IsNumeric(cellule) = True Then
            ReDim Preserve messages(n)
            messages(n) = cellule.Row
            n = n + 1
        End If
    Next
    If n = 1 Then MsgBox "la valeur de la ligne : " & Join(messages, " - ") & " est à corriger"
    If n > 1 Then MsgBox "les valeurs des lignes : " & Join(messages, " - ") & " sont à corriger"
    End With
End Sub

Si on pouvait corriger les cellules avec un / se serait plus simple et plus besoin de mesage d'erreur

La deuxième option me semble encore plus compliqué est de vérifier que les valeurs selectionnées dans le userform et de ne corrigé que celle là !

je vous laisse un exemple de mon fichier, tout ce passe sur le bouton "selection de donnée"

Merci pour vos idées !

Bonjour,

à tester :

Sub normaliseH()
    Dim c As Range, datas, lig As Long
    Set c = Range("H12:H1000000").Find("/", , xlValues, xlPart)
    If Not c Is Nothing Then
        datas = c.Resize(Cells(Rows.Count, "H").End(xlUp).Row - c.Row + 1).Value
        For lig = 1 To UBound(datas)
            If datas(lig, 1) <> "" Then datas(lig, 1) = CDbl(Replace(Split(datas(lig, 1), "/")(0), ",", "."))
        Next lig
    End If
End Sub

Je commence les modifs au 1er "/" rencontré, et toute la plage qui suit est traitée d'un bloc. Ca devrait être très rapide.
eric

1 semaine que je cherches la solution et je tombe dessus directement en cherchant autre chose sur le forum !

Sub FormatNbr()
Dim Dlg As Integer
Dim maFeuille As Worksheet
Dim cellule As Range
Dim messages()
Dim Valeur As String
Dim Position As Long
Dim Texte As String
Set maFeuille = Sheets("Prob Stat")
'colonne H
On Error Resume Next
    With Sheets("Prob Stat")
    Dlg = .Cells(Rows.Count, 2).End(xlUp).Row
    n = 0
    For Each cellule In maFeuille.Range("G9:H" & Dlg)
    Valeur = "/"
    Position = InStr(cellule, Valeur)
        If Position > 0 Then
           Texte = Mid(cellule, 1, Position - 1)
           cellule = Texte
        End If
        .NumberFormat = "0.00"
        cellule = Replace(cellule, ".", ",") * 1
    Next

    End With
End Sub

Désolé du derangement !

Merci eriiic !!

Bien sur avec du find c'est encore plus rapide ! que de faire cellule par cellule, je suis un boulet parfois !!

Je test ca tout de suite !

Merci

If datas(lig, 1) <> "" Then datas(lig, 1) = CDbl(Replace(Split(datas(lig, 1), "/")(0), ",", "."))

J'ai une incompatibilité de type :s ici

en fait la valeur n'est pas remplacée j'ai l'impression, c'est étrange,

que j'aimerais savoir faire du code aussi synthétique, ca me deprime

Bonjour,

J'ai une incompatibilité de type :s ici

il faudrait un fichier avec la donnée produisant cette erreur
eric

Rechercher des sujets similaires à "correction valeur via split"