Ne garder que les lettres
Raf
-
titeufdu89 Messages postés 387 Statut Membre -
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
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
-
Bonsoir
Un exemple
https://www.cjoint.com/c/IAyqmgluJhk
Cordialement -
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
-
-
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
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
J'ai envoyé le fichier à JCB40.
Merci beaucoup pour votre réponse. -
Bonjour
J'ai envoyé le fichier à JCB40.
Dommage, car il y a une solution toue simple préparant ce que t'avais proposé JCB40
-
-
-
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 -
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 genreSub 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
-
-
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
-
-
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 -
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 -
Oui oui laissez tomber, je vais tout faire manuellement. Merci pour votre aide. Cordialement
-
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