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

Suppression du caractère "/"

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

J

jujudeo

Guest
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
 
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
 
Re : Suppression du caractère "/"

bonjour thebenoit59,

ton code marche très bien, cependant est-il possible d'exclure le traitement sur les colonnes où il y a des dates et des pourcentages ?
 
Re : Suppression du caractère "/"

Oui tu peux, à toi de modifier la zone de recherche à ce moment.
Code:
 For Each Cell in Range("a:c,e:g")
Modifie les noms de colonnes sur lesquelles tu souhaites effectuer le remplacement.
 
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 !
 
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
 
Re : Suppression du caractère "/"

ça marche très bien sur les dates, il n'y a plus aucun problème mais par contre sa donne un résultat incohérent au niveau des pourcentages
 
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

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
 
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

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
 
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... 🙁
 
- 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

  • Question Question
Microsoft 365 Formule excel
Réponses
7
Affichages
304
  • Question Question
Microsoft 365 Combobox
Réponses
6
Affichages
262
  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
417
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…