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 :

VBA excel extraire des chaines de caractéres d'une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Mai 2018
    Messages : 37
    Par défaut VBA excel extraire des chaines de caractéres d'une cellule
    Bonjour à tous,

    je viens vers vous afin de résoudre un probléme qui parraît simple mais qui me pose probléme; Séparer une chaine telle que 01/01/2018-E4444444 en 01/01/2018

    Connaissant la fonction Excel Données > Convertir afin de séparer des chaines de caractéres dans une cellules en deux ou plusieurs cellules, je cherche à automatiser le process sur plus de 50 000 lignes (la raison est que que je ne peux selectionner l'entiéreté de la colonne et effectuer l'opération sans affecter les autres cellules) avec le code suivant :

    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
    22
    23
    24
    25
    26
     
     
    sub SplitCells()
     
        Dim DerniereLigne As Integer
        Dim PositionTiret As Integer
        Dim Contenu As String
        Dim Adroite As String
     
     
    With Feuil4
        DerniereLigne = Cells(65535, 1).End(xlUp).Row
        For i = 1 To DerniereLigne
            Contenu = Cells(i, 35).Value
            PositionTiret = InStr(Contenu, "-")
     
            If PositionTiret > 0 Then
                Adroite = Right(Contenu, Len(Contenu) - PositionTiret)
                Cells(i, 35).Value = Adroite
     
            End If
     
        Next i
    End With
     
    End Sub
    Mon probléme est que j'obtiens le résultat suivant 01/01/2018- en lieu et place de 01/01/2018 , auriez vous l'amabilité de me guider ?

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    et avec la fonction standard de Excel GAUCHE ??? sans passer par VBA ??

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 569
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 569
    Par défaut
    Bonjour

    Si toutes les dates sont bien sous la forme jj/mm/aaaa il suffit, par formule ou en VBA de prendre les 10 caractères de gauche...

  4. #4
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Mai 2018
    Messages : 37
    Par défaut
    Bonjour Bennasr,

    Merci pour ton retour, je pense que cette fonction ne me permets pas de retranscrire les données dans la même cellule et ne prend pas en compte une colonne entiére avec d'autres données ne devant pas être séparées.

    Bonjour Chris,

    Merci pour ton retour rapide, j'essaye d'adapter mon code afin de juste spliter la cellule à l'endroit précis du "-" afin de garder la date dans la cellule source.

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    essayer avec ça sur une copie de ton travail
    je suis pas responsable des dégâts potentiels
    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 extractionMots()
        Dim Tableau() As String
        Dim i As Integer
        Dim j As Long
        Dim t As Integer
        With Sheets("feuil1")
        j = .Range("A" & Rows.Count).End(xlUp).Row
        For j = 1 To j
        Tableau = Split(.Cells(j, 1), "-")
        For i = 0 To UBound(Tableau)
            Debug.Print Tableau(i)
        Next i
        .Cells(j, 1) = Tableau(0)
        Next j
        End With
    End Sub

  6. #6
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Mai 2018
    Messages : 37
    Par défaut
    Merci, le code proposer ne donne aucun résultat, j'ai juste adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     j = .Range("AI" & Rows.Count).End(xlUp).Row
    mais le code ne change rien. merci de trouver ci-joint un fichier excel représentant mon probléme
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 28/10/2016, 06h30
  2. Réponses: 5
    Dernier message: 14/12/2013, 18h10
  3. Extraire des 4 dernier caractères d'une chaine
    Par Niko_de_bordo dans le forum Débuter
    Réponses: 9
    Dernier message: 19/06/2009, 17h49
  4. Extraire des chaines de caractères dans un fichier
    Par cycy75 dans le forum Scripts/Batch
    Réponses: 16
    Dernier message: 27/03/2009, 14h56
  5. Réponses: 1
    Dernier message: 06/05/2007, 17h42

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