IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Suppression d'une partie d'une chaine de caractere


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 326
    Par défaut Suppression d'une partie d'une chaine de caractere
    Bonjour , je souhaiterai supprimer modifier une cellule

    j'ai une liste de cellules que je souhaite modifier
    les cellules peuvent avoir des formats différents
    exemple :
    colonne A
    robert.tel
    client_test2_20150724_073425.tel
    client_durant_20150724_083425.tel
    Fournisseur_dupont_20150724_083425.tel

    je souhaiterai supprimer les heures
    pour avoir en colonne B
    robert.tel
    client_test2_20150724.tel
    client_durant_20150724.tel
    Fournisseur_dupont_20150724.tel

    j'ai fait cette macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For c = 2 To i + 1
     lib1 = Cells(c + 1, 7)
     If Right(lib1, 3) = "tel" Then Cells(c + 1, 8) = Left(lib1, Len(lib1) - 11) & ".tel" Else Cells(c + 1, 8) = lib1
     Next
    mon souci vient du fait que si on relance la macro il supprimera encore et encore

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour laurent27530,

    Apres avoir mis client_test2_20150724_073425.tel en [A1], je te laisse tester le code ci-dessous et l'adapter à ton cas bien sûr.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
        Dim s1$, s2$, t() As String, n&
            s1 = [A1]
            t = Split(s1, "_"):        n = UBound(t)
            t(n) = Split(t(n), ".")(1)
            s2 = concat(t)
            MsgBox s1 & " -> " & s2
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function concat(t() As String) As String
        Dim n&, i&
            n = UBound(t)
            concat = t(0)
            For i = 1 To n - 1
                concat = concat & "_" & t(i)
            Next i
            concat = concat & "." & t(n)
    End Function

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 326
    Par défaut
    cela fonction quand nous avons une heure c'est parfait
    En revanche dans les cas de :
    robert.tel == > tel.tel
    travail_2.tel == > travail.tel

    dans les 2 cas ci-dessus je voudrais ne pas modifie le nom vu qu'il y a pas d'heure

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Public Function SuprimereDate(V As String) As String
    Dim T() As String, T2 As String
    T = Split(V & "_", "_")
    Dim I As Integer
    For I = 0 To UBound(T) - 1
     If IsNumeric(T(I)) = False Then
     If InStr(1, T(I), ".") <> 0 Then
        T2 = Split(T(I), ".")(0)
        If Len(T2) = 8 Then
                If SuprimereDate = "" Then SuprimereDate = Replace(T(I), T2, "") Else SuprimereDate = SuprimereDate & "_" & Replace(T(I), T2, "")
            Else
                 If SuprimereDate = "" Then SuprimereDate = T(I) Else SuprimereDate = SuprimereDate & "_" & T(I)
            End If
     End If
     
        If SuprimereDate = "" Then SuprimereDate = T(I) Else SuprimereDate = SuprimereDate & "_" & T(I)
     Else
        If Len(T(I)) <> 8 Then If SuprimereDate = "" Then SuprimereDate = T(I) Else SuprimereDate = SuprimereDate & "_" & T(I)
     End If
    Next
    End Function

  5. #5
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Oups autant pour moi j'avais mal compris :s

    Pour me rattraper, voila une solution sans VB :
    En colonne B :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GAUCHE(A3;CHERCHE("_??????.";A3)-1)&DROITE(A3;NBCAR(A3)-CHERCHE("_??????.";A3)-6)
    EDIT : Cette solution suppose que l'heure est sur 6 caractères et qu'elle est entouré d'un '_' et d'un '.'

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour !

    Laurent, tu peux lancer autant de fois à la suite ma p'tite démonstration !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub Demo()
        Dim SP$(), SU$()
     
        With Feuil1.Cells(1).CurrentRegion.Columns(1)
            VA = .Value
     
            For R& = 1 To UBound(VA)
                           SP = Split(VA(R, 1), ".")
                           SU = Split(SP(0), "_")
                If UBound(SU) = 3 Then
                    ReDim Preserve SU(2)
                        SP(0) = Join(SU, "_")
                     VA(R, 1) = Join(SP, ".")
                End If
            Next
     
            With .Offset(, 1):  .Value = VA:  .AutoFit:  End With
        End With
    End Sub
    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2013, 15h57
  2. [RegEx] Retourner une array sur une partie de la chaine
    Par absurdsystem dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2010, 16h03
  3. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  4. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39
  5. comparaison d une partie de la chaine de caractere
    Par sneb5757 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/12/2005, 15h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo