OVH Cloud OVH Cloud

Création d'une macro dictionnaire inverse sous Excel 2003

13 réponses
Avatar
Jacques N de Guadeloupe
Je désire créer un dictionnaire inverse pour mots croisés mais je n'ai aucune
connaissance en macro. Si cela est réalisable quelqu'un peut-il m'aider ?
Exemple de ce que je recherche : Le mot Excel est traditionnelement classé à
la lettre 'E', je veux pour le classer à la lettre 'L'. Il faut aussi que le
classement tienne compte du nombre de lettre de chaque mot - Merci d'avance
pour votre aide

10 réponses

1 2
Avatar
Modeste
Bonsour®
Jacques N de Guadeloupe wrote:
Je désire créer un dictionnaire inverse pour mots croisés mais je
n'ai aucune connaissance en macro. Si cela est réalisable quelqu'un
peut-il m'aider ? Exemple de ce que je recherche : Le mot Excel est
traditionnelement classé à la lettre 'E', je veux pour le classer à
la lettre 'L'. Il faut aussi que le classement tienne compte du
nombre de lettre de chaque mot - Merci d'avance pour votre aide


un ebauche (2000 mots) en colonne A, aprés à toi d'adapter puis trier

Sub InverseTxt()
For Each cellule In Range("A1:A2000")
If Len(cellule) > 1 Then
cellule.Offset(0, 1) = Len(cellule)
invtxt$ = ""
For i% = 1 To Len(cellule)
invtxt$ = Mid(cellule, i%, 1) & invtxt
Next
cellule.Offset(0, 2) = invtxt$
End If
Next
End Sub

--
n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr
--
Feed Back
http://viadresse.com/?94912042

Avatar
FxM
Je désire créer un dictionnaire inverse pour mots croisés mais je n'ai aucune
connaissance en macro. Si cela est réalisable quelqu'un peut-il m'aider ?
Exemple de ce que je recherche : Le mot Excel est traditionnelement classé à
la lettre 'E', je veux pour le classer à la lettre 'L'. Il faut aussi que le
classement tienne compte du nombre de lettre de chaque mot - Merci d'avance
pour votre aide



Bonjour,

Question 1 :
Sous quelle forme sont les mots en ordre normal ?
(dans une feuille Excel, dans plusieurs, en lignes, en colonnes, dans un
ou plusieurs fichiers texte, etc, ...)

Question 2 :
pourriez-vous donner un exemple de ce que vous souhaitez réellement
(cela concerne principalement le "tenir compte du nombre de lettres")

Question 3 :
Ne serait-il pas plus simple d'acquérir un dictionnaire pour les mots
croisés où ce travail a déjà été fait ? (avis perso)

@+
FxM

Avatar
Jacques N de Guadeloupe

Je désire créer un dictionnaire inverse pour mots croisés mais je n'ai aucune
connaissance en macro. Si cela est réalisable quelqu'un peut-il m'aider ?
Exemple de ce que je recherche : Le mot Excel est traditionnelement classé à
la lettre 'E', je veux pour le classer à la lettre 'L'. Il faut aussi que le
classement tienne compte du nombre de lettre de chaque mot - Merci d'avance
pour votre aide



Bonjour,

Question 1 :
Sous quelle forme sont les mots en ordre normal ?
(dans une feuille Excel, dans plusieurs, en lignes, en colonnes, dans un
ou plusieurs fichiers texte, etc, ...)

Question 2 :
pourriez-vous donner un exemple de ce que vous souhaitez réellement
(cela concerne principalement le "tenir compte du nombre de lettres")

Question 3 :
Ne serait-il pas plus simple d'acquérir un dictionnaire pour les mots
croisés où ce travail a déjà été fait ? (avis perso)

@+
FxM

Salut FxM


