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 :

Séparation de chaînes de caractères à inserer dans tableau [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2017
    Messages : 2
    Par défaut Séparation de chaînes de caractères à inserer dans tableau
    Bonjour à tous,

    je dois réaliser une macro sous Excel pour me permettre de classer des nomenclatures de fichier.
    je m'explique, dans chaque cellule de ma première colonne, je vais avoir une chaîne de caractère de type: bn_220502_X_Cmde PCA_SAINTDENIS-BRISEECHALAS
    bnl_220501_A_Cmde consoles BATC_SAINTDENIS-BRISEECHALAS_Provisoire

    le but de la macro serait que mes chaînes de caractères comprises entre les "_" se retrouvent dans une cellule unique dans les colonnes d'à coté (sur la même ligne).
    Est ce que quelqu'un a déjà eu à faire ce type de macros?

    Je ne sais pas si je dois écrire plusieurs macros pour extraire chaque chaîne une à une pour le réintroduire dans une colonne de type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub extrairenumerodocument()
    For Each cellule In Range("A1:A1000")
    Dim Debut As String, Fin As String
    Debut = InStr(1, cellule, "_")
    Fin = InStr(5, cellule, "_")
    If cellule.Value Like "*_*" Then
    cellule.Offset(, 2) = Mid(cellule, Debut, Fin - Debut + 1)
    End If
    Next
    For Each cellule In Range("C1:C1000")
    cellule.Value = Replace(cellule.Value, "_", "")
    Next
    End Sub
    l'inconvénient est que je dois imposer un nombre de caractère pour chaque chaîne sinon je vais avoir des louper.

    je ne maîtrise pas bien les tableaux et peut être il a des choses plus simple.

    Merci d'avance pour votre aide.

    Extraire.xls

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Presque personne n'ouvre les pièces jointes.

    Ceci dit, tu fais un Split de ta chaîne en séparant sur "_"

    Puisque Split donne automatiquement un tableau des mots résultants, tu itères ton tableau en mettant chaque mot dans la bonne ligne et la bonne colonne

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par brikoou Voir le message
    Bonjour,

    Pour compléter le message de Clément :
    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
     
    Sub ExtraireNumeroDocument()
     
    Dim MaChaine As Variant
    Dim I As Integer
    Dim Cellule As Range
    Dim DerniereLigne As Long
     
            With ActiveSheet
                 DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
                 For Each Cellule In .Range("A1:A" & DerniereLigne)
                     MaChaine = Split(Cellule, "_")
                     If UBound(MaChaine) > 0 Then
                        For I = 1 To UBound(MaChaine) + 1
                            Cellule.Offset(0, I) = MaChaine(I - 1)
                        Next I
                     End If
                Next Cellule
            End With
    End Sub

  4. #4
    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
    Ou plus simplement : convertir --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Range("A1:A1000").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            OtherChar:="_", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), TrailingMinusNumbers:=True

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2017
    Messages : 2
    Par défaut
    Merci pour vos réponse.
    Le code d'Eric correspond totalement à ce que je voulais faire.
    j'ai encore quelques proprets à faire

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 02/08/2008, 05h34
  2. Réponses: 11
    Dernier message: 15/04/2008, 21h48
  3. Scinder les chaînes de caractère d'un tableau
    Par Norum1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/12/2007, 16h19
  4. Réponses: 3
    Dernier message: 24/10/2007, 02h47
  5. Convertir une chaîne de caractère (saisie dans un textbox) en décimal
    Par sab_etudianteBTS dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/09/2007, 22h17

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