LISTE ALPHABETIQUE SANS ARTICLE

  • Initiateur de la discussion Initiateur de la discussion François
  • 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 !

F

François

Guest
Bonjour,

J'ai une liste de DVD classés par titre et je souhaiterai une macro qui me permettrai d'isoler l'article : ainsi éviter de retrouver toute une série de "Le", "la" et autres "les" lors d'un tri par ordre alphabétique.

Merci
 
Salut François et le forum

par exemple : en A1 tu as ton 1er titre

à droite de ta colonne, tu mets : (en B1)

=DROITE(A1;NBCAR(A1)-CHERCHE(" ";A1))

tu double-cliques sur la poignée de recopie

ensuite tu fais un copier edition collage spécial valeurs et tu supprimes la 1ère colonne

Cathy
 
Merci Cathy pour ta rapide réponse mais...(il faut bien un mais!!) tous les titres de films n'ont pas forcément d'article....alors, comment faire pour que cette ligne de formule ne s'applique qu'aux titres avec articles? (le, la, les La c'est déjà plus difficile!!

L'idéal serait même, accrochez vous à vos claviers, que l'article du titre, si présent, soit déplacer à la fin du titre et entre parenthèse ex : Le cercle des poêtes disparus deviendrait-------> Cercle des poêtes disparus (Le)

Merci pour votre aide.
 
Bonjour François

Je ne sais pas qui est l'auteur mais celà fait ce que tu demande



Sub ArticlesFinDePhrases()
'
' ArticlesFinDePhrases Macro

'Mettre les articles de début de titres à la fin de la phrase
'entre parenthèses
'
Articles = Array("LA", "LE", "LES", "L'", "UN", "UNE", _
"DES", "DU", "D'", "AU", "AUX")
For Each LaCell In Selection: For Each Article In Articles
L = Len(Article)
If UCase(Left(LaCell.Formula, L)) = Article Then
LaCell.Value = UCase(Mid(LaCell, L + 1, 1)) + Mid(LaCell, L + 2) _
+ "(" + RTrim(Left(LaCell, L)) + ")"
Exit For
End If
Next: Next
End Sub



Sub TrierSansArticles()
'
' ArticlesFinDePhrases Macro

'Faire un tri dans une liste sans tenir compte des articles
'
Articles = Array("LA", "LE", "LES", "L'", "UN", "UNE", _
"DES", "DU", "D'", "AU", "AUX")
For Each LaCell In Selection: For Each Article In Articles
L = Len(Article)
If UCase(Left(LaCell.Formula, L)) = Article Then
LaCell.Value = Mid(LaCell, L + 1) + "$$" + Left(LaCell, L)
Exit For
End If
Next: Next
Selection.Sort Key1:=Selection, _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom
For Each LaCell In Selection
x = InStr(LaCell, "$$")
If x > 0 Then
LaCell.Value = Mid(LaCell, x + 2) + Left(LaCell, x - 1)
End If
Next
End Sub


Salut ;o)
 
Remplacer la formule par :

=SI(OU(GAUCHE(A1;2)="Le";GAUCHE(A1;2)="La";GAUCHE(A1;3)="Les");DROITE(A1;NBCAR(A1)-CHERCHE(" ";A1))&" ("&GAUCHE(A1;CHERCHE(" ";A1))&")";A1)

