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
A voir également:

12 réponses

JCB40 Messages postés 3465 Date d'inscription   Statut Membre Dernière intervention   469
 
Bonsoir
Un exemple
https://www.cjoint.com/c/IAyqmgluJhk
Cordialement
0
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
JCB40 Messages postés 3465 Date d'inscription   Statut Membre Dernière intervention   469
 
Bonsoir

Je ne vois pas le rapport avec la formule
Un peu d'explications serait bienvenues
Crdlt
0
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
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
Raf
 
Bonjour,

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

Bien cordialement
0
JCB40 Messages postés 3465 Date d'inscription   Statut Membre Dernière intervention   469
 
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
Raftafari77 Messages postés 7 Statut Membre
 
Je vous ai envoyé le fichier.

Merci beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

Merci beaucoup pour votre réponse.
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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
JCB40 Messages postés 3465 Date d'inscription   Statut Membre Dernière intervention   469
 
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
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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
JCB40 Messages postés 3465 Date d'inscription   Statut Membre Dernière intervention   469
 
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
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
cs_Le Pivert Messages postés 8437 Statut Contributeur 729
 
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
Raftafari77 Messages postés 7 Statut Membre
 
Que d'aides de vous tous.

Un grand merci
0
JCB40 Messages postés 3465 Date d'inscription   Statut Membre Dernière intervention   469
 
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
JCB40 Messages postés 3465 Date d'inscription   Statut Membre Dernière intervention   469
 
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
Raftafari77 Messages postés 7 Statut Membre
 
Oui oui laissez tomber, je vais tout faire manuellement. Merci pour votre aide. Cordialement
0
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