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

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    319
    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 : 319
    Points : 158
    Points
    158
    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 émérite 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 : 32
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    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
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    319
    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 : 319
    Points : 158
    Points
    158
    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 émérite 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 : 32
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    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 '.'
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  6. #6
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    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
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

+ 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