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 :

Supprimer le 8eme et 17eme caractère d'un string


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 39
    Par défaut Supprimer le 8eme et 17eme caractère d'un string
    Bonjour le Forum,

    Tout d'abord merci pour l'aide que vous m'avez apporté à chaque fois que je vous ai sollicités !
    Etant débutant en VBA, je fais un peu de bricolage en adaptant des bouts de codes.
    Voici ma requête :

    J'ai une colonne contenant plusieurs chaines de caractères. Je voudrais parcourir cette colonne et retirer systématiquement le 8eme et 17eme caractère.
    Une idée ?

    J'ai essayé de bidouiller ce bout de code trouvé sur le forum mais sans succès..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub test()
     
    ncar = Len(Range("A4"))
    vcel = Range("A4").Value
     
    vcel1 = Left(vcel, 7)
    vcel2 = Mid(vcel, 9, ncar)
    vcel3 = Left(vcel, 17)
    vcel2 = Mid(vcel, 19, ncar)
     
    Range("A4").Value = vcel1 & vcel2 & vcel3 & vcel4
     
    End Sub

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    moi je le ferai dans l'autre sens

    c-a-d que je commence par supprimer le 17 ème puis le 8 ème

    de plus Mid ecrit comme cela : Mid(MyString, 6) sans longueur de spécifié te ramène tout le restant de la chaine après 6 (cf touche [F1] de l'aide en ligne )

    je verai qu'une serie de Mid

    1) mid de 1 à 16 & mid de 18 au reste
    2) je reprends cette chaine optenue et je fais pareil pour le 8 à supprimer

    tu essayes

    et tu reviens nous montrer ce que tu as fais

    A bientôt

  3. #3
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour le fil, bonjour le forum

    Comme le dit Igloobel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Macro1()
    Dim O As Worksheet
    Dim TV As Variant
    Dim I As Integer
     
    Set O = Worksheets("Feuil1")
    TV = O.Range("A1").CurrentRegion
    TV(1, 1) = TV(1, 1)
    For I = 2 To UBound(TV, 1)
        TV(I, 1) = Left(TV(I, 1), 16) & Mid(TV(I, 1), 18)
        TV(I, 1) = Left(TV(I, 1), 6) & Mid(TV(I, 1), 8)
    Next I
    O.Range("D1").Resize(UBound(TV, 1), 1).Value = TV
    End Sub

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour le fil,

    Ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Explicit
    Sub test()
    Dim str As String
      str = ActiveSheet.Range("A1").Text
      Mid(str, 17, 1) = Chr(1)
      Mid(str, 9, 1) = Chr(1)
      ActiveSheet.Range("A1").Formula = Replace(str, Chr(1), "")
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 39
    Par défaut
    Merci Igloobel, Patrice et Thautheme,

    J'ai opté pour la solution de Thautheme et c'est exactement ce que je voulais

    Par ailleurs, je viens de me rendre compte d'une subtilité : est il possible d'ajouter une condition pour éviter d'agir sur les string qui commencent par un point . ?

    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
     
    Sub Macro1()
    Dim O As Worksheet
    Dim TV As Variant
    Dim I As Integer
     
    Set O = Worksheets("Feuil1")
    TV = O.Range("A1").CurrentRegion
    TV(1, 1) = TV(1, 1)
    For I = 2 To UBound(TV, 1)
        TV(I, 1) = Left(TV(I, 1), 16) & Mid(TV(I, 1), 18)
        TV(I, 1) = Left(TV(I, 1), 6) & Mid(TV(I, 1), 8)
    Next I
    O.Range("D1").Resize(UBound(TV, 1), 1).Value = TV
    End Sub

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    'remplacons  le 7 et 9
    mystring = "toto titi riri fifi"
    Mid$(mystring, 7, 1) = "o"
    Mid$(mystring, 9, 1) = "o"
    MsgBox mystring
    '
    'suppression du 7 et du 9
    mystring = "toto titi riri fifi"
    mystring = Mid$(mystring, 1, 6) & Mid$(mystring, 8, 1) & Mid$(mystring, 10)
    MsgBox mystring
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 39
    Par défaut
    Patricktoulon,

    Merci pour ta réponse. Sais tu comment mettre une condition pour eviter d'agir sur les string qui commencent par un point . ?
    Merci

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Sais tu comment mettre une condition pour eviter d'agir sur les string qui commencent par un point .
    Oui : utiliser la fonction Left et une expression conditionnelle plus que basique.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mid(txt,8,1)="£"
    Mid(txt,17,1)="£"
    Txt=replace(txt,"£","")

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Robert
    N'as-tu pas comme un peu l'impression de ce que ta solution (au demeurant la plus aisée) est celle déjà donnée par Patrice740 ?
    Amitiés

  11. #11
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour le fil, bonjour le forum,

    le code adapté :

    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
    Sub Macro1()
    Dim O As Worksheet
    Dim TV As Variant
    Dim I As Integer
     
    Set O = Worksheets("Feuil1")
    TV = O.Range("A1").CurrentRegion
    TV(1, 1) = TV(1, 1)
    For I = 2 To UBound(TV, 1)
        If Not Left(TV(I, 1), 1) = "." Then
            TV(I, 1) = Left(TV(I, 1), 16) & Mid(TV(I, 1), 18)
            TV(I, 1) = Left(TV(I, 1), 6) & Mid(TV(I, 1), 8)
        End If
    Next I
    O.Range("D1").Resize(UBound(TV, 1), 1).Value = TV
    End Sub


    Le VBA sans musique c'est comme la Saint Valentin sans câlin - Thautheme

  12. #12
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Thautheme
    Le VBA sans musique c'est comme la Saint Valentin sans câlin - Thautheme
    Mais les deux vont encore mieux sans la dualité "casseuse d'harmonie" d'un variant

  13. #13
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour le fil, bonjour le forum,

    Citation Envoyé par unparia Voir le message
    Mais les deux vont encore mieux sans la dualité "casseuse d'harmonie" d'un variant
    C'est une contrepèterie non : Mais les vieux vont encore me… dans la (sex)sualité "crasseuse d'harmonie" d'un vaillant...


  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour Robert
    N'as-tu pas comme un peu l'impression de ce que ta solution (au demeurant la plus aisée) est celle déjà donnée par Patrice740 ?
    Amitiés
    bonjour Jaques,
    tu as raison

    @Patrice740
    Dernière modification par Invité ; 14/02/2019 à 11h14.

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

Discussions similaires

  1. [RegEx] Supprimer les ^ et les 6 caractère qui suivent
    Par mimagyc dans le forum Langage
    Réponses: 6
    Dernier message: 12/09/2007, 01h36
  2. Supprimer le dernier caractère d'une string
    Par calagan99 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/07/2007, 10h31
  3. Réponses: 2
    Dernier message: 26/06/2007, 16h04
  4. Supprimer l'accent d'un caractère
    Par odsen.s dans le forum C
    Réponses: 14
    Dernier message: 08/03/2007, 14h36
  5. supprimer 2 les 2 premiers caractères d'un fichier.
    Par menuge dans le forum Langage
    Réponses: 8
    Dernier message: 02/08/2006, 09h00

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