Tri alphabétique (feuil à feuil)

  • Initiateur de la discussion Rv_mikey
  • Date de début
R

Rv_mikey

Guest
Bonjour à toutes et tous,

Voilà mon soucis :

Sur la feuil1, en colonnes A1 ( sur plusieurs lignes ), j'ai une liste de mots.

J'aimerai que les mots se trient automatiquement sur la feuil2, par colonnes et par ordres alphabétiques c'est à dire que tous les mots commencant par A se mettent dans la colonnes A1, les mots commencant par B dans la colonnes B1 et ainsi de suite....

Je ne sais pas comment faire quoi utiliser...

Quelqu'un aurait-il un début de solution....

Merci par avance....

PS : c'est la première fois que je vois un forum où reigne gentillesse d'esprit, solidarité et respect. Longue vie à ce merveilleux forum.........
 
J

jon

Guest
bonjour


par macro à coup de variable tableau, de loop c'est faisable.

mais je pense que cela serait plus simple en utilisant sql.
il faut dans visual basic editor rajouter une référence à microsoft dao

mon exemple suppose que les données soit de A1 à A10, et que la cellule A1, autremnet dit l'étiquette contienne la valeur "Etiquette"

Private Sub Command_click1()

Dim dbtmp As DAO.Database
Dim tblObj As DAO.TableDef
Dim rs As DAO.Recordset
j = 1: y = 1
Set dbtmp = OpenDatabase(ActiveWorkbook.FullName, False, True, "Excel 8.0;")

DoEvents
Set rng = [A1:A10]
rng.Name = "test"

For i = 97 To 122

j = j + 1
Cells(1, j).Value = Chr(i)
Set rs = dbtmp.OpenRecordset("select * from `test` where Etiquette like '" & Chr(i) & "*'")

While Not rs.EOF

y = 1 'vérifie que cela ne boguera pas ici
For x = 0 To rs.Fields.Count - 1
y = y + 1
'Debug.Print rs.Fields(x).Value
Cells(x + y, j).Value = rs.Fields(x).Value
Next
rs.MoveNext
Wend
Next i
End Sub
Sub d()
 
J

jon

Guest
tiens je suis étonné, en furetant sur le site cokecce.com, je n'ai pu trouvé de filiales ailleurs qu'en europe et amérique du nord.
il faut aller sur quel site pour trouver les filiales d'amerique du sud, d'asie ... ???

merci pour le tuyau
 
R

Rv_mikey

Guest
Salut Jon,

Merci pour le code, je vais essayer cela mais je pense que c'est trop lourd pour mon appli et en plus je ne peux rien ajouter sur cette excel.

Ni y a t il pas plus simple, genre une formule ?

J'ai essayer de mon coté car j'aime me prendre la tête (raisonnablement, bien sur) et je suis arriver a quelque chose avec cette formule mais maintenant il faut que je fasse remonter les cellules pleines en haut de de lignes...

voila ce que j'ai utiliser : =SI(CODE(Feuil1!B2)=68;Feuil1!B2;"") => code dans la cellule Feuil2

J'espere ne pas etre trop complique et trop embetant...

Merci pour ton aide...

PS: regarde par ici tu trouveras surement ce que tu cherches :

http://www.coca-cola.com/worldwide/flashIndex1.html
 
C

Celeda

Guest
Bonjour,

Je suis partie de ton idée de formule. J'ai testé sur plusieurs utilisées cette semaine (selon des demandes du forum et en fonction des réponses de Monique) et je t'ai fabriqué un petit fichier (il y avait de la recherche v mais en cas de doublons, je suis restée ko)

Le probléme c'est que je ne sais pas comment tu veux ramener ta liste de noms alphabétique :

en effet, dans ta feuille 2, en dehors du fait que tu les veuilles en ordre alpha par colonne - existe-il une référence pour les distinguer.
Je pense par exemple, si tu as des doublons dans tes mots ? veux-tu les avoir ou pas ? souhaites- tu connaître l'ordre dans lequel ils sont arrivés - auront-ils un numéro de référence ? ect....
Enfin, je me suis fait un petit délire par plaisir et j'ai trouvé ta demande trés interessante.
Mais je pense que l'on peut encore amélioré le système.

J'ai ensuite copy paste le resultat et je me suis amusée à faire un tri par colonne (là il faut oublier les nos de référence).

