[EXCEL] Trier des lignes à l'intérieur d'une cellule

Anonyme
2020-05-08T14:17:07+00:00

Bonjour

J'ai écris plusieurs lignes à l'intérieur d'une seule cellule, grâce à Alt+Entrée (https://support.office.com/fr-fr/article/renvoyer-du-texte-%C3%A0-la-ligne-dans-une-cellule-2a18cff5-ccc1-4bce-95e4-f0d4f3ff4e84).

J'aimerais savoir si c'est possible de trier toutes les lignes à l'intérieur de cette cellule.

Exemple :

Merci

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

5 réponses

  1. DanielCo 107.7K Points de réputation
    2020-05-22T16:56:23+00:00

    La macro suivante commence par te demander la plage à trier, par exemple B2:C4 :

    Sub Tri()

      Dim Tabl() As String, C As Range, Plage As Range

      Set Plage = Application.InputBox("Sélectionnez la plage des cellules à trier", Type:=8)

      For Each C In Plage

        Tabl = Split(C, Chr(10))

        QuickSort Tabl, LBound(Tabl), UBound(Tabl)

        C = Join(Tabl, Chr(10))

      Next C

    End Sub

    Sub QuickSort( _

        list() As String, _

        ByVal lngMin As Long, _

        ByVal lngMax As Long)

        Dim strMidValue As String

        Dim lngHi As Long

        Dim lngLo As Long

        Dim lngIndex As Long

        ' S'il y a 0 ou 1 élément dans la liste,

        ' la sous-liste est déjà triée

        If lngMin >= lngMax Then Exit Sub

        ' Valeur de partionnement

        lngIndex = Int((lngMax - lngMin + 1) * Rnd + lngMin)

        strMidValue = list(lngIndex)

        ' Echanger les valeurs

        list(lngIndex) = list(lngMin)

        lngLo = lngMin

        lngHi = lngMax

        Do

            ' Chercher, à partir de lngHi, une valeur < strMidValue

            Do While list(lngHi) >= strMidValue

                lngHi = lngHi - 1

                If lngHi <= lngLo Then Exit Do

            Loop

            If lngHi <= lngLo Then

                list(lngLo) = strMidValue

                Exit Do

            End If

            ' Echanger les valeurs lngLo et lngHi

            list(lngLo) = list(lngHi)

            ' Chercher à partir de lngLo une valeur >= strMidValue

            lngLo = lngLo + 1

            Do While list(lngLo) < strMidValue

                lngLo = lngLo + 1

                If lngLo >= lngHi Then Exit Do

            Loop

            If lngLo >= lngHi Then

                lngLo = lngHi

                list(lngHi) = strMidValue

                Exit Do

            End If

            ' Echanger les valeurs lngLo et lngHi

            list(lngHi) = list(lngLo)

        Loop

        ' Trier les 2 sous-listes

        QuickSort list, lngMin, lngLo - 1

        QuickSort list, lngLo + 1, lngMax

    End Sub

    Pour l'installer dans ton classeur, fais un clic droit sur un onglet, clique sur "visualiser le code". Dans la fenêtre VBE, repère, à gauche, le VBAProject qui porte le nom de ton classeur. Fais un clic droit dessus, clique sur "Insertion" et sur "Module". Colle le code dans la partie droite. Enregistre le classeur au format .xlsm (classeur prenant en charge les macros). Referme l'éditeur VBA.

    Pour l'exécuter, clique sur l'onglet "Affichage" et sur le bouton "Macro". Double clique sur la macro "Tri".

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2020-05-22T16:19:42+00:00

    Mon tableau ressemblera à peu près à ça (j'ai mis des catégories au hasard) :

    Ces personnes ont plusieurs maisons et diplômes

    Une colonne pour le nom, et chaque autre colonne pour une info supplémentaire.

    Je modifierais régulièrement les cellules qui contiennent les infos en rajoutant des lignes, mais je ne devrais pas rajouter de nouvelle colonne. Par contre, je pourrais rajouter de nouvelle ligne pour rentrer les infos de nouvelles personnes.

    Est-ce que ça répond à votre question ?

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. DanielCo 107.7K Points de réputation
    2020-05-22T15:30:00+00:00

    Il Faudrait savoir quelle plage de cellules tu souhaites traiter. Un seule ? Un plage variable ?

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2020-05-22T14:56:13+00:00

    Bonjour,

    Pour autant que je sache, non. A la rigueur, c'est possible avec une macro.

    Cordialement.

    Daniel

    Merci beaucoup pour votre réponse !

    Je n'ai jamais utilisé de macros auparavant et je ne sais pas comment ça marche...

    Comment est-ce que je pourrais en utiliser une pour m'aider dans ce cas-là ?

    Merci

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. DanielCo 107.7K Points de réputation
    2020-05-08T15:28:05+00:00

    Bonjour,

    Pour autant que je sache, non. A la rigueur, c'est possible avec une macro.

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire