Ne garder que les lettres [Fermé]

Signaler
-
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
-
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

Messages postés
2231
Date d'inscription
lundi 2 juillet 2018
Statut
Membre
Dernière intervention
25 février 2021
376
Bonsoir
Un exemple
https://www.cjoint.com/c/IAyqmgluJhk
Cordialement
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
Messages postés
2231
Date d'inscription
lundi 2 juillet 2018
Statut
Membre
Dernière intervention
25 février 2021
376
Bonsoir

Je ne vois pas le rapport avec la formule
Un peu d'explications serait bienvenues
Crdlt
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
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
34
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
Bonjour,

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

Bien cordialement
Messages postés
2231
Date d'inscription
lundi 2 juillet 2018
Statut
Membre
Dernière intervention
25 février 2021
376
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
Messages postés
7
Date d'inscription
vendredi 25 janvier 2019
Statut
Membre
Dernière intervention
13 février 2019

Je vous ai envoyé le fichier.

Merci beaucoup
Messages postés
7
Date d'inscription
vendredi 25 janvier 2019
Statut
Membre
Dernière intervention
13 février 2019

J'ai envoyé le fichier à JCB40.

Merci beaucoup pour votre réponse.
Messages postés
16391
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 février 2021
3 143
Bonjour
J'ai envoyé le fichier à JCB40.

Dommage, car il y a une solution toue simple préparant ce que t'avais proposé JCB40
Messages postés
2231
Date d'inscription
lundi 2 juillet 2018
Statut
Membre
Dernière intervention
25 février 2021
376
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
Messages postés
16391
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 février 2021
3 143
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
Messages postés
2231
Date d'inscription
lundi 2 juillet 2018
Statut
Membre
Dernière intervention
25 février 2021
376
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
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
34
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
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 février 2021
616
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


Messages postés
7
Date d'inscription
vendredi 25 janvier 2019
Statut
Membre
Dernière intervention
13 février 2019

Que d'aides de vous tous.

Un grand merci
Messages postés
2231
Date d'inscription
lundi 2 juillet 2018
Statut
Membre
Dernière intervention
25 février 2021
376
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
Messages postés
2231
Date d'inscription
lundi 2 juillet 2018
Statut
Membre
Dernière intervention
25 février 2021
376
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
Messages postés
7
Date d'inscription
vendredi 25 janvier 2019
Statut
Membre
Dernière intervention
13 février 2019

Oui oui laissez tomber, je vais tout faire manuellement. Merci pour votre aide. Cordialement
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
34
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