Cela ne correspond peut-être pas à ce que tu souhaitais mais en attendant ..........

Bon week-end
Celeda
 

Pièces jointes

  • TriAlpha.zip
    7.4 KB · Affichages: 28
  • TriAlpha.zip
    7.4 KB · Affichages: 24
  • TriAlpha.zip
    7.4 KB · Affichages: 24
R

Rv_mikey

Guest
Salut Celeda,

(Désolé pour la réponse tardive mais gros soucis avec la taille du fichier)

Je suis en train d'étudier ton fichier excel... Je te remercie de t'être penché dessus.
Pour ma part je n'ai pas besoin de n° , référence....etc.... juste des noms...

J'ai reussi à faire ce que je voulais mais j'ai detourné un peu le problême. Il fait ce que je veux mais beaucoup de formule et c'est pas terrible car pour l'instant il va jusqu'à 501 lignes pour le trie.Ce n'est pas encore automatique.....(Plus de 1.3 mo de taille juste avec les formules)

Je joins le fichier pour que vous puissiez voir mon travail. Désolé pour le bordel dans les formules et les codes..... Je l'ai raccourci de beaucoup plus que 30 lignes pour le trie.... Le fichier ne doit pas être trop gros pour le forum. Ainsi je sauvegarde la vie de ce forum....

Voila pour l'instant. Si quelqu'un a une solution pour modifier tout cela, no problem !!

Bye Rv_Mikey
 

Pièces jointes

  • TrieFeuil.zip
    30.2 KB · Affichages: 23
L

LaurentTBT

Guest
Salut Rv_Mikey, Jon, Celeda et les autres.

J'ai trouvé une formule peut-être plus directe que Celeda pour arriver au même résultat intermédiaire qu'elle (Ie feuille "Conso"):
Je mets "A" en Feuil2!A1, "B" en Feuil2!B1....
En Feuil2!A2, ma formule est:
=SI(MAJUSCULE(GAUCHE(Feuil1!$A1)=A$1);Feuil1!$A1;"")

Par le jeux magique des $, il suffit d'étirer cette formule sur les cellules
A3 à Zn, n+1, n étant le nombre de mots.

Reste maintenant à supprimer les cases vides, et pour le moment, je ne vois rien d'autre qu'une macro.
 
L

LaurentTBT

Guest
Je suis allé un peu vite.

j'avais mal lu plus haut. en fait, ma formule est très proche de celle de Rv_Mikey (=SI(CODE(Feuil1!B2)=68;Feuil1!B2;"").
La mienne a un avantage: elle marche à la fois avec les majuscules et les minuscules.
Mais elle a un inconvénient: je dois remplir la ligne 1 avec l'alphabet.

En combinant les 2, on devrait ne plus avoir d'inconvénient du tout, en mettant en A1:
=SI(CODE(MAJUSCULE(GAUCHE(Feuil1!$A1)))=64+COLONNE(A1);Feuil1!$A1;""), puis en étirant cette formule de A1 à Zn.
 
M

Monique

Guest
Bonjour,

Je ne connaissais pas la fonction CODE(), alors j'ai joué avec cette fonction, le fichier de Celeda et la fonction MAJUSCULE() de Laurent.
Le résultat est moins éparpillé, mais le problème n'est pas résolu.

D'autre part, pour ne pas s'embêter à taper les lettres de A à Z, on peut rentrer l'alphabet ou n'importe quel genre de liste dans Excel.
Barre de menus - Outils - Options - Onglet "Listes pers."
Ensuite, il suffira de taper 2 ou 3 lettres et d'étirer.
 

Pièces jointes

  • TriAlpha02.zip
    7.3 KB · Affichages: 38
R

Rv_mikey

Guest
Salut LaurentTBT,

Oui tu as raison, pour les majuscules, je m'en suis aperçu après. Ton code me simplifie le mien. Merci...

Pour les cases vides, j'ai résolu le problême. Avec une macro mais le code est un peu long.

As tu essayé mon fichier ? si oui qu'en penses-tu pour le trie alphabétique par colonnes ?

Je suis en train de modifier mon fichier pour intégrer ton code, et pour essayer de ne pas être obligé de marquer la formule sur chaque ligne et 27 colonnes (alphabet + les chiffres).

@+ Rv_Mikey
 
