Supprimer et remplacer Excel VBA

Bonjour,

Je souhaite, remplacer les erreurs de saisie d'heures "H "ou" / "par" :".

Par exemple, si l’heure est de cette format 10H30 le résultat que je souhaite est le suivant 10:00 et pareil pour 10/30.

J'ai utilisé le code ci-dessous, il me remplace les "H" par des points ":" par contre le message d'erreurs en PJ s'affiche et je peux plus utiliser excel qu'en cliquant sur fin de taches et là je perd tout le code que j'ai fait.

Je sais pas également comment rajouter la condition sur "/"

Aidez moi SVPP, Merci d'avance.

CODE /

Public Sub Remp1()

Set sh3 = Sheets("FEUILLE3")

For i = 2 To Cells(Rows.Count, "T").End(xlUp).Row

sh3.Range("T" & i).Replace What:="H", Replacement:=":"

Next i

For j = 2 To Cells(Rows.Count, "T").End(xlUp).Row

sh3.Range("U" & j).Replace What:="H", Replacement:=":"

Next j

End Sub

erreur macro

Bonjour,

A tester :

Sub Remp1()

Dim i As Long

Application.DisplayAlerts = False
With Sheets("FEUILLE3")
    For i = 2 To .Range("T" & Rows.Count).End(xlUp).Row
        .Range("T" & i).Replace What:="H", Replacement:=":"
        .Range("T" & i).Replace What:="/", Replacement:=":"
        .Range("U" & i).Replace What:="H", Replacement:=":"
        .Range("U" & i).Replace What:="/", Replacement:=":"
    Next i
End With
Application.DisplayAlerts = True

End Sub

Bonjour,

Une autre proposition.

Cdlt.

Public Sub ReplaceCharacters()
Dim lastRow As Long, rng As Range
    With Worksheets("FEUILLE3")
        lastRow = .Cells(.Rows.Count, 20).End(xlUp).Row
        Set rng = .Cells(2, 20).Resize(lastRow - 1, 2)
        With rng.Cells
            .Replace "H", ":"
            .Replace "/", ":"
        End With
    End With
End Sub

Bonjour Pedro22,

En fait ton code me change tout les "H" et "/" de la feuille et non pas seulement des colonnes T et U dont j'ai besoin.

Bonjour Pedro22,

En fait ton code me change tout les "H" et "/" de la feuille et non pas seulement des colonnes T et U dont j'ai besoin.

Bonjour,

Nouvelle proposition :

Sub Remp1()

Application.DisplayAlerts = False
Sheets("FEUILLE3").Range("T:U").Replace What:="H", Replacement:=":"
Sheets("FEUILLE3").Range("T:U").Replace What:="/", Replacement:=":"
Application.DisplayAlerts = True

End Sub

Bonjour Jean-Eric,

Ton code fonctionne trop bien, il me remplace bien les h et / des colonnes U et T. Par contre, vu que j'ai des cases vides dans la colonne T, le code ne me modifie pas celles de juste à coté de la colonne H.

Merci d'avance.

Bonjour,

La procédure se base sur le nombre de lignes de la colonne T.

Si la colonne U comporte plus de lignes, tu peux donc avoir un souci !...

Cdlt.

Bonjour Pedro22,

En fait ton code me change tout les "H" et "/" de la feuille et non pas seulement des colonnes T et U dont j'ai besoin.

Bonjour,

Nouvelle proposition :

[code]Sub Remp1()

Application.DisplayAlerts = False
Sheets("FEUILLE3").Range("T:U").Replace What:="H", Replacement:=":"
Sheets("FEUILLE3").Range("T:U").Replace What:="/", Replacement:=":"
Application.DisplayAlerts = True

End Sub

Rebonjour Pedro22,

Ton code marche bien, mais j'ai un petit soucis stp , je veux normalement qu'en cliquant sur un seul bouton que j'ai mis sur la feuille excel, des données s'importent (ma 1ere fonction) et également le changement se fait. alors en mettant le code dans le même bouton j'arrive pas à faire fonctionner les deux fonctions au même temps, Etant donné que séparément chacune fonctionne bien. Est ce j'ai bien mis le code dans le bon endroit, que doit je faire sinon? merci bien.

Rebonjour Pedro22,

Ton code marche bien, mais j'ai un petit soucis stp , je veux normalement qu'en cliquant sur un seul bouton que j'ai mis sur la feuille excel, des données s'importent (ma 1ere fonction) et également le changement se fait. alors en mettant le code dans le même bouton j'arrive pas à faire fonctionner les deux fonctions au même temps, Etant donné que séparément chacune fonctionne bien. Est ce j'ai bien mis le code dans le bon endroit, que doit je faire sinon? merci bien.

Pour pouvoir te répondre, il faudrait déjà que je sache de quoi tu parles, mais je n'ai ni ton fichier, ni ton code (ni dans quel module tu l'as placé...)...

Bonjour,

La procédure se base sur le nombre de lignes de la colonne T.

Si la colonne U comporte plus de lignes, tu peux donc avoir un souci !...

Cdlt.

Effectivement, c'est bien ça et le problème c'est que c'est pas toujours la règle des fois c'es la colonne T qui contient plus de ligne que U et d autres c'est l'inverse. Dans mon cas c'est ma colonne A qui est toujours remplie dans je dois apparemment faire la condition par rapport à cette colonne.

Merci bien.

Pour pouvoir te répondre, il faudrait déjà que je sache de quoi tu parles, mais je n'ai ni ton fichier, ni ton code (ni dans quel module tu l'as placé...)...

[/quote]

C'est bon, j'ai trouvé l'erreur que j'ai commise, en fait il fallait juste mettre tout le code dans la partie commande bouton, merci bien Pedro.

Re,

Essaie ainsi :

Public Sub ReplaceCharacters()
Dim lastRow As Long, rng As Range
    With Worksheets("FEUILLE3")
        lastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row
        Set rng = .Cells(2, 20).Resize(lastRow - 1, 2)
        With rng.Cells
            .Replace "H", ":"
            .Replace "/", ":"
        End With
    End With
End Sub
Rechercher des sujets similaires à "supprimer remplacer vba"