et tout ça, sans macro! (pour moi, la meilleure macro consiste à ne pas en écrire, si c'est faisable, évidemment!)

Cathy
 
Formidable....

Mais (encore!!!)

Il faut juste rajouter un espace après chaque article afin de ne pas trier des produits commençant par ces lettres là ex : LAIDEUR commence pa La mais ne dois pas être pris. Ci-dessous la formule modifiée

=SI(OU(GAUCHE(C12;3)="Le ";GAUCHE(C12;4)="Les ";GAUCHE(C12;4)="Des ";GAUCHE(C12;4)="Aux ";GAUCHE(C12;3)="Un ";GAUCHE(C12;4)="Une ";GAUCHE(C12;3)="Du ");DROITE(C12;NBCAR(C12)-CHERCHE(" ";C12))&" ("&GAUCHE(C12;CHERCHE(" ";C12))&")";C12)

De + comment faire avec le L apostrophe?

Merci
 
Ben voilà, François, t'es un chef, t'as même réussi à compliquer ma formule!!! (Lol)

eh ben je vais faire pire, na!!!!

=SI(OU(GAUCHE(C12;3)="Le ";GAUCHE(C12;3)="La ";GAUCHE(C12;4)="Les ";GAUCHE(C12;4)="Des ";GAUCHE(C12;4)="Aux ";GAUCHE(C12;3)="Un ";GAUCHE(C12;4)="Une ";GAUCHE(C12;3)="Du ");DROITE(C12;NBCAR(C12)-CHERCHE(" ";C12))&" ("&GAUCHE(C12;CHERCHE(" ";C12))&")";SI(GAUCHE(C12;2)="L'";DROITE(C12;NBCAR(C12)-2)&" ("&GAUCHE(C12;2)&")";C12))

Cathy
 
J'ai oublié le D' (!!!!!)

=SI(OU(GAUCHE(C11;3)="Le ";GAUCHE(C11;3)="La ";GAUCHE(C11;4)="Les ";GAUCHE(C11;4)="Des ";GAUCHE(C11;4)="Aux ";GAUCHE(C11;3)="Un ";GAUCHE(C11;4)="Une ";GAUCHE(C11;3)="Du ");DROITE(C11;NBCAR(C11)-CHERCHE(" ";C11))&" ("&GAUCHE(C11;CHERCHE(" ";C11))&")";SI(OU(GAUCHE(C11;2)="L'";GAUCHE(C11;2)="D'");DROITE(C11;NBCAR(C11)-2)&" ("&GAUCHE(C11;2)&")";C11))

Même que ça marche!

Cathy
 
François, ça fonctionne:
en B2 f jolie formule : (je remplace les espaces par des * (sinon il va à la ligne et on peut pas bien voir), donc toi tu fais l'inverse.

=SI(OU(GAUCHE(A2;3)="Le*";GAUCHE(A2;3)="La*";GAUCHE(A2;4)="Les*";GAUCHE(A2;4)="Des*";GAUCHE(A2;4)="Aux*";GAUCHE(A2;3)="Un*";GAUCHE(A2;4)="Une*";GAUCHE(A2;3)="Du*");DROITE(A2;NBCAR(A2)-CHERCHE("*";A2))&"*("&GAUCHE(A2;CHERCHE("*";A2))&")";SI(OU(GAUCHE(A2;2)="L'";GAUCHE(A2;2)="D'");DROITE(A2;NBCAR(A2)-2)&"*("&GAUCHE(A2;2)&")";A2))

Cathy
 
Bonjour le forum, bonjour François.

Tu sais quoi? On a oublié un cas : titre commençant par De la ....

donc j'ai rajouté un SI à notre jolie formule, paskel était pas assez longue!

tu remplaces * par espace

=SI(OU(GAUCHE(A2;3)="Le*";GAUCHE(A2;3)="La*";GAUCHE(A2;4)="Les*";GAUCHE(A2;4)="Des*";GAUCHE(A2;4)="Aux*";GAUCHE(A2;3)="Un*";GAUCHE(A2;4)="Une*";GAUCHE(A2;3)="Du*");DROITE(A2;NBCAR(A2)-CHERCHE("*";A2))&"*("&GAUCHE(A2;CHERCHE("*";A2))&")";SI(OU(GAUCHE(A2;2)="L'";GAUCHE(A2;2)="D'");DROITE(A2;NBCAR(A2)-2)&"*("&GAUCHE(A2;2)&")";SI(GAUCHE(A2;6)="De*la*";DROITE(A2;NBCAR(A2)-6)&"*("&GAUCHE(A2;6)&")";A2)))

@+

Cathy
 
- 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

  • Question Question
XL 2021 listbox
Réponses
18
Affichages
503
Réponses
3
Affichages
464
Retour