[VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

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 !

Staple1600

XLDnaute Barbatruc
Bonsoir


Suite à un post de Brigitte dans le salon


Je cherche à créer une macro qui aura pour but de générer dans la colonne A d'une feuille une liste de caractères (mots) suivant un schéma indiquer en A1

Exempe: je saisis CV CVVC VCC CVVV

Et une liste se crée ( normalement quelque part dans cet liste apparaitra

LE CIEL EST BLEU

Qui pourrait m'aider ,svp?

Ce que j'ai déjà (mais comment gérer les doublons
Code:
tab_voy = Split("a/e/i/o/u/y", "/")
'pour générer un voyelle
tab_voy(Int(Rnd * 5))
'pour générer un consonne
Cells(i, 1) =  Mid("bcdfghjklmnpqrstvwxz", Int(Rnd * 20) + 1, 1)
 
Dernière édition:
Re : [VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

Re

Oui ça semble être ca

Mais je séche pour transcrire en macro, j'arrive à genèrer toutes permutations des voyelles (avec le code actuel de Walkenbach)

mais je voudrais pouvoir choisir le nombre d'élément

VV --->30
VVV ---->120
VVVV --->360
VVVVV --->720
VVVVVV --->720
 
Re : [VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

Hello Staple, Skoobi, Ya_V_Ka,Tibo, Chris²11,Brigitte,Bruno,JC,Soenda, Kjin,

N' étant pas très doué pour les logiques mathématiques,

Je viens des tester une solution avec ADO et l'opérateur Like sur une base de ~=240000 mots (.txt) en minuscules, qui semble fonctionner.

Si quelqu'un le veut envoyez moi votre adr courriel en MP

Le fichier base zipper pèse 652 ko. Si quelqu'un le veut.

Quant au code, le voici

(Précision importante: A1=CV, B1=CVVC, C1=VCC, D1=CVVV)
Code:
Option Explicit
Const C = "[bcdfghjklmnpqrstvwxz]"
Const V = "[aeiouyéèëéêôàâûùï]"
Sub ListerMots()
    Dim i As Integer
 
    Do While Cells(1, i + 1).Text <> vbNullString
        ExtraireMots Cells(1, i + 1)
    i = i + 1
    Loop
End Sub
 
Sub ExtraireMots(Cellule As Range)
    Dim cnx As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim sql As String, masque As String
    Dim i As Byte
 
    If Cellule.Cells.Count > 1 Then Set Cellule = Cellule(1)
 
    For i = 1 To Len(Cellule(1))
        masque = Replace(Replace(Cellule(1), "C", C), "V", V)
    Next
 
    Range(Cellule(2, 1), Cellule(2, 1).End(xlDown)).Clear
 
    cnx.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                           & "Data Source=" & ThisWorkbook.Path & ";" _
                           & "Extended Properties='text;HDR=Yes;FMT=Delimited';"
 
    cnx.CursorLocation = adUseClient
    cnx.Open
    rst.Open "SELECT * FROM [Mots.txt] WHERE MOTS Like '" & masque & "';", cnx, adOpenStatic, adLockReadOnly
    If rst.State = adStateOpen Then
        Cellule(2, 1).CopyFromRecordset rst
        rst.Close
    End If
    cnx.Close
End Sub

A plus
 
Dernière modification par un modérateur:
Re : [VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

Bonjour Hasco

Merci de ta contribution.
(Ta solution répond à cette question: lister tous les mots correspondant à un masque en les extrayant d'un fichier contentant des mots valides)
Maintenant pour cette autre question,:
• Générer la liste de toutes les permutations (incluant les doublons ou pas) d'une chaine de caractères respectant un masque
Pour reprendre en se basant sur les exemples précédent

Si en A1: CV
la macro génère tous les permutations d'une chaine commençant par une consonne et finissant par une voyelle.

Les diverses macros postées dans ce fil me permettent beaucoup de choses, mais je n'arrive pas encore à les adapter pour ce but.
 
Re : [VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

Re Staple,

Tu as raison, ma solution ne répond pas entièrement à ton besoin, mais je pense que cela peut contribuer à limiter les résultats en incluant uniquement dans les combinaisons, les mots qui on un sens.

L'idée:

Extraire tous les mots correspondants aux différents masques (ex:VC CCVVC) ce qui nous donne 183 mots à combiner.

D' ailleurs pour réduire le nombre de mots il faut modifier la requête en ajoutant la clause DISTINCT. Car apparement il y a des doublons.

Code:
rst.Open "SELECT DISTINCT * FROM [Mots.txt] WHERE MOTS Like '" & masque & "';", cnx, adOpenStatic, adLockReadOnly

Je continue dans ce sens bien que mes capacités à comprendre les formules combinatoires soient limitées.


A bientôt
 
Re : [VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

Re



Hasco: je me suis permis de splitter ton fichier Mots.txt 😉

Pour ceux qui veulent tester le classeur d'Hasco

Mode d'emploi:
• 1) Créer un répertoire à l'emplacement de votre choix
(sur le Bureau par exemple)

• 2) Décompresser les 4fichiers zip dans ce répertoire

• 3) * Double-cliquez sur hasco.bat
(* ceci est à faire une seule fois
c'est pour reconstituer le fichier Mots.txt en un seul morceau)

• 4) Double-cliquez sur MasqueMots.xls

Hasco: (bis) ton classeur est tip top , mais plus je cogite sur ce fil plus je cherche à compliquer la chose 😉

PS: selon votre version d'Excel, il faudra cocher la bonne référence ADO
dans VBE
 

Pièces jointes

Dernière édition:
Re : [VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

Hihi staple,

Le fichier que je t'ai passé était la concaténation de 26 fichiers Texte, un par lettre de l'alphabet. Le voilà en plié en quatre. Et moi aussi.

A+++
 
Re : [VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

Re,

salut Ges 🙂,

aurions-nous eu toi et moi eu la même approche? 😉
Staple, je suis partie du fichier ODS4 de JC pour refaire une nouvelle BDD (dans le fichier excel)
Le fichier est malheureusement trop gros (avec toute la BDD).
Le voici.
 
Re : [VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

Skoobi,

Chapeau, c'est vraiment le type de truc que je suis incapable de pondre aussi j'ai préféré ADO.

Je vais examiner ça de plus près pour comprendre(si j'peux)

A+++
 
Re : [VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

Skoobi,

Chapeau, c'est vraiment le type de truc que je suis incapable de pondre aussi j'ai préféré ADO.

Je vais examiner ça de plus près pour comprendre(si j'peux)

A+++

Et bin comme ça on est complémentaire Ges car tu vois moi ADO je connais pas du tout! 😉

Au fait, il faut uniquement regarder la procédure "Macro1".
 
Re : [VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

Skoobi,

Je vois, j'ai compris, en fait pas si compliqué que cela en a l'air.
En tous cas c'est plus rapide qu'ADO.

A+++ et merci à Staple pour cette occasion de nous stimuler le neurone.😀
 
Re : [VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

Je vois, j'ai compris, en fait pas si compliqué que cela en a l'air.

Oui, c'est vrai, des fois on cherche midi à 14 h et en fait c'est pas trop compliqué.
En tout cas, sans une base de données, je crois que c'est insurmontable.
Au fait JM, ce test marche pas mal je trouve:😀

CV CVCVV CVC CVCCVVVC CVCVCCVC CVC CVVCVVCCC VCCVCVC 😉
 
Dernière édition:
Re : [VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

Bonsoir


Effectivement Bravos Messieurs Hasco et Skoobi, JCGL, BrunoM45, Kjin, soenda
(pour vos réalisations)

Du bien bel ouvrage que voilà.

Maintenant toujours dans ma volonté de nous triturer les neurones
(j'ai bien dit les neurones 😀 pas CV CVCCVVCV....)

Si l'on prend une phrase donnée:

Ex: Excel est un tableur

--> VCCVC VCC VC CVCCVVC

Peut-on prédire quand cette chaine de caractère va apparaitre lorsque
seront générées les permutations

(une permutation par ligne)

Quelle formule mathématique utiliser ?

Avis aux matheux du forum.


PS: Brigitte, tu peux être fière de ton post dans le salon car tu nous a emmené vers des rivages
vbaistiques des plus attrayants 😉
et je suggère que tu sois élue présidente de la LCR
 
Dernière édition:
Re : [VBA from Brigitte] Générer des séquences de lettres (voyelles/consonnes) ?

Bonsoir,

Juste un mot : Whouaouuuu 😱

On peut dire que là, personne ne fait partie de la LCR des FO
Vu, comment ça à tourné !

Bon ben P'tites couettes, je ne sais pas si toi et Sylvie, vous allez avoir beaucoup d'adhérents 😀

A+
 
- 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
Retour