Suppression du caractère "/"

jujudeo

XLDnaute Nouveau
bonjour à tous,

j'ai cherché ce week-end sur le forum mais je n'ai pas trouvé comment supprimer un caractère précis, pour ma part le "/" dans toute ma feuille en vba dans une macro.

Auriez-vous une idée ?

Cordialement

Julien
 

thebenoit59

XLDnaute Accro
Re : Suppression du caractère "/"

Bonjour Jujudeo.
Une idée :
Code:
Sub Supprimer()
    For Each Cell In Range(Cells(1, 1), Cells(Cells.Find("*", , , , xlByRows, xlPrevious).Row, Cells.Find("*", , , , xlByColumns, xlPrevious).Column))
        Cell.Value = Replace(Cell.Value, "/", "")
    Next Cell
End Sub
 

jujudeo

XLDnaute Nouveau
Re : Suppression du caractère "/"

je suis désolé je vais être embêtant, mais mon chef veut pas toucher à la macro , il ne veut pas rentrer les colonnes lui même, il veut que cela se fasse tout seul, mais je ne sais pas si c'est possible !
 

thebenoit59

XLDnaute Accro
Re : Suppression du caractère "/"

Alors essaye avec ce code :
Code:
Sub Supprimer()
    For Each Cell In Range(Cells(1, 1), Cells(Cells.Find("*", , , , xlByRows, xlPrevious).Row, Cells.Find("*", , , , xlByColumns, xlPrevious).Column))
        If Not IsDate(Cell.Value) And Right(Cell.NumberFormat, 1) <> "%" Then Cell.Value = Replace(Cell.Value, "/", "")
    Next Cell
End Sub
 

jujudeo

XLDnaute Nouveau
Re : Suppression du caractère "/"

Code:
Sub Traitement()

Dim td As Worksheet
Dim myDate As Date
Dim derligne As Long
Dim x As Range 'cellule affichant le coefficient multiplicateur 100
Dim taille As Range '1ère ligne contenant le symbole % dans les en-tête
Dim colonne As Integer 'n° de la colonne à modifier
Dim lignefin As Integer 'n° de la dernière ligne

On Error Resume Next 'si la feuille n'existe pas !
Application.DisplayAlerts = False: Sheets("traitement date").Delete: Application.DisplayAlerts = True
On Error GoTo 0 'plus de gestionnaire d'erreurs
Worksheets("PO - PB").Copy After:=Worksheets("base donnee") 'création de la feuille
ActiveSheet.Name = "traitement date" 'nom de la feuille'
Sheets("base donnee").Range("A1:DX1").Copy Sheets("traitement date").Range("A1:DX1")
ActiveSheet.AutoFilterMode = False 'desactiver les filtres'
ActiveWindow.FreezePanes = False 'désactiver les volets'
ligne = Range("A" & Rows.Count).End(xlUp).Row
colomne = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
With Sheets("traitement date")


        
        Set taille = .Range("A2:P19")
        For Each cell In taille
            'detecter date et la mettre en texte + bon format
            If IsDate(cell) Then
            cell.EntireColumn.Rows("2:19").Select
            Selection.NumberFormat = "@"
            Selection.NumberFormat = "yyyy-mm-dd"
            
            End If
                
            If InStr(1, cell.Text, "€") > 0 Then
            cell.EntireColumn.Rows("2:19").Select
            Selection.NumberFormat = "0.00"  'pour 2 décimales
            End If

            Next
            
            End With
            
               
            
       Set x = Range("A" & ligne + 10)
         x.Value = 100
      With Sheets("traitement date")
        Set taille = .Range("A2:P19")
     For Each cell In taille
           If InStr(1, cell.Text, "%") > 0 Then
             colonne = cell.Column
             lignefin = cell.End(xlDown).Row
             x.Copy
             Range(Cells(1, colonne), Cells(lignefin, colonne)).PasteSpecial _
             Paste:=xlPasteValues, Operation:=xlMultiply, SkipBlanks:=True
                 For i = 2 To lignefin
                 If CStr(Cells(i, colonne)) = "Erreur 2015" Then Cells(i, colonne) = ""
                 Next i
             Selection.NumberFormat = "0.00"
             Selection.Copy
            'Selection.Offset(0, 0).Select
            'Selection.EntireColumn.Insert
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
            'Selection.Offset(0, 0).Delete
           End If
           Next
    End With
    'on efface la valeur 100 en bas du tableau (utilisée pour le collage spécial)
    Range("A" & ligne + 10).Clear

    For Each cell In Range("A2:P19")
    If Not IsDate(cell.Value) And Right(cell.NumberFormat, 1) Then cell.Value = Replace(cell.Value, "/", "")
    Next cell
End Sub

Voici mon code et un extrait de mon tableau excel
 

Pièces jointes

  • suivi.xlsx
    19.7 KB · Affichages: 19
  • suivi.xlsx
    19.7 KB · Affichages: 19

thebenoit59

XLDnaute Accro
Re : Suppression du caractère "/"

