Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

tri du contenu des cellules

  • Initiateur de la discussion Initiateur de la discussion Sushi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Sushi

Guest
bonjour a tous;
je voudrais savoir comment trier le contenu d'une série de cellules (une colonne par exemple) par ordre alphabétique.
par exemple si dans la cellule j'ai le mot maison j'aimerais qu'il m'affiche les lettres de 'maison' par ordre alphabétique soit 'aimnos'.
merci si quelqu'un peut m'aider, et repondre d'une facon simple car je suis très nul dans le maniement d'excel, vu que je m'en sers une fois par an en gros, merci 🙂
 
salut Suhsi,

Ta question est claire, mais une réponse simple n'est pas évidente !

A première vue j'aurais tendance à dissocier chaque lettre du mot, à en chercher le numéro de code, à trier ces numéros, puis à recomposer le mot sur base des valeurs respectives des lettres.

Toutefois deux questions se posent :
Que fait-on des doublons éventuels ?
Les majuscules doivent-elles être triées à part ou bien peuvent-elles être renvoyées en tant que minuscules ?

Une solution par formule me semble complexe, mais faisable, par macro se sera peut-être plus simple.

Ândré.
 
Salut,
Si tu mets ton mot dans la cellule A10 tu récupéreras le mot trier
dans la cellule A11 avec cette macro

Sub tri()
Dim essai As String
Dim essai2 As String
essai = Cells(10, 1).Text
essai2 = ''
For i = 1 To Len(essai) - 1
If Asc(Mid(essai, i, 1)) > Asc(Mid(essai, i + 1, 1)) Then
essai = essai2 & Mid(essai, i + 1, 1) & Mid(essai, i, 1) & Right(essai, Len(essai) - i - 1)
i = 0
End If
essai2 = Left(essai, i)
Next i
Cells(11, 1) = essai
End Sub
 
merci beaucoup pour ces reponses rapides;
pour repondre a herve, il n'y a pas a tenir compte des majuscules ou minuscules, en fait c'est une colonne d'environ 2000 cellules contenant chacune un mot de 6 lettres dont tous les caractères ont la même casse, et je voudrais obtenir les 2000 mots avec toutes leurs lettres mais dans l'ordre alphabetique, donc on garde les doublons, triplets, etc..
par contre comme je disais plus haut je n'y connais rien a excel, et je ne sais meme pas me servir d'une macro, mais bon je vais essayer de chercher pour voir comment on les utilise, encore merci 😉
 
Resalut Sushi,

Voici une solution par formules, qui vaut ce qu'elle vaut !

Comme il n'y a pas de majuscules, voilà déjà un problème de résolu.
Mais il reste le problème des accents sur les voyelles, celui-là est non résolu, en espérant qu'il n'y en a pas.

Les colonnes B à M peuvent être masquées.
Les colonnes H à M pourraient être supprimées en répétant sept fois cette formule en colonne N (qui deviendra dès lors la colonne H), mais est-ce bien nécessaire ?

Bonne journée.
Ândré [file name=suhsiV1.zip size=2684]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/suhsiV1.zip[/file]
 
j'ai réussi a faire marcher la macro, et ca marche 🙂
malheureusement ca ne marche que pour la cellule A10.
ce que je voudrais ca serait qu'il me transforme toute une colonne, par exemple la colonne A vers la colonne B ou sinon qu'il remplace directement le contenu des cellules de la colonne directement par leurs anagrammes triés.
si quelqu'un pourrait voir si il peut me modifier la macro pour qu'elle me fasse ca, ca serait vraiment sympa 😉
 
bon j'ai trifouillé un peu la macro, et au lieu qu'il me transforme la cellule A10 vers la cellule A11, il me transforme de la cellule A1 vers la cellule B2en la modifiant comme ceci:

Sub tri()
Dim essai As String
Dim essai2 As String
essai = Cells(1, 1).Text
essai2 = ''
For i = 1 To Len(essai) - 1
If Asc(Mid(essai, i, 1)) > Asc(Mid(essai, i + 1, 1)) Then
essai = essai2 & Mid(essai, i + 1, 1) & Mid(essai, i, 1) & Right(essai, Len(essai) - i - 1)
i = 0
End If
essai2 = Left(essai, i)
Next i
Cells(1, 2) = essai
End Sub

malheureusement je voudrais qu'il me transforme directement toute la colonne A vers la colonne B, je suppose qu'il y a juste une petite connerie a modifier mais n'y connaissant rien au langage utilisé pour les macros je ne sais pas comment faire, je suppose qu'il faudrait remplacer le 'cells(1,1)' et le 'cells(1,2)' par un truc du style 'cells(n1,1)' et 'cells(n2,2)' enfin un truc tout con quoi..

si quelqu'un peut me le dire, merci
 
je voulais dire de la cellule A1 vers la cellule B1
je vois que pour designer une cellule on utilise la commande 'cells', sous quelle commande designe t'on les colonnes et sous quelle forme l'utilise t'on?
en fait en remplacant 'cells(1,1)' par un truc du genre 'columns(A)' et 'cells(1,2)' par 'columns(B)' ca pourrait peut etre marcher :huh:
 
bonjour le forum, shushi,andré, globinours

shushi une cellule se référance en vba soit par range('b1') par exemple soit par cells(1,2) en clair cells(ligne, colonne).

Une autre proposition, plus faite pour m'amuser avec des tableaux dynamiques car j'ai le meme souci, ces satanés accents (mais j'ai pas dit mon dernier mot).



Salut
[file name=Classeur3_20050604194516.zip size=8512]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur3_20050604194516.zip[/file]
 

Pièces jointes

super !! 🙂
merci Herve ca marche
par contre j'ai un message d'erreur m'indiquant erreur d'execution '6' depassement de capacité si je veux traiter beaucoup de cellules a la fois, mais bon si on peut rien faire contre ca c'est pas tres grave je peux le decouper en morceaux plus petits.
encore merci
 
merci hervé 🙂
maintenant ca marche pour toute la colonne, en fait ca faisait 2326 cellules, j'avais un peu arrondi.
pour les accents, je n'ai pas a m'en occuper tout simplement parce qu'il y en a pas
encore merci, ca m'a vachement dépanné
 
bon ben me revoilà :unsure:
bon la macro marche super bien, mais malheureusement je me suis rendue compte que pour des mots superieurs ou egaux a 7 lettres ca ne marche plus il affiche que les 6 premieres lettres triées et pas la septieme.
et j'ai le meme type de liste a trier avec des mots de 7 lettres, de 8 lettres et une autre de neuf lettres, voila voila.
si herve ou quelqu'un d'autre pourrait me dire quoi changer ca me depannerait bien, merci

🙂
 
Bonjour

Modifies légèrement le code de HErvé

ReDim tablo(1 To Range('a65536').End(xlUp).Row, 1 To 8)
par ReDim tablo(1 To Range('a65536').End(xlUp).Row, 1 To ton nombre de lettres + 2)

For j = 2 To 7
par For j = 2 To ton nombre de lettres +1

idem pour les autres For j = 2 To 7

et

tablo(k, 8) = tablo(k, 8) & tablo(k, i) ainsiq ue

Range('b' & l + 1) = tablo(k, 8): l = l + 1

Où tu remplaces le 8 par ton nombre de lettres +2

Bon courage
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Suggestion Suggestion
Recherche & référence DicoCountOrder
Réponses
0
Affichages
2 K
M
Réponses
2
Affichages
848
M
J
Réponses
11
Affichages
2 K
J
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…