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
 

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 x = Range("A" & ligne + 10)
          x.Value = 100
          
         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"
                           
            ElseIf InStr(1, cell.Text, "€") > 0 Then
             cell.EntireColumn.Rows("2:761").Select
             Selection.NumberFormat = "0.00"  'pour 2 décimales

            ElseIf 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.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
            End If
           Next
    End With
    
 ActiveSheet.UsedRange.Replace What:="/", Replacement:="", LookAt:=xlWhole
    
End Sub

C'est sur la partie de code % qui me permet de passer d'un format de cellule pourcentage à numéro tout en gardant les chiffres sur la forme de 0.00

Dans l'exemple du fichier qui suit, la colonne T en violette de pourcentage s'exécute parfaitement bien alors que la colonne AE en orange décorne complètement, le pourcentage se modifie tout seul... vous pouvez voir la difference avec la feuille d'origine qui est la première feuille.
 

Pièces jointes

  • Suivi 2.xlsx
    215 KB · Affichages: 25
  • Suivi 2.xlsx
    215 KB · Affichages: 20

thebenoit59

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

C'est normal que tu obtiennent des différences de résultats. En modifiant les valeurs tu modifies les calculs également.
Désactive le calcul automatique et réactive le à la fin de la procédure et ça ira mieux:
Code:
Sub Traitement()

'Désactive le recalcul automatique
Application.Calculation = xlCalculationManual

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 x = Range("A" & ligne + 10)
          x.Value = 100
          
         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"
                           
            ElseIf InStr(1, cell.Text, "€") > 0 Then
             cell.EntireColumn.Rows("2:761").Select
             Selection.NumberFormat = "0.00"  'pour 2 décimales

            ElseIf 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.Style = "Comma"
              Selection.Copy
             Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
            End If
           Next
    End With
    
 ActiveSheet.UsedRange.Replace What:="/", Replacement:="", LookAt:=xlWhole

'Active le recalcul automatique
Application.Calculation = xlCalculationAutomatic

End Sub
 

jujudeo

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

ah oui exact ! le soucis c'est que si je le désactive, j'ai mes pourcentages en valeur décimale : 0.05 et non en nombre entier -> 5 :/
mon but pour cette boucle était d'avoir un format numéro sans le % genre 5 ou 7.5
 

jujudeo

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

d'accord, beh déjà je te remercie beaucoup pour tous les conseils que tu m'as apporté car j'ai pas mal avancé sur ma macro avec toi !!! juste sais tu s'il est possible d'écrire un range général c'est a dire qu'il traite de facon optimiser ma feuille sans que ce soit moi qui rentre les "bornes" manuellement ?
 

thebenoit59

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

Je te l'avais proposé dans la toute première réponse. Cells.Find("*") ... Ca détermine la dernière ligne et dernière colonne.
Pour la première cellule remplace le Cells(1,1) par le numéro de ligne que tu souhaites et le numéro de colonne.
 

jujudeo

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

Je voulais te le dire, pour cette histoire du post #20, j'ai mis ce bout de code au début, ce qui m'a permis de ne plus avoir de formule...

Code:
If cell.HasFormula = True Then
              cell.EntireColumn.Rows("2:775").Select
              selection.Copy
              selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone

je peux donc avoir en meme temps mes calculs qui ne se changent pas et ma valeur en entier :) bon a savoir !!!
 

Discussions similaires

Statistiques des forums

Discussions
312 499
Messages
2 089 000
Membres
104 002
dernier inscrit
SkrauzTTV