Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

mot de passe alphanumérique

  • Initiateur de la discussion Initiateur de la discussion sri75
  • Date de début Date de début

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 !

sri75

XLDnaute Occasionnel
Bonjour, je voudrais adapter une macro pour créér une liste de 2500 mot de passe aplhanumérique où les lettres sont obligatoirement en majuscules , et le mot de passe composé de chiffres et de lettres. le mot de passe doit avoir 6 caractères.

En fouillant sur le forum j'ai trouvé une macro mais si je lui enlève le minuscules je n'ai plus obligatoirement de mélange chiffres/lettres. Bien évidemment ma liste ne doit pas contenir de doublons.

je mets en fichier joint celui trouvé sur le forum, merci à tous pour votre aide
 

Pièces jointes

Re : mot de passe alphanumérique

bonjour sri75,

voici un essai :
Code:
Dim tabChar(1 To 36) As String, i As Long, myDico As Object, tmpStr As String, tabPwd As Variant, tabStr As Variant
    For i = 1 To 26
        tabChar(i) = Chr(64 + i)
    Next i
    For i = 0 To 9
        tabChar(27 + i) = CStr(i)
    Next i
    
    Set myDico = CreateObject("Scripting.Dictionary")
    On Error Resume Next
    While myDico.Count <> 2500
        tmpStr = ""
        For i = 1 To 6
            tmpStr = tmpStr & tabChar(Int((36 * Rnd) + 1))
        Next i
        myDico.Add tmpStr, tmpStr
    Wend
    On Error GoTo 0
    
    tabStr = myDico.Items
    For i = 1 To myDico.Count
        Range("J" & i) = tabStr(i - 1)
    Next i

a+
 
Re : mot de passe alphanumérique

merci, ca a l'air de bien tourner mais à la fin j'ai toujours 5 codes bizarres

1,39E+10 955584
652567 947902
323897 880863
301373 310632

est on sur qu'il ne peut y avoir de doublons ?

merci d'avance
 
Re : mot de passe alphanumérique

merci, ca a l'air de bien tourner mais à la fin j'ai toujours 5 codes bizarres

1,39E+10 955584
652567 947902
323897 880863
301373 310632

est on sur qu'il ne peut y avoir de doublons ?

merci d'avance

re bonjour,

A propos des 5 codes bizarres, je ne vois pas le problème chez moi.
Sinon, c'est sur qu'il ne peut pas y avoir de doublons.

a+
 
Re : mot de passe alphanumérique

Bonsoir à tous

En complément pour éviter la boucle, on peut modifier le code de mromain ainsi

Code:
Sub motdepasse()
Application.ScreenUpDating=False
Dim tabChar(1 To 36) As String, i As Long, myDico As Object, tmpStr As String, tabPwd As Variant, tabStr As Variant
    For i = 1 To 26
        tabChar(i) = Chr(64 + i)
    Next i
    For i = 0 To 9
        tabChar(27 + i) = CStr(i)
    Next i
    
    Set myDico = CreateObject("Scripting.Dictionary")
    On Error Resume Next
    While myDico.Count <> 2500
        tmpStr = ""
        For i = 1 To 6
            tmpStr = tmpStr & tabChar(Int((36 * Rnd) + 1))
        Next i
        myDico.Add tmpStr, tmpStr
    Wend
    On Error GoTo 0
tabStr = myDico.Items
Range("J1").Resize(myDico.Count) = Application.Transpose(tabStr)
End sub
 
Re : mot de passe alphanumérique

bonjour sri75,
bonjour Staple1600,

J'avais essayé, mais il me manquait le "Transpose" (d'ailleurs, merci! je me souviendrai de cette manip 😉).
C'est tout de même nettement plus rapide.

bonne journée
 
Re : mot de passe alphanumérique

Bonjour et merci de continuer à vous pencher sur cette macro.

Pourriez vous m'expliquer ce que rajoute la fonction transpose qui semble être plus performante ?

je vous en remercie par avance.
 
Re : mot de passe alphanumérique

re bonjour,

c'est l'ensemble de la ligne de code qui est plus performant que la boucle car Excel écrit d'un coup les 2500 mots de passes au lieu de les écrire 1 par 1.
Transpose ne sert qu'à "transposer" le tableau tabStr (ligne d'éléments) en colonne d'éléments.