Je commencerais par te répondre à la question N°3
Ta remarque est pertinente et je te signale que je piossède déjà ce genre de
dico depuis plus de 30 ans mais il commence à être fatigué et il manque
parfois qq nouveaux mots (c'est normal). Un ouvrage perso te permet de le
présenter comme tu le désires.

Question N° 1
Les mots sont dans dans une seule colonne (pour le moment) et il y a un
fichier par longueur de mot. J'ai donc des fichiers de 2 lettres à 43 lettres.

Question N°2
Chaque fichier est, pour le moment classé par ordre alphabétique classique.
Je veux pouvoir faire le même classement en commençant par la dernière lettre.
C'est-à-dire que chaque fichier contient des mots ayant le même nombre de
lettres classé normalement et je veux pouvoir dans chaque fichier faire ce
classement inverse. Chaque fichier est indépendant. J'ai fais un fichier
'2Lettres', un fichier '3Lettres', et ainsi de suite jusqu'à un fichier
'43Lettres'

J'espère avoir été assez clair. Si non n'hésite pas à me demander des
précisions . Encore merci pour ta patience. Et qui s'est, peut-etre que les
concepteur de Excel intégreront ce genre de classement en option dans leur
programme ?


Avatar
Jacques N de Guadeloupe

Bonsour®
Jacques N de Guadeloupe wrote:
Je désire créer un dictionnaire inverse pour mots croisés mais je
n'ai aucune connaissance en macro. Si cela est réalisable quelqu'un
peut-il m'aider ? Exemple de ce que je recherche : Le mot Excel est
traditionnelement classé à la lettre 'E', je veux pour le classer à
la lettre 'L'. Il faut aussi que le classement tienne compte du
nombre de lettre de chaque mot - Merci d'avance pour votre aide


un ebauche (2000 mots) en colonne A, aprés à toi d'adapter puis trier

Sub InverseTxt()
For Each cellule In Range("A1:A2000")
If Len(cellule) > 1 Then
cellule.Offset(0, 1) = Len(cellule)
invtxt$ = ""
For i% = 1 To Len(cellule)
invtxt$ = Mid(cellule, i%, 1) & invtxt
Next
cellule.Offset(0, 2) = invtxt$
End If
Next
End Sub

--
n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr
--
Feed Back
http://viadresse.com/?94912042


Je vais tester ce que tu m'a envoyé. Je suppose qu'il suffir de changer la valeur de la Variable 'A2000'. La diminuer où l'augmenter permet ainsi de l'adapter au nombre de mots dans une colonne d'un fichier donné.
Encore Merci et Bonne journée à toi

Jacques


Avatar
FxM
Bonsoir Jacques,

Un exemple reprenant des fichiers de mots tirés de ABU :
http://s6.yousendit.com/d.aspx?id=1YJV6DQ9ER1HZ3L23DM94VCIAP

A tester et faire évoluer au besoin.
Fichier Excel (6546 kb) zippé (1 614 kb)

@+
FxM
Avatar
Jacques de Guadeloupe
--
A tous et toutes je souhaite une agréable journée
A+
Jacques



Bonsoir Jacques,

Un exemple reprenant des fichiers de mots tirés de ABU :
http://s6.yousendit.com/d.aspx?id=1YJV6DQ9ER1HZ3L23DM94VCIAP

A tester et faire évoluer au besoin.
Fichier Excel (6546 kb) zippé (1 614 kb)

@+
FxM

Salut FxM


Je suis allé sur le site dont tu m'as donné les coordonnées. C'est bien mais
là mes ennuis ont commencé car ce site est intégralement en anglais.
Devant un texte en anglais je suis complètement paumé (je ne connais pas un
mot d'anglais !) alors je n'ai pas pu l'utiliser.
Une idée me vient à l'instant : Est-ce que sur Google j'ai des possibilités
de trouver un petit logiciel correspondant à mes besoins ?
C'est dommage que je n'ai pas pu exploité la piste que tu m'avais indiqué.
Je regrette de t'avoir donné tout ce travail pour rien a cause de ma
méconnaissance de la langue

Bonne journée
A+

Jacques de Guadeloupe

Avatar
Jacques de Guadeloupe
Salut FxM

Je te remercie de m'avoir indiquer ce site et je l'ai utilisé immédiatement.
Là mes ennuis ont commence puisque tout est écrit en anglais et JE NE
CONNAIS PAS l'anglais.
Je regrette mais c'est pour moi pire que de me retrouver dans un labyrinthe
dont le chemin changerait constamment de place !
Je n'abandonne pas pour autant ma quête. Des obstacles, il y en a déjà eu et
il y en aura encore mais je tiens à y arriver
--
A tous et toutes je souhaite une agréable journée
A+
Jacques



Bonsoir Jacques,

Un exemple reprenant des fichiers de mots tirés de ABU :
http://s6.yousendit.com/d.aspx?id=1YJV6DQ9ER1HZ3L23DM94VCIAP

A tester et faire évoluer au besoin.
Fichier Excel (6546 kb) zippé (1 614 kb)

@+
FxM



Avatar
Francois
Salut FxM

Je te remercie de m'avoir indiquer ce site et je l'ai utilisé immédiatement.
Là mes ennuis ont commence puisque tout est écrit en anglais et JE NE
CONNAIS PAS l'anglais.



Bonjour Jacques,

FxM ne semble pas être sur MPFE en ce moment... donc je t'indique que le
site qu'il te donne est celui ou il a stocké un classeur Excel qui
répond à ta demande. C'est juste un truc comme Cjoint mais la différence
est que l'on peut y mettre des fichiers importants.

Va sur l'URL qu'il t'a donnée et cliques sur "Download now" en dessous
de dico_012.zip ou attends 5 secondes et le télé chargement du classeur
zippé commencera.

Tu vas voir, ce que te proposes FxM est assez impressionnant.

--
François L

Avatar
Jacques de Guadeloupe
Salut François,

J'ai fait ce que tu m'avais dit et c'est VRAIMENT impressionnant.
Bien que cela ne soit pas tout à fait ce que j'attendais c'est très utile et
je compte bien l'utiliser.
J'aimerais avoir qq infos supplémentaires.
Si je rajoute un mot est-ce moi qui dois le transcrire à l'envers où
y-a-t-il une commande de macro à activer ?

Jacques
--
A tous et toutes je souhaite une agréable journée
A+
Jacques



Salut FxM

Je te remercie de m'avoir indiquer ce site et je l'ai utilisé immédiatement.
Là mes ennuis ont commence puisque tout est écrit en anglais et JE NE
CONNAIS PAS l'anglais.



Bonjour Jacques,

FxM ne semble pas être sur MPFE en ce moment... donc je t'indique que le
site qu'il te donne est celui ou il a stocké un classeur Excel qui
répond à ta demande. C'est juste un truc comme Cjoint mais la différence
est que l'on peut y mettre des fichiers importants.

Va sur l'URL qu'il t'a donnée et cliques sur "Download now" en dessous
de dico_012.zip ou attends 5 secondes et le télé chargement du classeur
zippé commencera.

Tu vas voir, ce que te proposes FxM est assez impressionnant.

--
François L




Avatar
FxM
Salut François,

J'ai fait ce que tu m'avais dit et c'est VRAIMENT impressionnant.
Bien que cela ne soit pas tout à fait ce que j'attendais c'est très utile et
je compte bien l'utiliser.
J'aimerais avoir qq infos supplémentaires.
Si je rajoute un mot est-ce moi qui dois le transcrire à l'envers où
y-a-t-il une commande de macro à activer ?

Jacques



Bonsoir Jacques,

Si tu souhaites rajouter un mot :
- remplace la macro1() par macro2() ci-dessous,
[cette macro ne doit comporter aucune ligne coupée, montrée en rouge!]
- ajoute ton mot dans la feuille qui va bien (celle dont le nom est la
première lettre du mot),
- relance la macro2

Cette version :
- efface les feuilles dont le nom est numérique
- trie les mots dans les feuilles alphanumériques
- efface les éventuels mots en doublons
- trie les mots selon leur longueur et crée les feuilles si nécessaire
- trie les feuilles selon leur nom (d'où 02 pour les mots de 2 lettres).

Si tu souhaites un autre format d'entrée ou de sortie, il te faudrait
indiquer un exemple suffisamment explicite ... et rien n'est impossible :o)

@+
FxM


Sub Macro2()
Const Cell_Depart As String = "A1"
For Each sht In Sheets
If IsNumeric(sht.Name) Then
Application.DisplayAlerts = False
sht.Delete
Application.DisplayAlerts = True
Else
sht.Activate
ActiveSheet.Range("A1").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending,
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
J = 0
Col = Range(Cell_Depart).Column
Set Fin = Range(Cell_Depart).End(xlDown)(2)
On Error Resume Next
Do
I = J + 1
J = Range(Cells(I, 1), Fin).ColumnDifferences(Cells(I, 1))(0).Row
If J > I Then Range(Cells(I + 1, 1), Cells(J, 1)).ClearContents
Loop Until Err
'Stop
ActiveSheet.Range("A1:A" & I).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending,
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
End If
Next sht

For Each sht In Sheets
sht.Activate
For a = 1 To sht.Range("A65536").End(xlUp).Row
lg = Len(sht.Cells(a, 1).Text)
If lg <> 0 Then
lg = Format(Len(sht.Cells(a, 1).Text), "00")
On Error Resume Next
lst = Sheets("lg=" & lg).Range("A65536").End(xlUp).Row + 1
kk = Err.Number
If Err.Number > 0 Then
On Error GoTo 0
new_sheet = Sheets.Add(After:=Worksheets(Worksheets.Count)).Name
Sheets(new_sheet).Name = "lg=" & Format(lg, "00")
End If
On Error GoTo 0
Err.Clear
DoEvents
lst = Sheets("lg=" & Format(lg,
"00")).Range("A65536").End(xlUp).Row + 1
Sheets("lg=" & Format(lg, "00")).Cells(lst, 1) = sht.Cells(a, 1).Text
End If
Next a
Next sht

For Each sht In Sheets
sht.Name = Application.Substitute(sht.Name, "lg=", "")
Next sht

For Each sht In Sheets
sht.Activate
If IsNumeric(sht.Name) Then
deb = 2: Fin = sht.Range("A65536").End(xlUp).Row
For a = deb To Fin
sht.Cells(a, 2) = StrReverse(sht.Cells(a, 1))
Next a
sht.Range("A1:B" & Fin).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending,
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom
Range("A1").Select
End If
Next sht

For Each x In ActiveWorkbook.Sheets
For I = 2 To ActiveWorkbook.Sheets.Count
If Sheets(I - 1).Name > Sheets(I).Name Then
Sheets(I - 1).Move After:=Sheets(I)
End If
Next I
Next x

End Sub

1 2