Ne garder que les lettres

Raf -  
titeufdu89 Messages postés 387 Statut Membre -
Bonjour,

Je dois procéder à l'analyse d'évaluations nationales de 6ème et malheureusement l'extraction se fait avec des nombres et des lettres pour l'identité des élèves dans les cellules.

ex : 52C0778490M21 [LAWIF Nautiss], 51C0772880M71 [MOULUCHI Farah], 53TZ772190M41 [FRISNOL--MARHIND Ema], 24C0002190M31 [MIGLA Youba].

N'étant pas expert d'excel, pouvez-vous me dire s'il existe une solution pour ne conserver que les lettres de leurs noms et prénoms et supprimer les chiffres et crochets?

Merci d'avance pour vos lumières

12 réponses

  1. JCB40 Messages postés 3060 Date d'inscription   Statut Membre Dernière intervention   479
     
    Bonsoir
    Un exemple
    https://www.cjoint.com/c/IAyqmgluJhk
    Cordialement
    0
    1. Raf
       
      Bonsoir,

      Un grand merci pour votre réponse et votre aide.
      Malheureusement, il s'agit d'une extraction très importante et non régulière car il y a un nombre variable d'élèves selon le domaine et plusieurs classe.

      Bonne soirée et encore merci
      0
  2. JCB40 Messages postés 3060 Date d'inscription   Statut Membre Dernière intervention   479
     
    Bonsoir

    Je ne vois pas le rapport avec la formule
    Un peu d'explications serait bienvenues
    Crdlt
    0
    1. Raf
       
      Bonsoir,

      Encore merci pour votre réponse.

      Comme je vous l'ai indiqué, je ne suis pas expert avec Excel, cela veut dire en fait novice.

      J'ai un fichier avec une extraction d'élèves qui sont en difficultés ou fragiles dans des domaines en français ou en mathématiques. L'extraction me donne le nom des élèves avec le nom et prénom mais aussi avec des numéros référents académiques. En fonction des domaines, il n'y a pas le même nombre d'élèves qui n'ont pas réussi leurs évaluations. Je souhaite supprimer le plus facilement les nombres et ne garder que leurs noms plutôt que de le faire manuellement.

      Les données sont sensibles, ce sont des données scolaires, je ne peux les communiquer ici.

      S'il vous est possible de m'accorder du temps, peut-être pouvons nous trouver un moyen de communiquer plus facilement afin de garantir l'anonymat de nos échanges.

      Bien cordialement
      0
  3. titeufdu89 Messages postés 387 Statut Membre 38
     
    Bonsoir,

    Admettons que ta liste de caractère soit en A1, colle cette formule en B1 ou dans la prochaine colonne libre de la ligne 1, Cette formule extrait les caractères contenus entre [ ] :
    =STXT(A1;TROUVE("[";A1)+1;TROUVE("]";A1)-TROUVE("[";A1)-1)

    Puis duplique la formule aussi loin que besoin avec la poignée de recopie

    NB : si ta liste de caractère est située dans une autre cellule que A1, remplace tous les A1 de la formule par l'adresse de la cellule en question

    Bonne soirée

    Jc
    0
    1. Raf
       
      Bonjour,

      Merci pour votre réponse mais cela m'indique #valeur! malgré le changement de cellule.

      Bien cordialement
      0
  4. JCB40 Messages postés 3060 Date d'inscription   Statut Membre Dernière intervention   479
     
    Bonjour

    Tu peux me l'envoyer en message perso
    pour cela tu cliques sur mon pseudo et ensuite sur envoyer un message
    en joignant ton fichier
    Pour transmettre un fichier, il faut passer par un site de pièce jointe tel que cjoint.com

    Va sur ce site : https://www.cjoint.com/
    Clic sur parcourir,
    Cherche ton fichier,
    clic sur ouvrir,
    Clic sur "Créer le lien cjoint",
    Copier le lien,
    Revenir ici le coller dans une réponse..
    Cordialement
    0
    1. Raftafari77 Messages postés 7 Statut Membre
       
      Je vous ai envoyé le fichier.

      Merci beaucoup
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Raftafari77 Messages postés 7 Statut Membre
     
    J'ai envoyé le fichier à JCB40.

    Merci beaucoup pour votre réponse.
    0
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    J'ai envoyé le fichier à JCB40.

    Dommage, car il y a une solution toue simple préparant ce que t'avais proposé JCB40
    0
    1. JCB40 Messages postés 3060 Date d'inscription   Statut Membre Dernière intervention   479
       
      Bonjour michel

      J'ai effectivement son fichier ,le hic qui se pose c'est que de nombreux N° Noms Prénoms
      d'élèves sont dans la même cellule.
      Si tu as une solution je suis preneur
      Cordialement
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      bonjour
      dans la cellule
      données-convertir, délimité:virgule
      puis selectionner les x cellules
      copier-collage spécial-transposé
      en suite tu écris à coté la formule que tu as proposé et tu tires vers le bas
      0
    3. JCB40 Messages postés 3060 Date d'inscription   Statut Membre Dernière intervention   479
       
      re, michel


      J'ai fait un essai impossible a mettre en place il y a des [ ] ,à chaque élève.
      exemple dans une cellule
      96C0772190M82 [Dupont marcel], 97C0772190M02 [Durand andré], 98C0772190M02 [Dubois jules]
      toutes les cellules non pas le même nombre d'élève
      j'ai volontairement changé les noms et prénoms
      Crdlt
      0
    4. titeufdu89 Messages postés 387 Statut Membre 38
       
      Bonjour Michel et JCB,

      Et une macro qui anaylse les chaines de texte caractère par caractère et lorsqu'elle tombe sur" [" extrait tous les caractères suivant jusqu'au prochain "]" ?
      du genre
      Sub extract()
      col = 1 'colonne des cellule à analyser
      res = 2 'colonne ou afficher les noms
      For i = 1 To Cells(66536, col).End(xlUp).Row
      st = Cells(i, col).Value
          If st <> "" Then
              For j = 1 To Len(st)
                  If Mid(st, j, 1) = "[" Then
                  deb = j + 1
                  nb = 1
                      Do While Mid(st, deb + nb, 1) <> "]"
                      nb = nb + 1
                      Loop
                  Cells(Cells(65536, res).End(xlUp).Row + 1, res) = Mid(st, deb, nb)
                  j = j + nb
                  End If
              Next j
          End If
      Next i
      End Sub
      


      Jc
      0
  8. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Une solution en vba pour une cellule si cela commence toujours par un nombre. Il suffira ensuite de faire un boucle sur la colonne contenant les cellules avec cette macro:

    https://silkyroad.developpez.com/VBA/ManipulerChainesCaracteres/#LI-I

    Sub extractionMots()
        Dim Tableau() As String
        Dim i As Integer, j As Integer
        Dim texte  As String
        Dim Ix As Integer
        
        'on supprime les crochets on les remplace par #
       texte = Replace(Range("A1"), "[", "#")
       texte = Replace(texte, "]", "#")
       Tableau = Split(texte, "#")
        
        'boucle sur le tableau pour visualiser le résultat
        For i = 0 To UBound(Tableau)
            'Le résultat s'affiche dans la fenêtre d'execution de l'éditeur de macros
           Debug.Print Tableau(i)
           Ix = Ix + 1 'on compte les occurences
        Next i
    For j = 1 To Ix - 1 Step 2 'on ne prend que les impairs
    Range("B1").Value = Range("B1").Value & Tableau(j) & ", " 'on ajoute une virgule entre les noms
       Next
       Range("B1").Value = Left(Range("B1").Value, Len(Range("B1").Value) - 2) 'supprime la dernière virgule et l'espace
    End Sub
    


    0
  9. Raftafari77 Messages postés 7 Statut Membre
     
    Que d'aides de vous tous.

    Un grand merci
    0
  10. JCB40 Messages postés 3060 Date d'inscription   Statut Membre Dernière intervention   479
     
    Bonjour titeuf
    merci pour la solution que tu proposes qui fonctionne bien , mais il y a des hic...

    Les cellules concernées sont de B3 à B8 et de B12 à B16
    il faudrait retranscrire B3 à B8 à partir de B20 et B12 à B16 a partir de B50
    La présentation de ce tableau est une vrai galère
    Vois si tu peux faire quelque chose
    Crdlt
    0
  11. JCB40 Messages postés 3060 Date d'inscription   Statut Membre Dernière intervention   479
     
    Je précise que le fichier vient de la avec le N°département en+
    je viens de m'en apercevoir
    Pour ma part je laisse tomber,je suppose qu'ils ont des informaticiens
    et je ne veux pas leur piquer leur taf

    Directions des services départementaux de l'éducation nationale
    0
  12. Raftafari77 Messages postés 7 Statut Membre
     
    Oui oui laissez tomber, je vais tout faire manuellement. Merci pour votre aide. Cordialement
    0
  13. titeufdu89 Messages postés 387 Statut Membre 38
     
    Voici un nouveau code qui devrait faire l'affaire...
    Sub extract()
    col = 2 'colonne des cellule à analyser
    For i = 1 To Cells(66536, col).End(xlUp).Row
        If (i >= 3 And i <= 8) Or (i >= 12 And i <= 16) Then
        st = Cells(i, col).Value
            If st <> "" Then
                For j = 1 To Len(st)
                    If Mid(st, j, 1) = "[" Then
                    deb = j + 1
                    nb = 1
                        Do While Mid(st, deb + nb, 1) <> "]"
                        nb = nb + 1
                        Loop
                            Select Case i
                            Case Is <= 8
                                For k = 20 To 49
                                If Range("B" & k).Value = "" Then
                                lig = k
                                GoTo nex
                                End If
                                Next k
                            Case Is >= 12
                                For l = 50 To 65536
                                If Range("B" & l).Value = "" Then
                                lig = l
                                GoTo nex
                                End If
                                Next l
                            End Select
    nex:
                    Cells(lig, col) = Mid(st, deb, nb)
                    j = j + nb
                    End If
                Next j
            End If
        End If
    Next i
    End Sub
    

    0