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

Microsoft 365 supprimer espace

Chasse

XLDnaute Occasionnel
Bonjour le forum
Dans la colonne B les données telles que je les récupère: format 1'08''23 (+0''10)
le 9iem car est un espace que dans un 1er temps j'aimerais supprimer ainsi que les suivant ne garder que les 8 car du début format: 1'08''13
avec ce code

VB:
Sub cal6()
fin = Cells(Rows.Count, 2).End(xlUp).Row

For n = 2 To fin
    sup = Split(Cells(n, 2), "(")
        If UBound(sup) > 0 Then
        Cells(n, 2) = Trim(sup(0))
    End If
     
            t = Split(Cells(n, 2), "''")
                If UBound(t) > 0 Then
                Cells(n, 3) = (Replace(t(1), "''", ""))
            End If
                t = Split(Cells(n, 2), "''")
                    If UBound(t) > 0 Then
                    Cells(n, 2) = Trim(t(0))
                    Cells(n, 2) = "00:" & (Replace(Cells(n, 2), "'", ":"))
                    End If
Next
End Sub
j'ai pu supprimer les car qui suive mais l'espace reste toujours
la suite du code sépare les centièmes dans la colonne C "l'espace est toujours là" et met le reste de la chaine au format MM:SS
Comment supprimer cet espace qui me prend la tête
Merci de votre aide
 

Pièces jointes

  • Supp espace.xlsm
    20.1 KB · Affichages: 45
Solution
Mais je n'est aucun résultat
Vous avez dû mal tester.

Mais bon, c'est mieux avec le classement en colonne A, voyez le fichier joint :
VB:
Sub Conversion()
Dim tablo, i&, x$, s, ub%
With Sheets("Données brut").[A1].CurrentRegion.Columns(2).Resize(, 2)
    tablo = .Value
    For i = 2 To UBound(tablo)
        x = tablo(i, 1)
        s = Split(x, "''")
        If UBound(s) > 0 Then
            tablo(i, 2) = Val(s(1))
            x = s(0)
            s = Split(x, "'")
            ub = UBound(s)
            If ub = 0 Then tablo(i, 1) = Val(s(0)) / 86400
            If ub > 0 Then tablo(i, 1) = Val(s(0)) / 1440 + Val(s(1)) / 86400
        End If
    Next
    '---restitution et classement---
    Application.ScreenUpdating = False...

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Pour ne garder que les caractère avant " (" :
VB:
Sub cal6()

    fin = Cells(Rows.Count, 2).End(xlUp).Row
   For n = 2 To fin
        sup = InStr(Cells(n, 2), "(")
        If sup > 0 Then Cells(n, 2) = Left(Cells(n, 2), sup - 1)
    Next

End Sub

P.S. c'est mieux avec des déclarations de variables.

cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Alors je m'arrêterai là puisque le forum proscrit le pompage de site sans autorisation particulière.

Extrait des CGU de l'équipe :

Vous pouvez utliser leur Flux RSS.

Cordialement
 

Chasse

XLDnaute Occasionnel
re Bonjour

OK j'en prends note
je continuerai à transcrire ligne après ligne
cela me prend plus de temps, mais comme je suis retraité et auto confiner
j'ai du temps
Merci et bon après-midi
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Chasse, Roblochon, le forum

vite fait !

Cordialement, @+
VB:
Sub Test_cal6_2()
    Dim Tableau_en_Cours, Range_en_Cours, Compteur As Long
    Set Range_en_Cours = Range("B2:D" & Cells(Rows.Count, 2).End(xlUp).Row)
    Tableau_en_Cours = Range_en_Cours.Value
    For Compteur = LBound(Tableau_en_Cours, 1) To UBound(Tableau_en_Cours, 1)
        Tableau_en_Cours(Compteur, 3) = "00:" & Left(Tableau_en_Cours(Compteur, 1), InStr(1, Tableau_en_Cours(Compteur, 1), "'") - 1) & ":" & Mid(Tableau_en_Cours(Compteur, 1), InStr(1, Tableau_en_Cours(Compteur, 1), "'") + 1, InStr(1, Tableau_en_Cours(Compteur, 1), "''") - (InStr(1, Tableau_en_Cours(Compteur, 1), "'") + 1))
        Tableau_en_Cours(Compteur, 2) = Mid(Tableau_en_Cours(Compteur, 1), InStr(1, Tableau_en_Cours(Compteur, 1), "''") + 2, 2)
        Tableau_en_Cours(Compteur, 1) = Tableau_en_Cours(Compteur, 3): Tableau_en_Cours(Compteur, 3) = ""
    Next Compteur
    Range_en_Cours.Value = Tableau_en_Cours
 End Sub
 

