> Tous les forums > Forum Bureautique
 Créer par macro un tableau d'anagrammesSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Braxton
  Posté le 04/03/2018 @ 10:58 
Aller en bas de la page 
Petit astucien

Bonjour,
En Excel, comment programmer la construction d'un tableau reprenant toutes les anagrammes d'un mot en faisant appel à une macro?
Les anagrammes devant avoir une longueur définie par l'utilisateur et le mot "source" défini aussi par l'utilisateur.
Chaque lettre de la source n'étant pas utilisée avec répétition.
Exemple :
1. Mot source :
En B1 :par exemple : PARTICULES.
En B2, la longueur de ce mot : 10.
En B3, la longueur souhaitée de toutes les anagrammes, par exemple : 5
En B4, la combinaison de 10 lettres prises 5 à 5, soit 252.
2. Les anagrammes dans un tableau de 5 colonnes et 252 lignes de (C1:G252)

Merci de vous pencher sur le problème...



Modifié par Braxton le 04/03/2018 11:00
Publicité
w36xb2w
 Posté le 04/03/2018 à 11:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour

regarde ici

https://www.excel-downloads.com/threads/combinaison-de-chiffres-ou-lettres-anagrammes.171510/#post-1046929

ici le fichier excel modifié par mes soins maximum de lettre =8 sinon ca dépasse la possibilité des colonnes

http://www.filedropper.com/copiedeanagramme

Pour info avec un smartphone on a tous les anagrammes possibles



Modifié par w36xb2w le 04/03/2018 15:11
Braxton
 Posté le 05/03/2018 à 06:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci w36xb2w pour les informations.
1. Je suis allé voir ton premier lien et ai tenté d'utiliser la programmation de Johnson Trotter. Mon souci est que "Cells(i,j)=Tablo(Item(j)) stoppe la procédure. Comment corriger cela pour que la cellule de la feuille de travail à l'emplacement i,j soit reconnue ?
2. J'ai aussi regardé ta programmation pour tenter de modifier celle de Johnson Trotter ... en allant chercher le mot à "anagrammer" dans la feuille de travail pour le faire passer dans 'Johnson Trotter' plutôt que de travailer avec "33" "44" "55" ... Pas réussi ...
3. Je pense pouvoir arriver à solutionner mon problème par formules dans les cellules du tableur.
Encore merci. Je vais devoir me perfectionner en Visual Basic pour retrouver de l'autonomie.
4. La solution du smartphone ne me convient pas car je dois pouvoir faire subir d'autres modifications aux anagrammes obtenues.
Encore MERCI. Je mets le sujet 'résolu'.

Debrief
 Posté le 05/03/2018 à 09:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Mon souci est que "Cells(i,j)=Tablo(Item(j)) stoppe la procédure

Il faut que tu enlèves le code devant
Public Tablo As Variant
Option Base 1
ou que tu remontes ces déclarations en haut du code.

J'ai aussi regardé ta programmation pour tenter de modifier celle de Johnson Trotter ... en allant chercher le mot à "anagrammer"

Remplace
'Tablo = Array("33", "66", "55", "23")
GenPermutations UBound(Tablo)

par (par exemple)
Dim Reponse As Variant
Dim i As Integer
Reponse = Application.InputBox("Saisissez un mot:", Type:=2)
If VarType(Reponse) = vbBoolean Then Exit Sub
If Len(Reponse) = 0 Then Exit Sub
ReDim Tablo(Len(Reponse))
For i = 1 To Len(Reponse)
Tablo(i) = Mid(Reponse, i, 1)
Next i
Cells.ClearContents
GenPermutations UBound(Tablo)

Cordialement,
D.

Edit:
Si tu veux commencer l'affichage du résultat à partir d'une ligne qui n'est pas la 1ère, remplace
i = 0 'adaptation
par
i = <valeur> 'adaptation où <valeur> = nombre de lignes avant début affichage
pour par exemple ajouter une ligne titre

Si tu veux commencer l'affichage du résultat à partir d'une colonne qui n'est pas la 1ère, remplace
Cells(i, j) = Tablo(Item(j)) ': i = i + 1
par
Cells(i, j + <valeur>) = Tablo(Item(j)) ': i = i + 1 où <valeur> = nombre de colonnes avant début affichage
pour par exemple pour mettre en colonne 1 le mot qui concatène les lettres telles que permutées par l'algorithme:
en A2 =B2&C2&D2&C2& etc... jusqu'au maximum pratique de lettres (encore que dans ce cas, il vaudrait mieux placer la formule via le code VBA qui connait le nombre de lignes et de colonnes générées par les permutations)