a+
 
mot de passe numérique

Bonjour et merci pour ces explications, je voudrais modifier ce code afin de n'avoir que des mots de passes numériques de 6 caractères.

j'ai essayé d'enlever les premières lignes de l'alphabet mais je n'obtiens rien de probant
For i = 1 To 26
tabChar(i) = Chr(64 + i)
Next i

j'ai meme une ligne blanche !

Merci à tous pour vos conseils
 
Re : mot de passe alphanumérique

bonjour sri75,

il faut aussi modifier cette ligne :
Code:
Dim tabChar(1 To [B]10[/B]) As String, ...
a+

edit:

et cette ligne aussi :
Code:
            tmpStr = tmpStr & tabChar(Int((10 * Rnd) + 1))
 
Dernière édition:
Re : mot de passe alphanumérique

merci , après la modif j'ai une erreur vba sur ce tabChar, je pense qu'il doit falloir tous les modifier !

tabChar(27 + i) = CStr(i)


Sub motdepasse()


Range("B1").Select


Range("A2").Select
Selection.End(xlDown).Select

lig = ActiveCell.Row


Dim tabChar(1 To 10) As String, i As Long, myDico As Object, tmpStr As String, tabPwd As Variant, tabStr As Variant
'
For i = 0 To 9

la aussi avec 10 ca plante !

tabChar(10 + i) = CStr(i)
Next i

Set myDico = CreateObject("Scripting.Dictionary")
On Error Resume Next
While myDico.Count <> lig
tmpStr = ""
For i = 1 To 6
tmpStr = tmpStr & tabChar(Int((36 * Rnd) + 1))
Next i
myDico.Add tmpStr, tmpStr
Wend
On Error GoTo 0

tabStr = myDico.Items
For i = 2 To myDico.Count
Range("B" & i) = tabStr(i - 1)
Next i

End Sub
 
Dernière édition:
Re : mot de passe alphanumérique

voici le code modifié :
Code:
Sub motdepasse()
Application.ScreenUpdating = False
Dim tabChar(1 To 10) As String, i As Long, myDico As Object, tmpStr As String, tabPwd As Variant, tabStr As Variant
    For i = 0 To 9
        tabChar(1 + i) = CStr(i)
    Next i
    
    Set myDico = CreateObject("Scripting.Dictionary")
    While myDico.Count <> 2500
        tmpStr = ""
        For i = 1 To 6
            tmpStr = tmpStr & tabChar(Int((10 * Rnd) + 1))
        Next i
        On Error Resume Next: myDico.Add tmpStr, tmpStr: On Error GoTo 0
    Wend
tabStr = myDico.Items
Range("J1").Resize(myDico.Count) = Application.Transpose(tabStr)
End Sub

a+
 
Re : mot de passe alphanumérique

Merci beaucoup, cerise sur le gateau serait il possible de ne pas avoir de 0 au début du code ?

c'est très sympa de vous pencher sur ce problème, encore merci !
 
Re : mot de passe alphanumérique

et voila :
Code:
Sub motdepasse()
Application.ScreenUpdating = False
Dim tabChar(1 To 10) As String, i As Long, myDico As Object, tmpStr As String, tabPwd As Variant, tabStr As Variant
    For i = 0 To 9
        tabChar(1 + i) = CStr(i)
    Next i
    
    Set myDico = CreateObject("Scripting.Dictionary")
    While myDico.Count <> 2500
        tmpStr = ""
        While Len(tmpStr) <> 6
            tmpStr = tmpStr & tabChar(Int((10 * Rnd) + 1))
            If tmpStr = "0" Then tmpStr = ""
        Wend
        On Error Resume Next: myDico.Add tmpStr, tmpStr: On Error GoTo 0
    Wend
tabStr = myDico.Items
Range("J1").Resize(myDico.Count) = Application.Transpose(tabStr)
End Sub

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

Discussions similaires

Réponses
5
Affichages
913
Compte Supprimé 979
C
Réponses
6
Affichages
796
D
Réponses
8
Affichages
2 K
dalisoon
D
C
Réponses
4
Affichages
792
C-LAKATA
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…