Pièces jointes

  • Test Chasse.xlsm
    17.3 KB · Affichages: 5

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
un peu moins vite fait !
VB:
Sub Test_cal6_2()
    Dim Tableau_en_Cours, Range_en_Cours As Range, Compteur&, Val_en_Cours$ 'définition des variables
    Set Range_en_Cours = Range("B2:C" & Cells(Rows.Count, 2).End(xlUp).Row) 'référencement du tableau final des cellules sur deux colonnes
    Tableau_en_Cours = Range_en_Cours.Value 'création du tableau Vb en mémoire
    For Compteur = LBound(Tableau_en_Cours, 1) To UBound(Tableau_en_Cours, 1) 'boucle sur toutes les lignes du tableau
        Val_en_Cours = Trim(Tableau_en_Cours(Compteur, 1)) 'la colonne 1 de chaque ligne est copiée dans val en cours, correspond à la valeur en colonne B
        Tableau_en_Cours(Compteur, 1) = "00:" & Left(Val_en_Cours, InStr(1, Val_en_Cours, "'") - 1) & ":" & _
            Mid(Val_en_Cours, InStr(1, Val_en_Cours, "'") + 1, InStr(1, Val_en_Cours, "''") - (InStr(1, Val_en_Cours, "'") + 1)) 'extraction des données minutes et secondes en recherchant les caractères de séparation ' et écrasement des données en colonne 1
        Tableau_en_Cours(Compteur, 2) = Mid(Val_en_Cours, InStr(1, Val_en_Cours, "''") + 2, 2) 'extraction des centièmes en 2e colonne du tableau
    Next Compteur
    Range_en_Cours.Value = Tableau_en_Cours 'on écrase les valeurs des cellules avec les valeurs du tableau
End Sub
 
Dernière édition:

Chasse

XLDnaute Occasionnel
Bonsoir Le forum et Yeahou

Je ne s’est pas si vous suivez toujours ce fil, si oui temp mieux

La macro que vous m'avez fournie est top, mais seulement avec ce format « 1'00''62 (+12''14) »

Quand la cellule est avec celui-ci « 59''71 (+0''52) » elle bug

Plus j’essayer d’adapter la macro plus le constat de mon ignorance en VBA me donne des complexes. Merci de m’aider encore une fois.

PS Merci Yeahou pour tes explications
 

Pièces jointes

  • Tri3.xlsm
    17.2 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonjour Chasse, Roblochon, Yeahou,
Quand la cellule est avec celui-ci « 59''71 (+0''52) » elle bug
Pas de problème avec cette macro :
VB:
Sub MMSS()
Dim tablo, i&, x$, s, ub%
With Sheets("Données brut").[A1].CurrentRegion.Columns(2).Resize(, 2) 'colonnes B et C
    tablo = .Value
    For i = 2 To UBound(tablo)
        x = tablo(i, 1)
        s = Split(x, "''")
        If UBound(s) > 0 Then
            tablo(i, 2) = Val(s(1))
            x = s(0)
            s = Split(x, "'")
            ub = UBound(s)
            If ub = 0 Then tablo(i, 1) = Val(s(0)) / 86400
            If ub > 0 Then tablo(i, 1) = Val(s(0)) / 1440 + Val(s(1)) / 86400
        End If
    Next
    '---restitution---
    .Columns(1).NumberFormat = "mm:ss"
    .Columns(2).NumberFormat = "00"
    .Value = tablo
End With
End Sub
A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…