Bonjour à toutes et tous
J'ai dans une cellule A1 un mot ex : bon
je souhaite qu'en A2 j'ai automatiquement "nob" puis en A3 "onb" ect.
En fait, il s'agit de saisir un mot en A1, puis avoir dans les cellules
suivantes en A toutes les combinaisons possibles du mot.
Merci beaucoup
Vince
Bonjour à toutes et tous
J'ai dans une cellule A1 un mot ex : bon
je souhaite qu'en A2 j'ai automatiquement "nob" puis en A3 "onb" ect.
En fait, il s'agit de saisir un mot en A1, puis avoir dans les cellules
suivantes en A toutes les combinaisons possibles du mot.
Merci beaucoup
Vince
Bonjour à toutes et tous
J'ai dans une cellule A1 un mot ex : bon
je souhaite qu'en A2 j'ai automatiquement "nob" puis en A3 "onb" ect.
En fait, il s'agit de saisir un mot en A1, puis avoir dans les cellules
suivantes en A toutes les combinaisons possibles du mot.
Merci beaucoup
Vince
Bonjour,
Voici un code permettant de gérer jusqu'à 5 lettres.
Méfie-toi, certaines lignes risquent d'être coupées.
Private Sub Permutations()
Dim NbCar As Integer, i As Integer, j As Integer, k As Integer, l As
Integer, m As Integer
Dim Mot As String, Ref1 As Range, Ref2 As String, Ref3 As String, Ref4 As
String
Dim Ref5 As String, Decal As Integer
Set Ref1 = Range("A1")
NbCar = Len(Ref1)
For i = 1 To NbCar
'Ref1 = Range("A1")
For j = 1 To NbCar - 1
Ref2 = Application.WorksheetFunction.Substitute(Ref1,
Mid(Ref1, i, 1), "")
If NbCar = 2 Then
Ref1.Offset(0, Decal) = Mid(Ref1, i, 1) &
Mid(Ref2, j, 1)
Decal = Decal + 1
End If
For k = 1 To NbCar - 2
Ref3 Application.WorksheetFunction.Substitute(Ref2, Mid(Ref2, j, 1), "")
If NbCar = 3 Then
Ref1.Offset(0, Decal) = Mid(Ref1, i,
1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1)
Decal = Decal + 1
End If
For l = 1 To NbCar - 3
Ref4 Application.WorksheetFunction.Substitute(Ref3, Mid(Ref3, k, 1), "")
If NbCar = 4 Then
Ref1.Offset(0, Decal) Mid(Ref1, i, 1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1) & Mid(Ref4,
l, 1)
Decal = Decal + 1
End If
For m = 1 To NbCar - 4
Ref5 Application.WorksheetFunction.Substitute(Ref4, Mid(Ref4, l, 1), "")
If NbCar = 5 Then
Ref1.Offset(0, Decal)
= Mid(Ref1, i, 1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1) &
Mid(Ref4, l, 1) & Mid(Ref5, m, 1)
Decal = Decal + 1
End If
Next m
Next l
Next k
Next j
Next i
End Sub
Attention, le nombre de mots possibles augmente très vite : le nombre
de permutations de n éléments pris dans un ensemble de n correspond
à Factorielle(n), soit 24 pour 4 lettres, 120 pour 5 lettres, ...
40 320 pour 8 lettres, 3 628 800 pour 10 lettres, ...
Je me suis arrêté à 5 car au-delà, Excel n'offre pas assez de coloones
toutes les variantes.
NB - Dans l'exemple, les mots apparaissent sur la ligne A. Pour les avoir
en colonne 1, il faut remplacer les occurrences de
Ref1.Offset(0, Decal) >
par
Ref1.Offset(Decal) >
Moyennant adaptation, cela permettrait d'aller jusqu'à 8 lettres.
En pratique le nombre de permutations est + faible, car dès qu'1 lettre
(ou +) apparaît plus d'1 fois dans le mot, cela entraîne des doublons.
Ce n'est pas géré ici.Bonjour à toutes et tous
J'ai dans une cellule A1 un mot ex : bon
je souhaite qu'en A2 j'ai automatiquement "nob" puis en A3 "onb" ect.
En fait, il s'agit de saisir un mot en A1, puis avoir dans les cellules
suivantes en A toutes les combinaisons possibles du mot.
Merci beaucoup
Vince
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonjour,
Voici un code permettant de gérer jusqu'à 5 lettres.
Méfie-toi, certaines lignes risquent d'être coupées.
Private Sub Permutations()
Dim NbCar As Integer, i As Integer, j As Integer, k As Integer, l As
Integer, m As Integer
Dim Mot As String, Ref1 As Range, Ref2 As String, Ref3 As String, Ref4 As
String
Dim Ref5 As String, Decal As Integer
Set Ref1 = Range("A1")
NbCar = Len(Ref1)
For i = 1 To NbCar
'Ref1 = Range("A1")
For j = 1 To NbCar - 1
Ref2 = Application.WorksheetFunction.Substitute(Ref1,
Mid(Ref1, i, 1), "")
If NbCar = 2 Then
Ref1.Offset(0, Decal) = Mid(Ref1, i, 1) &
Mid(Ref2, j, 1)
Decal = Decal + 1
End If
For k = 1 To NbCar - 2
Ref3 Application.WorksheetFunction.Substitute(Ref2, Mid(Ref2, j, 1), "")
If NbCar = 3 Then
Ref1.Offset(0, Decal) = Mid(Ref1, i,
1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1)
Decal = Decal + 1
End If
For l = 1 To NbCar - 3
Ref4 Application.WorksheetFunction.Substitute(Ref3, Mid(Ref3, k, 1), "")
If NbCar = 4 Then
Ref1.Offset(0, Decal) Mid(Ref1, i, 1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1) & Mid(Ref4,
l, 1)
Decal = Decal + 1
End If
For m = 1 To NbCar - 4
Ref5 Application.WorksheetFunction.Substitute(Ref4, Mid(Ref4, l, 1), "")
If NbCar = 5 Then
Ref1.Offset(0, Decal)
= Mid(Ref1, i, 1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1) &
Mid(Ref4, l, 1) & Mid(Ref5, m, 1)
Decal = Decal + 1
End If
Next m
Next l
Next k
Next j
Next i
End Sub
Attention, le nombre de mots possibles augmente très vite : le nombre
de permutations de n éléments pris dans un ensemble de n correspond
à Factorielle(n), soit 24 pour 4 lettres, 120 pour 5 lettres, ...
40 320 pour 8 lettres, 3 628 800 pour 10 lettres, ...
Je me suis arrêté à 5 car au-delà, Excel n'offre pas assez de coloones
toutes les variantes.
NB - Dans l'exemple, les mots apparaissent sur la ligne A. Pour les avoir
en colonne 1, il faut remplacer les occurrences de
Ref1.Offset(0, Decal) >
par
Ref1.Offset(Decal) >
Moyennant adaptation, cela permettrait d'aller jusqu'à 8 lettres.
En pratique le nombre de permutations est + faible, car dès qu'1 lettre
(ou +) apparaît plus d'1 fois dans le mot, cela entraîne des doublons.
Ce n'est pas géré ici.
Bonjour à toutes et tous
J'ai dans une cellule A1 un mot ex : bon
je souhaite qu'en A2 j'ai automatiquement "nob" puis en A3 "onb" ect.
En fait, il s'agit de saisir un mot en A1, puis avoir dans les cellules
suivantes en A toutes les combinaisons possibles du mot.
Merci beaucoup
Vince
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonjour,
Voici un code permettant de gérer jusqu'à 5 lettres.
Méfie-toi, certaines lignes risquent d'être coupées.
Private Sub Permutations()
Dim NbCar As Integer, i As Integer, j As Integer, k As Integer, l As
Integer, m As Integer
Dim Mot As String, Ref1 As Range, Ref2 As String, Ref3 As String, Ref4 As
String
Dim Ref5 As String, Decal As Integer
Set Ref1 = Range("A1")
NbCar = Len(Ref1)
For i = 1 To NbCar
'Ref1 = Range("A1")
For j = 1 To NbCar - 1
Ref2 = Application.WorksheetFunction.Substitute(Ref1,
Mid(Ref1, i, 1), "")
If NbCar = 2 Then
Ref1.Offset(0, Decal) = Mid(Ref1, i, 1) &
Mid(Ref2, j, 1)
Decal = Decal + 1
End If
For k = 1 To NbCar - 2
Ref3 Application.WorksheetFunction.Substitute(Ref2, Mid(Ref2, j, 1), "")
If NbCar = 3 Then
Ref1.Offset(0, Decal) = Mid(Ref1, i,
1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1)
Decal = Decal + 1
End If
For l = 1 To NbCar - 3
Ref4 Application.WorksheetFunction.Substitute(Ref3, Mid(Ref3, k, 1), "")
If NbCar = 4 Then
Ref1.Offset(0, Decal) Mid(Ref1, i, 1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1) & Mid(Ref4,
l, 1)
Decal = Decal + 1
End If
For m = 1 To NbCar - 4
Ref5 Application.WorksheetFunction.Substitute(Ref4, Mid(Ref4, l, 1), "")
If NbCar = 5 Then
Ref1.Offset(0, Decal)
= Mid(Ref1, i, 1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1) &
Mid(Ref4, l, 1) & Mid(Ref5, m, 1)
Decal = Decal + 1
End If
Next m
Next l
Next k
Next j
Next i
End Sub
Attention, le nombre de mots possibles augmente très vite : le nombre
de permutations de n éléments pris dans un ensemble de n correspond
à Factorielle(n), soit 24 pour 4 lettres, 120 pour 5 lettres, ...
40 320 pour 8 lettres, 3 628 800 pour 10 lettres, ...
Je me suis arrêté à 5 car au-delà, Excel n'offre pas assez de coloones
toutes les variantes.
NB - Dans l'exemple, les mots apparaissent sur la ligne A. Pour les avoir
en colonne 1, il faut remplacer les occurrences de
Ref1.Offset(0, Decal) >
par
Ref1.Offset(Decal) >
Moyennant adaptation, cela permettrait d'aller jusqu'à 8 lettres.
En pratique le nombre de permutations est + faible, car dès qu'1 lettre
(ou +) apparaît plus d'1 fois dans le mot, cela entraîne des doublons.
Ce n'est pas géré ici.Bonjour à toutes et tous
J'ai dans une cellule A1 un mot ex : bon
je souhaite qu'en A2 j'ai automatiquement "nob" puis en A3 "onb" ect.
En fait, il s'agit de saisir un mot en A1, puis avoir dans les cellules
suivantes en A toutes les combinaisons possibles du mot.
Merci beaucoup
Vince
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Merci Michel,
Cela me convient très bien.
Vince
"Michel Gaboly" a écrit dans le message de
news:Bonjour,
Voici un code permettant de gérer jusqu'à 5 lettres.
Méfie-toi, certaines lignes risquent d'être coupées.
Private Sub Permutations()
Dim NbCar As Integer, i As Integer, j As Integer, k As Integer, l As
Integer, m As IntegerDim Mot As String, Ref1 As Range, Ref2 As String, Ref3 As String, Ref4 As
StringDim Ref5 As String, Decal As Integer
Set Ref1 = Range("A1")
NbCar = Len(Ref1)
For i = 1 To NbCar
'Ref1 = Range("A1")
For j = 1 To NbCar - 1
Ref2 = Application.WorksheetFunction.Substitute(Ref1,
Mid(Ref1, i, 1), "")If NbCar = 2 Then
Ref1.Offset(0, Decal) = Mid(Ref1, i, 1) &
Mid(Ref2, j, 1)Decal = Decal + 1
End If
For k = 1 To NbCar - 2
Ref3 > Application.WorksheetFunction.Substitute(Ref2, Mid(Ref2, j, 1), "")
If NbCar = 3 Then
Ref1.Offset(0, Decal) = Mid(Ref1, i,
1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1)Decal = Decal + 1
End If
For l = 1 To NbCar - 3
Ref4 > Application.WorksheetFunction.Substitute(Ref3, Mid(Ref3, k, 1), "")
If NbCar = 4 Then
Ref1.Offset(0, Decal) > Mid(Ref1, i, 1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1) & Mid(Ref4,
l, 1)
Decal = Decal + 1
End If
For m = 1 To NbCar - 4
Ref5 > Application.WorksheetFunction.Substitute(Ref4, Mid(Ref4, l, 1), "")
If NbCar = 5 Then
Ref1.Offset(0, Decal)
= Mid(Ref1, i, 1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1) &Mid(Ref4, l, 1) & Mid(Ref5, m, 1)
Decal = Decal + 1
End If
Next m
Next l
Next k
Next j
Next i
End Sub
Attention, le nombre de mots possibles augmente très vite : le nombre
de permutations de n éléments pris dans un ensemble de n correspond
à Factorielle(n), soit 24 pour 4 lettres, 120 pour 5 lettres, ...
40 320 pour 8 lettres, 3 628 800 pour 10 lettres, ...
Je me suis arrêté à 5 car au-delà, Excel n'offre pas assez de coloones
toutes les variantes.
NB - Dans l'exemple, les mots apparaissent sur la ligne A. Pour les avoir
en colonne 1, il faut remplacer les occurrences de
Ref1.Offset(0, Decal) > >
par
Ref1.Offset(Decal) > >
Moyennant adaptation, cela permettrait d'aller jusqu'à 8 lettres.
En pratique le nombre de permutations est + faible, car dès qu'1 lettre
(ou +) apparaît plus d'1 fois dans le mot, cela entraîne des doublons.
Ce n'est pas géré ici.Bonjour à toutes et tous
J'ai dans une cellule A1 un mot ex : bon
je souhaite qu'en A2 j'ai automatiquement "nob" puis en A3 "onb" ect.
En fait, il s'agit de saisir un mot en A1, puis avoir dans les cellules
suivantes en A toutes les combinaisons possibles du mot.
Merci beaucoup
Vince
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Merci Michel,
Cela me convient très bien.
Vince
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de
news:4040B9D7.C400D12C@Suppgaboly.com...
Bonjour,
Voici un code permettant de gérer jusqu'à 5 lettres.
Méfie-toi, certaines lignes risquent d'être coupées.
Private Sub Permutations()
Dim NbCar As Integer, i As Integer, j As Integer, k As Integer, l As
Integer, m As Integer
Dim Mot As String, Ref1 As Range, Ref2 As String, Ref3 As String, Ref4 As
String
Dim Ref5 As String, Decal As Integer
Set Ref1 = Range("A1")
NbCar = Len(Ref1)
For i = 1 To NbCar
'Ref1 = Range("A1")
For j = 1 To NbCar - 1
Ref2 = Application.WorksheetFunction.Substitute(Ref1,
Mid(Ref1, i, 1), "")
If NbCar = 2 Then
Ref1.Offset(0, Decal) = Mid(Ref1, i, 1) &
Mid(Ref2, j, 1)
Decal = Decal + 1
End If
For k = 1 To NbCar - 2
Ref3 > Application.WorksheetFunction.Substitute(Ref2, Mid(Ref2, j, 1), "")
If NbCar = 3 Then
Ref1.Offset(0, Decal) = Mid(Ref1, i,
1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1)
Decal = Decal + 1
End If
For l = 1 To NbCar - 3
Ref4 > Application.WorksheetFunction.Substitute(Ref3, Mid(Ref3, k, 1), "")
If NbCar = 4 Then
Ref1.Offset(0, Decal) > Mid(Ref1, i, 1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1) & Mid(Ref4,
l, 1)
Decal = Decal + 1
End If
For m = 1 To NbCar - 4
Ref5 > Application.WorksheetFunction.Substitute(Ref4, Mid(Ref4, l, 1), "")
If NbCar = 5 Then
Ref1.Offset(0, Decal)
= Mid(Ref1, i, 1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1) &
Mid(Ref4, l, 1) & Mid(Ref5, m, 1)
Decal = Decal + 1
End If
Next m
Next l
Next k
Next j
Next i
End Sub
Attention, le nombre de mots possibles augmente très vite : le nombre
de permutations de n éléments pris dans un ensemble de n correspond
à Factorielle(n), soit 24 pour 4 lettres, 120 pour 5 lettres, ...
40 320 pour 8 lettres, 3 628 800 pour 10 lettres, ...
Je me suis arrêté à 5 car au-delà, Excel n'offre pas assez de coloones
toutes les variantes.
NB - Dans l'exemple, les mots apparaissent sur la ligne A. Pour les avoir
en colonne 1, il faut remplacer les occurrences de
Ref1.Offset(0, Decal) > >
par
Ref1.Offset(Decal) > >
Moyennant adaptation, cela permettrait d'aller jusqu'à 8 lettres.
En pratique le nombre de permutations est + faible, car dès qu'1 lettre
(ou +) apparaît plus d'1 fois dans le mot, cela entraîne des doublons.
Ce n'est pas géré ici.
Bonjour à toutes et tous
J'ai dans une cellule A1 un mot ex : bon
je souhaite qu'en A2 j'ai automatiquement "nob" puis en A3 "onb" ect.
En fait, il s'agit de saisir un mot en A1, puis avoir dans les cellules
suivantes en A toutes les combinaisons possibles du mot.
Merci beaucoup
Vince
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Merci Michel,
Cela me convient très bien.
Vince
"Michel Gaboly" a écrit dans le message de
news:Bonjour,
Voici un code permettant de gérer jusqu'à 5 lettres.
Méfie-toi, certaines lignes risquent d'être coupées.
Private Sub Permutations()
Dim NbCar As Integer, i As Integer, j As Integer, k As Integer, l As
Integer, m As IntegerDim Mot As String, Ref1 As Range, Ref2 As String, Ref3 As String, Ref4 As
StringDim Ref5 As String, Decal As Integer
Set Ref1 = Range("A1")
NbCar = Len(Ref1)
For i = 1 To NbCar
'Ref1 = Range("A1")
For j = 1 To NbCar - 1
Ref2 = Application.WorksheetFunction.Substitute(Ref1,
Mid(Ref1, i, 1), "")If NbCar = 2 Then
Ref1.Offset(0, Decal) = Mid(Ref1, i, 1) &
Mid(Ref2, j, 1)Decal = Decal + 1
End If
For k = 1 To NbCar - 2
Ref3 > Application.WorksheetFunction.Substitute(Ref2, Mid(Ref2, j, 1), "")
If NbCar = 3 Then
Ref1.Offset(0, Decal) = Mid(Ref1, i,
1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1)Decal = Decal + 1
End If
For l = 1 To NbCar - 3
Ref4 > Application.WorksheetFunction.Substitute(Ref3, Mid(Ref3, k, 1), "")
If NbCar = 4 Then
Ref1.Offset(0, Decal) > Mid(Ref1, i, 1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1) & Mid(Ref4,
l, 1)
Decal = Decal + 1
End If
For m = 1 To NbCar - 4
Ref5 > Application.WorksheetFunction.Substitute(Ref4, Mid(Ref4, l, 1), "")
If NbCar = 5 Then
Ref1.Offset(0, Decal)
= Mid(Ref1, i, 1) & Mid(Ref2, j, 1) & Mid(Ref3, k, 1) &Mid(Ref4, l, 1) & Mid(Ref5, m, 1)
Decal = Decal + 1
End If
Next m
Next l
Next k
Next j
Next i
End Sub
Attention, le nombre de mots possibles augmente très vite : le nombre
de permutations de n éléments pris dans un ensemble de n correspond
à Factorielle(n), soit 24 pour 4 lettres, 120 pour 5 lettres, ...
40 320 pour 8 lettres, 3 628 800 pour 10 lettres, ...
Je me suis arrêté à 5 car au-delà, Excel n'offre pas assez de coloones
toutes les variantes.
NB - Dans l'exemple, les mots apparaissent sur la ligne A. Pour les avoir
en colonne 1, il faut remplacer les occurrences de
Ref1.Offset(0, Decal) > >
par
Ref1.Offset(Decal) > >
Moyennant adaptation, cela permettrait d'aller jusqu'à 8 lettres.
En pratique le nombre de permutations est + faible, car dès qu'1 lettre
(ou +) apparaît plus d'1 fois dans le mot, cela entraîne des doublons.
Ce n'est pas géré ici.Bonjour à toutes et tous
J'ai dans une cellule A1 un mot ex : bon
je souhaite qu'en A2 j'ai automatiquement "nob" puis en A3 "onb" ect.
En fait, il s'agit de saisir un mot en A1, puis avoir dans les cellules
suivantes en A toutes les combinaisons possibles du mot.
Merci beaucoup
Vince
--
Cordialement,
Michel Gaboly
http://www.gaboly.com