Modifié par Debrief le 05/03/2018 09:51
Debrief
 Posté le 05/03/2018 à 09:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Le fichier Permutations de Johnson Trotter.xlsm https://cjoint.com/c/HCfiCOMsiEk

w36xb2w
 Posté le 05/03/2018 à 18:52 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour

En 1989 j'avais un réalisé un logiciel pour anagrammes mais il ne fonctionne plus correctement sur les nouvelles machines

J'avais même commencé a intégrer les mots du dictionnaire et n'afficher que ceux y étant nommés mais c'est trés long

exemple de l'extrait de sortie du mot pirate sans comparaison avec les data du dico



Modifié par w36xb2w le 05/03/2018 18:53
Braxton
 Posté le 06/03/2018 à 12:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour Debrief et W36xb2w,

1. Merci Debrief pour le code. Malheureusement, j'ai sans doute des manques dans mes fichiers programmes car cela plante. Je te recontacterai quand j'aurai essayé de mettre de l'ordre dans tout cela.

2. Pour W36... , je traîne aussi dans l'informatique depuis 1978 et étais excellent à programmer en Basic. Je pense qu'après un bon recyclage, je pourrais aussi programmer le problème et le résoudre. Mais, je suis obstiné et voudrais trouver la solution en Excel.

3. Je travaille une idée ( j'ai numéroté les lettres du mot source...) en Excel à l'aide de formules. Cela fonctionne mais la limite de 65000 lignes m'oblige à plusieurs opérations et cela est très lent. A la fin du processus, il suffirait de ré-attribuer les lettres correspondant aux chiffres qui compose les différents nombres de la solution.

Je reviendrai avec des choses plus précises quand j'aurai eu le temps de faire mes essais.

Encore merci pour l'intérêt que vous portez à mon problème qui n'est pas crucial car relevant uniquement du divertissement...

A bientôt.

w36xb2w
 Posté le 06/03/2018 à 12:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour

On a du commencer la programmation dans les mêmes années et avec les pas de programmes trés limités des 1° calculatrices programmables de TI.

le fichier de Debrief colonnes compactée pour lisibilité des mots



Modifié par w36xb2w le 06/03/2018 12:50
Debrief
 Posté le 06/03/2018 à 14:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour w36xb2w,

Si tu veux avoir des mots en colonne 1 au lieu d'1 lettre par colonne, il faut remplacer l'instruction du code de Johnson Trotter:
Cells(i, j) = Tablo(Item(j)) ': i = i + 1

par
Cells(i, 1).Value = Cells(i, 1).Value & Tablo(Item(j))

D.

Publicité
Debrief
 Posté le 06/03/2018 à 14:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Ou pour avoir les 2, la remplacer par:
Cells(i, j + 1).value = Tablo(Item(j)) ' j + 1 pour décaler d'un colonne (=> commence en colonne B)
Cells(i, 1).Value = Cells(i, 1).Value & Tablo(Item(j))

Debrief
 Posté le 06/03/2018 à 14:52 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour Braxton,

Quelle est ta version d'Excel ?

D.

Braxton
 Posté le 06/03/2018 à 16:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Re-bonjour,

Je viens de ré-installer une suite Microsoft Office 2000. Suis loin d'être à jour...

Quand j'utilise le fichier de Permutations de Johnson Trotter.xlsm https://cjoint.com/c/HCfiCOMsiEk

J'ai un message d'erreur, ... mais je viens de me rendre compte que c'est Open Calc qui ouvre le fichier... d'où problèmes ...

Quand je veux ouvrir avec mon EXCEl 2000, le format n'est pas reconnu...

En attendant, je suis quand même arrivé à un résultat avec mon procédé qui consiste à numéroter les lettres et cela avec mon Excel 2000.

Je vais prendre bonne note de vos considérations concernant le code de Johnson Trotter et essaierai de faire fonctionner cela sur Excel2000, ce qui je pense sera possible.

Encore MERCI pour votre participation éclairée.

Debrief
 Posté le 06/03/2018 à 18:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

En effet Open Calc n'a que peu de chances de l'ouvrir. Pas plus qu"Excel 2000 qui ne connaît pas les fichiers .xlsm.

Voici une version compatible pour Excel 97 - 2003 -> https://cjoint.com/c/HCgrO11YokQ

Si cela ne t'ennuie pas, j'aimerais connaître ta solution à base de formules qui m'intrigue :)

Cordialement,
D.

Debrief
 Posté le 06/03/2018 à 19:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Pour être un peu plus à jour sur Office, tu peux trouver des licences pas cher (10-15€) d'Office 2016 Pro français sur Amazon qui apparaissent parfois dans les Bons Pans de PCA (faut souscrire).
Ce sont des licences OEM avec certaines limitations (1 seul PC pas transmissible sur un autre) mais pour le prix ça vaut la peine.

Braxton
 Posté le 07/03/2018 à 09:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci Debrief pour la version compatible avec Excel 97-2003. Cela fonctionne très bien. Manque juste le critère de la longueur du mot source pour ne pas dépasser le nbr limite de lignes d'Excel.

Pour 'ma' solution, je t'envoie cela par msg privé.

Merci aussi pour les conseils de mise-à-jour.

Il y a des gens "BIENS" sur ce site !

Debrief
 Posté le 07/03/2018 à 15:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour Braxton,

Il n'y a QUE des gens biens sur PCA

Si ce n'est qu'un problème de nombre de lignes, il suffit d'utiliser les autre colonnes... Dans la mesure où nb lignes * nb colonnes est suffisant pour afficher le nombre de permutations.

Juste pour le fun j'ai adapté le code de Johnson Trotter pour utiliser les colonnes utiles en se basant sur la version d'Excel et le mode compatibilité pour les versions >= 2007.
Avec un petit message d'information et une vérification de la capacité d'affichage avant d'exécuter le tout. Pour le calcul du temps de traitement, adapter la constante CPUFactor que j'ai définie pour mon PC.

Fichier -> https://cjoint.com/c/HChoxqVhdep

Cordialement,
D.

Debrief
 Posté le 08/03/2018 à 00:35 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Et comme le traitement s'allonge significativement avec le nombre de lettres, voici une version qui affiche une barre de progression pour patienter -> https://cjoint.com/c/HCjifcKiYq6

J'ai pompé le code sur Internet mais j'ai ramé sur le Userform avant de comprendre qu'il bloquait le traitement et qu'il fallait mettre son attribut ShowModal à False !!



Modifié par Debrief le 09/03/2018 09:05
Publicité
Braxton
 Posté le 08/03/2018 à 08:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Maîtres Debrief et W36xb2w,

J'admire ... et "reclos" ce post.

Debrief
 Posté le 09/03/2018 à 09:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Juste pour terminer, voici un fichier à usage général dédié à la barre de progression en VBA initialement copié d'Internet dont j'ai amélioré et simplifié (à mon sens) l'utilisation -> https://cjoint.com/c/HCjiHVMdin6



Modifié par Debrief le 09/03/2018 09:34
Debrief
 Posté le 12/03/2018 à 12:05 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

@Braxton,

pour info dans la dernière notification des bons plans de PCA de 10h54 ce jour:

Microsoft Office Professionnel 2016 Plus à 12,18 euros
Valable jusqu'au 15 Mars

Un vendeur sur Amazon propose la clé d'activation légale pour Microsoft Office Professionnel 2016 Plus en français à 12,18 €. Cette clé livrée par email vous permettra d'activer Microsoft Office Professionnel 2016 Plus légalement et vous permettra ainsi d'utiliser autant de temps que vous voulez (il s'agit de la version complète et pas d'un abonnement) Word,Excel, PowerPoint, OneNote, Outlook, Publisher et Access 2016 sur un PC. La clé sera à activer sur Office.com où vous pourrez ensuite télécharger toute la suite bureautique.


> Voir l'offre

Cordialement,
D.



Modifié par Debrief le 12/03/2018 12:08
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
Créer un tableau excel avec macro
Créer un nouveau tableau via un lienhypertexte dans excel
creer macro pour recuperer données
Macro pour un tableau de scolarité
ajout de tableau par macro
macro afficher masquer lignes tableau dans word 2010
[Excel 2007] Macro : Sélection d'un tableau selon sa longueur variable
Macro pour créer un Gencode sur Excel - EAN 18
macro pour trier un tableau et effacer les lignes sans saisie
Créer un tableau sous exel
Plus de sujets relatifs à Créer par macro un tableau d''anagrammes
 > Tous les forums > Forum Bureautique