LISTE ALPHABETIQUE SANS ARTICLE

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
 
C

Cathy

Guest
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
 
F

François

Guest
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.
 
P

pat5

Guest
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)
 
C

Cathy

Guest
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
 
F

François

Guest
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
 
C

Cathy

Guest
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
 
C

Cathy

Guest
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
 
C

Cathy

Guest
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
 
C

Cathy

Guest
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
 

Discussions similaires

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 182
dernier inscrit
savio