L

LaurentTBT

Guest
Dans les formules de Monique, je suis largué!!!

En fait, pour ma 2ème version, la fonction GAUCHE n'est plus nécessaire, car elle est inclue dans CODE (Monique avait d'ailleurs rectifié)

Il reste donc:
=SI(CODE(MAJUSCULE(Feuil1!$A1))=64+COLONNE(A1);Feuil1!$A1;""), et il n'y a pas besoin de recopier 26*nbre lignes.

Pour la macro pour supprimer les cases vides:
Je suppose que, comme Celeda, tu fais un tri sur chaque colonne (donc 26 fois)

Le souci qui me vient, c'est que si tu modifie ta liste initiale, il va falloir remettre les formules dans l'ordre initial, et donc en fait écrire une macro de réinitialisation qui remettra les 26*n formules, et là, c'est lourdingue.

Finalement, je crois que le rajout d'une colonne code par Monique reste la solution la plus simple pour le moment.
 
C

Celeda

Guest
Bonjour,

En fait, je suis entrain de jardiner et au lieu de planter mes tournesols, je suis entrain de tomber dans vos formules ;

entre Laurent et Monique et RV. MIckey, je vais dormir moins bête. Surtout la fonction CODE - au début je me demandais de quoi tu parlais Mickey - et je n'ai pas eu la conscience d'aller voir. Avec ta forumle Laurent c'est plus simple et avec l'usage que fait Monique de CODE, ceal semble encore plus simple. C'est vraiment du troubleshooting d'esprit pour un samedi ensoleillé !
Mais j'ai l'impression qu'on est à côté de la plaque avec le fichier de Mickey.

En attendant, avec toutes ces energies mentales on est tombé sur de nouvelles méthodes de formules (que je vais recencer naturellement). Mais je pige pas trop le fichier de Mickey. Je pense qu'il veut vraiment une macro.
Mais qu'est-ce que je suis contente de voir le résultat du ''merge'' de formules ainsi fait !!

Je suis quand même curieuse de voir à quoi cela sert de remonter des mots.....je m'excuse Mickey... mais je pige pas.

Merci Mickey-Laurent et Monique.

Celeda (qui repart planter ses tournesols)
 
L

LaurentTBT

Guest
Finalement, j'ai une macro pas si compliquée que ça a te proposer (voir fichier joint)
 

Pièces jointes

  • TriAlphaTBT.zip
    13.7 KB · Affichages: 26
  • TriAlphaTBT.zip
    13.7 KB · Affichages: 27
  • TriAlphaTBT.zip
    13.7 KB · Affichages: 26
R

Rv_Mikey

Guest
Bonsoir à toutes et tous,

En faite Celeda, remonter les mots (ou noms) me serviront à ma bases de données pour aller plus vite dans les recherches. Un nom en P, je vais à la colonne P et voilà cela évite que je fasse defiler le 65000 lignes pour aller à P.

J'aurais pu faire par une UF mais je voulais voir par une formule. Comme cela j'apprends des codes de formules que je ne connaissais pas. Et apparement cela sert à tous le monde.

Désolé Celeda pour le jardinage, Moi j'étais au travail donc j'avais le temps de me plonger dans excel...


LaurentTBT, ton fichier est cool, je vais l'étudier et l'inclure dans ma base de données

Un grand merci à : Jon, Celeda, LaurentTBT et Monique pour leur participation.

Passer un agréable dimanche.... Rv_Mikey
 
L

LaurentTBT

Guest
Voici la version corrigée:
J'ai finalement trié en ordre croissant, et j'ai aussi remplacé toutes les formules par les valeurs obtenues pour gagner de la place.
En fait, les macros ne sont pas si grosses que cela. J'espère que cela t'iras.
J'ai pas testé avec un nombre très important de mots. ça doit marcher, mais ce sera peut-être un peu long.Dis-moi ce que tu en penses.
 

Pièces jointes

  • TriAlphaTBT.zip
    13.3 KB · Affichages: 23
  • TriAlphaTBT.zip
    13.3 KB · Affichages: 18
  • TriAlphaTBT.zip
    13.3 KB · Affichages: 18

Discussions similaires

Réponses
5
Affichages
382

Statistiques des forums

Discussions
312 492
Messages
2 088 925
Membres
103 984
dernier inscrit
maliko67