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 :

Simplifier une suite de chiffres


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2018
    Messages : 5
    Par défaut Simplifier une suite de chiffres
    Bonjour à tous

    Pour commencer, merci pour ce forum et les nombreux sujets auxquels vous avez répondus, ils m’ont été très souvent d’une grande aide.

    Alors, je voudrais faire une macro pour simplifier une suite de chiffres qui est dans une cellule et je n’arrive pas à trouver une solution.
    Je m’explique, dans une cellule, exemple "A1" j’ai une suite de chiffres « 1, 2, 3, 5, 6, 9, 11, 12 » et je voudrais supprimer les numéros que se suivent et mettre une flèche entre : « 1->6, 9, 11->12 »
    Avez-vous une idée ?

    Merci pour votre aide !

    Bonne journée

  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
    je sais pas si ça va t'aider au non mais pour scinder ta chaîne de caractère sur plusieurs colonne tu peux faire avec ça :
    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 extractiondeschiffres()
        Dim Tableau() As String
        Dim i As Integer
        Dim j As Integer
     
        With Sheets("feuil1")
        Tableau = Split(.Cells(1, 1), ",")
        j = 2
        For i = 0 To UBound(Tableau)
            Debug.Print Tableau(i)
             .Cells(1, j) = Tableau(i)
             j = j + 1
        Next i
        End With
    End Sub

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2018
    Messages : 5
    Par défaut
    Bonjour BENNASR

    Merci pour ton aide, j'ai déjà fait une macro qui ressemble à la tienne mais je voulais une macro plus simple et en évitent d’écrire sur ma feuille. Je préférait utiliser des variables.

    Merci!

  4. #4
    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
    Bonsoir
    j'ai bricolé ça
    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
    27
    28
    29
    30
    Sub test()
     
    Dim Tableau() As String
        Dim i As Integer
        Dim j As Integer
        Dim x
        Dim c
        With Sheets("feuil1")
        Tableau = Split(.Cells(1, 1), ",")
        j = 2
        For i = 0 To UBound(Tableau)
            Debug.Print Tableau(i)
        Next i
        End With
     
     
    Cells(1, 2) = ""
    Dim L As Integer
     
    c = Tableau(0)
    On Error Resume Next
    For L = 0 To UBound(Tableau)
    If Tableau(L + 1) - Tableau(L) <> 1 Then
    x = Tableau(L)
    Cells(1, 2) = Cells(1, 2) & " , " & c & "->" & x
    c = Tableau(L + 1)
    End If
    Next L
     
    End Sub
    Fichiers attachés Fichiers attachés

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    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
    Sub test()
        Debug.Print regroup("1, 2, 3, 5, 6, 9, 11, 12")
    End Sub
     
    Function regroup(s As String) As String
        Dim pl As Range, i As Long, tmp, tmp2
        If s = "" Then regroup = "": Exit Function
        tmp = Split(Application.Trim(s), ",")
        For i = 0 To UBound(tmp)
            If pl Is Nothing Then Set pl = Rows(tmp(i)) Else Set pl = Union(pl, Rows(tmp(i)))
        Next i
        tmp = Split(pl.Address(False, False), ",")
        For i = 0 To UBound(tmp)
            tmp2 = Split(tmp(i), ":")
            If tmp2(0) = tmp2(1) Then tmp(i) = tmp2(0) Else tmp(i) = Join(tmp2, "->")
        Next i
        regroup = Join(tmp, ", ")
    End Function
    fonction à mettre dans un module Standard si tu veux l'appeler depuis une feuille.
    Je ne teste pas si la chaine passée est bien conforme à ce qui est attendu. Ajouter les tests si besoin.
    eric

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2018
    Messages : 5
    Par défaut
    BENNASR et Eriiic

    Je vous remercie beaucoup pour votre aide!!
    J'ai repris la macro d'Eriiic, elle correspondait parfaitement à ce dont j'avais besoin
    J'ai beau venir souvent sur ce forum, vous m'impressionnez toujours autant par votre rapidité et vos solutions!!

    Bon Week-ends

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/01/2014, 15h26
  2. Réponses: 3
    Dernier message: 27/01/2011, 10h40
  3. Réponses: 2
    Dernier message: 30/06/2010, 18h52
  4. [RegEx] comment prélever une suite de chiffres dans une chaine
    Par thor76160 dans le forum Langage
    Réponses: 2
    Dernier message: 19/03/2010, 12h29
  5. Réponses: 1
    Dernier message: 27/01/2010, 15h17

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