A ce que je vois tu souhaites juste supprimer les cellules ne contenant que "/".
Si c'est le cas utilise plutôt :
Code:
Sub Supprimer()
For Each Cell In Range(Cells(1, 1), Cells(Cells.Find("*", , , , xlByRows, xlPrevious).Row, Cells.Find("*", , , , xlByColumns, xlPrevious).Column))
    If Cell.Value = "/" Then Cell.ClearContents
Next Cell
End Sub
 

jujudeo

XLDnaute Nouveau
Re : Suppression du caractère "/"

j'ai adapté votre code a mon cas et il marche très bien, je vous en remercie . Mais (je vais pas m'en sortir c'est pas possible ^^) il y a quelques cellules qui contiennent dans leur formule : -#REF! et du coup sa me fait beuguer l'analise; je ne peux pas aller plus loin... j'ai essayé de procéder avec la même technique que pour les slashs mais cela ne marche pas... voici la macro que j'ai testé (c'est tout en bas) :

Code:
Sub Traitement()

Dim td As Worksheet
Dim myDate As Date
Dim derligne As Long
Dim x As Range 'cellule affichant le coefficient multiplicateur 100
Dim taille As Range '1ère ligne contenant le symbole % dans les en-tête
Dim colonne As Integer 'n° de la colonne à modifier
Dim lignefin As Integer 'n° de la dernière ligne

On Error Resume Next 'si la feuille n'existe pas !
Application.DisplayAlerts = False: Sheets("traitement date").Delete: Application.DisplayAlerts = True
On Error GoTo 0 'plus de gestionnaire d'erreurs
Worksheets("PO - PB").Copy After:=Worksheets("base donnee") 'création de la feuille
ActiveSheet.Name = "traitement date" 'nom de la feuille'
Sheets("base donnee").Range("A1:DX1").Copy Sheets("traitement date").Range("A1:DX1")
ActiveSheet.AutoFilterMode = False 'desactiver les filtres'
ActiveWindow.FreezePanes = False 'désactiver les volets'
ligne = Range("A" & Rows.Count).End(xlUp).Row
colomne = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
With Sheets("traitement date")

   
        Set taille = .Range("A2:DX100")
        For Each cell In taille
            'detecter date et la mettre en texte + bon format
            If IsDate(cell) Then
            cell.EntireColumn.Rows("2:761").Select
            Selection.NumberFormat = "@"
            
            
            Selection.NumberFormat = "yyyy-mm-dd"
            End If
                
            If InStr(1, cell.Text, "€") > 0 Then
            cell.EntireColumn.Rows("2:761").Select
            Selection.NumberFormat = "0.00"  'pour 2 décimales
            End If

            Next
            
            End With
            
               
            
       Set x = Range("A" & ligne + 10)
         x.Value = 100
      With Sheets("traitement date")
        Set taille = .Range("A2:DX100")
     For Each cell In taille
           If InStr(1, cell.Text, "%") > 0 Then
             colonne = cell.Column
             lignefin = cell.End(xlDown).Row
             x.Copy
             Range(Cells(1, colonne), Cells(lignefin, colonne)).PasteSpecial _
             Paste:=xlPasteValues, Operation:=xlMultiply, SkipBlanks:=True
                 For i = 2 To lignefin
                 If CStr(Cells(i, colonne)) = "Erreur 2015" Then Cells(i, colonne) = ""
                 Next i
             Selection.NumberFormat = "0.00"
             Selection.Copy
            'Selection.Offset(0, 0).Select
            'Selection.EntireColumn.Insert
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
            'Selection.Offset(0, 0).Delete
           End If
           Next
    End With
    'on efface la valeur 100 en bas du tableau (utilisée pour le collage spécial)
    Range("A" & ligne + 10).Clear
    
 For Each cell In Range("A2:DX761")
 If cell.Value = "#REF!" Then
 cell.ClearContents
 End If
 
 
 If cell.Value = "/" Then
 cell.ClearContents
 End If

 Next
    
End Sub

J'ai également inséré le fichier avec 2 cellules comportant le problème :/ je vous remercie déjà pour votre aide !!! ;)
 

Pièces jointes

  • suivi.xlsx
    19.7 KB · Affichages: 23
  • suivi.xlsx
    19.7 KB · Affichages: 21

thebenoit59

XLDnaute Accro
Re : Suppression du caractère "/"

En essayant ainsi :
Code:
 On Error Resume Next
 Cells.SpecialCells(xlCellTypeFormulas, 16).ClearContents
 Cells.SpecialCells(xlCellTypeConstants, 16).ClearContents
 
 For Each Cell In Range("A2:DX761")
 If Left(Cell.Value, 1) = "/" Then Cell.ClearContents
 Next
 

jujudeo

XLDnaute Nouveau
Re : Suppression du caractère "/"

ActiveSheet.UsedRange.Replace What:="/", Replacement:="", LookAt:=xlWhole

j'ai trouvée cette formule qui marche très bien je la conseille vivement sa evite une boucle cependant, je viens d'identifier encore un autre problème mais qui n'a rien a voir avec ce sujet... :(
 

Discussions similaires

Statistiques des forums

Discussions
312 496
Messages
2 088 979
Membres
103 996
dernier inscrit
KB4175